DTD詳解
基本概述
文檔類型定義(Document Type Definition)是一套為了進行程式間的資料交換而建立的關於標記符的語法規則。它是標準通用標記語言(SGML)和可擴展標記語言(XML)1.0版規格的一部分,文件可根據某種DTD語法規則驗證格式是否符合此規則。文檔類型定義也可用做保證標準通用標記語言、可擴展標記語言文檔格式的合法性,可透過比較文檔和文檔類型定義文件來檢查文檔是否符合規範,元素和標籤使用是否正確。檔案實例提供應用程式一個資料交換的格式。
PS:簡而言之,DTD就是用來約束XML文檔的,使其在一定的規範下使用,除了DTD技術外,還有Schema技術,也是用於約束XML文檔的。
參考文件:DTD http://www.php.cn/
參考文件: Schema http://www.php.cn/
DTD原理圖
PS:透過DTD約束,XML就能在DTD的限制下進行自訂了,不過DTD有個缺點,那就是不能對資料進行數值約束這種範圍約束。
DTD文件的聲明及引用
內部DTD文件
根元素 [定義內容]>
外部DTD文件
根元素 SYSTEM "DTD 檔案路徑">
內部外部DTD文件結合
根元素 SYSTEM "DTD檔案路徑" [
定義內容
]>
注意事項:
1、定義關鍵字一定要大寫,例如: DOCTYPE*&*、ELEMENT、ATTLIST。
2、
當引用的文件在本地時,採用以下方式:文檔根結點 SYSTEM "DTD檔案的URL">
例如: 書架 SYSTEM 「book. dtd”>
當引用的文件是一個公共的文件時,採用以下方式:
文檔根結點 PUBLIC "DTD名稱" "DTD檔案的URL">
例如:web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
DTD元素
基本語法
解釋:
ELEMENT:關鍵字(必須大寫)。
NAME:元素名稱。
CONTENT:元素類型,有四種,都必須大寫。
1、EMPTY-此元素不能包含子元素和文本,但可以有屬性(空元素)
2、ANY-此元素可包含任何在DTD中定義的元素內容
3、#PCDATA-可以包含任何字元數據,但是不能在其中包含任何子元素
4、其它類型(組合),可以是子元素,子元素與修飾符組合,基本元素與子元素與修飾符組合。
案例:
班級 (學生+,作者)>
學生 (名字,年齡,介紹)>
< ;!ELEMENT 作者 (#PCDATA)>
名字 (#PCDATA)>
年齡 (#PCDATA)>
介紹 (#PCDATA)>
修飾符
符號 |
用途 |
範例 |
範例說明 |
( ) |
用來將元素分組 |
(古龍|金庸|梁羽生),(王朔|餘傑) |
分成兩組 |
| | 在列出的物件中選擇一個 |
(男人|女人) |
表示男人或女人必須出現,而且只能選一個 |
+ |
該物件最少出現一次,可以出現多次 (1或多次) | (成員+) |
表示成員必須出現,且可以出現多個成員 |
* |
該物件允許出現零次到任意多次(0 到多次) |
(嗜好*) | 嗜好可以出現零次到多次 |
? |
該物件可以出現,但只能出現一次 (0到1次) |
(菜鳥?) |
菜鳥可以出現,也可以不出現,如果出現的話,最多只能出現一次 |
, |
物件必須依照指定的順序出現 |
(西瓜,蘋果,香蕉) |
表示西瓜、蘋果、香蕉必須出現,並且依照這個順序出現 |
DTD屬性
基本語法
元素名稱
屬性名稱 類型 屬性特性
屬性名稱 類型 屬性特性…...
>
解釋:
ATTLIST:屬性列表,(必須大寫)。
元素名稱:對應的元素的名稱。
屬性:屬性能夠有多個,其格式是名稱 類型 屬性特性
類型:
PS:常用的有CDATA(字符型),枚舉(枚舉格式是(值1| 值2|值3...)),ID(ID 不能重複,不能以數字開頭),IDREF(引用另一個ID值),IDREFS(可以引用多個ID值,以空格隔開)
屬性特性有:
案例:
<!ELEMENT 班级 (学生+,作者)> <!ATTLIST 班级 班次 CDATA "1班" 编号 ID #REQUIRED > <!ELEMENT 学生 (名字,年龄,介绍)> <!ELEMENT 作者 (#PCDATA)> <!ATTLIST 学生 地址 CDATA #IMPLIED 授课方式 CDATA #FIXED "面授" 学号 ID #REQUIRED 班级编号 IDREF #REQUIRED 朋友 IDREFS #IMPLIED > <!ELEMENT 名字 (#PCDATA)> <!ELEMENT 年龄 (#PCDATA)> <!ELEMENT 介绍 (#PCDATA)>
實體
實體有引用實體和參數實體兩種,引用實體一般是在XML使用,參數實體一般是在DTD中使用。
基本語法
實體名稱 「實體內容」 > // 引用實體
實體名稱 "實體內容" > // 參數實體
解釋:
1、引用實體可以在引用了DTD的XML檔案中,使用&實體名稱;來使用實體內容。
2、不知道是不是我的電腦原因,外部DTD中不能用引用實體,如果用將引用實體定義放在內部DTD中,則可使用。
3、參數實體在DTD中使用,使用%實體名稱;使用
4、可以将那些重复使用的值定义成实体,这样能减少代码的冗余度。
5、在外部DTD中,引用实体最好放在DTD底部,参数实体最好放在DTD顶部。
案例:
<!ENTITY % sex "男|女"> <!ELEMENT 班级 (学生+,作者)> <!ELEMENT 学生 (名字,年龄,介绍)> <!ELEMENT 作者 (#PCDATA)> <!ATTLIST 学生 性别 (%sex;) #REQUIRED > <!ELEMENT 名字 (#PCDATA)> <!ELEMENT 年龄 (#PCDATA)> <!ELEMENT 介绍 (#PCDATA)> <!ENTITY writer "Switch">
综合案例1:
XML3.dtd
<!ENTITY % sex "男|女"> <!ELEMENT 班级 (学生+,作者)> <!ATTLIST 班级 班次 CDATA "1班" 编号 ID #REQUIRED > <!ELEMENT 学生 (名字,年龄,介绍)> <!ELEMENT 作者 (#PCDATA)> <!ATTLIST 学生 地址 CDATA #IMPLIED 授课方式 CDATA #FIXED "面授" 学号 ID #REQUIRED 班级编号 IDREF #REQUIRED 朋友 IDREFS #IMPLIED 性别 (%sex;) #REQUIRED > <!ELEMENT 名字 (#PCDATA)> <!ELEMENT 年龄 (#PCDATA)> <!ELEMENT 介绍 (#PCDATA)>
XML3.xml
<?xml version="1.0" encoding="UTF-8"?> <!-- 引入DTD --> <!DOCTYPE 班级 SYSTEM "XML3.dtd" [<!ENTITY writer "Switch">]> <班级 编号="C1" 班次="1班"> <学生 地址="湖南" 授课方式="面授" 学号="n1" 班级编号="C1" 朋友="n2" 性别="男"> <名字>张三</名字> <年龄>20</年龄> <介绍>不错</介绍> </学生> <学生 授课方式="面授" 学号="n2" 班级编号="C1" 朋友="n1 n3" 性别="女"> <名字>李四</名字> <年龄>18</年龄> <介绍>很好</介绍> </学生> <学生 授课方式="面授" 学号="n3" 班级编号="C1" 朋友="n2" 性别="男"> <名字>王五</名字> <年龄>22</年龄> <介绍>非常好</介绍> </学生> <作者>&writer;</作者> </班级>
综合案例2:
XML4.dtd
<!ENTITY AUTHOR "John Doe"> <!ENTITY COMPANY "JD Power Tools, Inc."> <!ENTITY EMAIL "jd@jd-tools.com"> <!ELEMENT CATALOG (PRODUCT+)> <!ELEMENT PRODUCT (SPECIFICATIONS+,OPTIONS?,PRICE+,NOTES?)> <!ATTLIST PRODUCT NAME CDATA #IMPLIED CATEGORY (HandTool|Table|Shop-Professional) "HandTool" PARTNUM CDATA #IMPLIED PLANT (Pittsburgh|Milwaukee|Chicago) "Chicago" INVENTORY (InStock|Backordered|Discontinued) "InStock"> <!ELEMENT SPECIFICATIONS (#PCDATA)> <!ATTLIST SPECIFICATIONS WEIGHT CDATA #IMPLIED POWER CDATA #IMPLIED> <!ELEMENT OPTIONS (#PCDATA)> <!ATTLIST OPTIONS FINISH (Metal|Polished|Matte) "Matte" ADAPTER (Included|Optional|NotApplicable) "Included" CASE (HardShell|Soft|NotApplicable) "HardShell"> <!ELEMENT PRICE (#PCDATA)> <!ATTLIST PRICE MSRP CDATA #IMPLIED WHOLESALE CDATA #IMPLIED STREET CDATA #IMPLIED SHIPPING CDATA #IMPLIED> <!ELEMENT NOTES (#PCDATA)>
XML4.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE CATALOG SYSTEM "XML4.dtd"> <CATALOG> <PRODUCT NAME="C'estbon" CATEGORY="Shop-Professional" INVENTORY="Backordered" PARTNUM="10" PLANT="Chicago"> <SPECIFICATIONS POWER="0" WEIGHT="555ml">SPECIFICATIONS</SPECIFICATIONS> <OPTIONS>OPTIONS</OPTIONS> <PRICE>2</PRICE> <NOTES>NOTES</NOTES> </PRODUCT> </CATALOG>
以上就是DTD详解的内容,更多相关内容请关注PHP中文网(www.php.cn)!

RSS文檔是基於XML的結構化文件,用於發布和訂閱頻繁更新的內容。它的主要作用包括:1)自動化內容更新,2)內容聚合,3)提高瀏覽效率。通過RSSfeed,用戶可以訂閱並及時獲取來自不同來源的最新信息。

RSS的XML結構包括:1.XML聲明和RSS版本,2.頻道(Channel),3.條目(Item)。這些部分構成了RSS文件的基礎,允許用戶通過解析XML數據來獲取和處理內容信息。

RSSFEEDSUSEXMLTOSYNDICATECONTENT; PARSINGTHEMINVOLVESLOADINGINGINGINGINSSTRUCTURE,andExtractingData.ApplicationsIncludeBuildBuildingNewSagGregatorSaterNewSagGregatorSator andTrackingPodcastepodcastepisodes。

RSS文檔的工作原理是通過XML文件發佈內容更新,用戶通過RSS閱讀器訂閱並接收通知。 1.內容髮布者創建並更新RSS文檔。 2.RSS閱讀器定期訪問並解析XML文件。 3.用戶瀏覽和閱讀更新內容。使用示例:訂閱TechCrunch的RSS源,只需複制鏈接到RSS閱讀器中即可。

使用XML構建RSSfeed的步驟如下:1.創建根元素並設置版本;2.添加channel元素及其基本信息;3.添加條目(item)元素,包括標題、鏈接和描述;4.轉換XML結構為字符串並輸出。通過這些步驟,你可以從零開始創建一個有效的RSSfeed,並通過添加額外的元素如發布日期和作者信息來增強其功能。

創建RSS文檔的步驟如下:1.使用XML格式編寫,根元素為,包含元素。 2.在內添加、、等元素描述頻道信息。 3.添加元素,每個代表一個內容條目,包含、、、等。 4.可選地添加和元素,豐富內容。 5.確保XML格式正確,使用在線工具驗證,優化性能並保持內容更新。

XML在RSS中的核心作用是提供一種標準化和靈活的數據格式。 1.XML的結構和標記語言特性使其適合數據交換和存儲。 2.RSS利用XML創建標準化格式,方便內容共享。 3.XML在RSS中的應用包括定義feed內容的元素,如標題和發布日期。 4.優勢包括標準化和可擴展性,挑戰包括文件冗長和嚴格語法要求。 5.最佳實踐包括驗證XML有效性、保持簡潔、使用CDATA和定期更新。

rssfeedsarexmldocuments usedforcontentAggregation and distribution.totransformthemintoreadableContent:1)parsethethexmlusinglibrarieslibrariesliblarieslikeparserinparserinpython.2)andledifferentifferentrssssssssssssssssssssssssssssssssssssssssssssssersions andpotentionparsingrorS.3)


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境