XML元素限制
DTD (Document Type Definition):文檔類型定義
DTD作用:可以通過 DTD 驗(yàn)證的XML是"合法"的 XML。
DTD語法格式
1. DTD元素限制
關(guān)鍵字:ELEMENT
語法格式:<!ELEMENT element-name (child-name)>
<!ELEMENT C (ssh)> <!--此處指定在C節(jié)點(diǎn)下必須存在ssh元素節(jié)點(diǎn)且只能出現(xiàn)一次-->
<!ELEMENT C (ssh+)> <!--此處指定在C節(jié)點(diǎn)下必須存在ssh元素節(jié)點(diǎn)且至少出現(xiàn)一次-->
<!ELEMENT C (ssh*)> <!--此處指定在C節(jié)點(diǎn)下可存在ssh元素節(jié)點(diǎn)出現(xiàn)任意次數(shù)(包含0次)-->
<!ELEMENT C (ssh?)> <!--此處指定在C節(jié)點(diǎn)下ssh元素節(jié)點(diǎn)不出現(xiàn)或者只出現(xiàn)一次-->
<!ELEMENT C (ssh|telnet)> <!--此處指定在C節(jié)點(diǎn)下必定出現(xiàn)其中(ssh或telnet元素)-->
<!ELEMENT C (ssh,telnet)> <!--此處指定在C節(jié)點(diǎn)下必定先出現(xiàn)ssh元素一次,再出現(xiàn)telnet元素一次-->
<!ELEMENT C (#PCDATA)> <!--此處指定在C節(jié)點(diǎn)下輸入字符數(shù)據(jù)->
| 符號 | 含義 |
|---|---|
| PCDATA | 被解析器解析的文本。這些文本將被解析器檢查實(shí)體以及標(biāo)記對于實(shí)體字符需要進(jìn)行替換 |
| CDATA | C不會(huì)被解析器解析的文本。在這些文本中的標(biāo)簽不會(huì)被當(dāng)作標(biāo)記來對待,其中的實(shí)體也不會(huì)被展開。 |
| + | 出現(xiàn)一次或多次 |
| * | 出現(xiàn)任意次數(shù) |
| ? | 出現(xiàn)一次或不出現(xiàn) |
| , | 指定出現(xiàn)順序 |
參考資料:DTD 元素
2. DTD屬性限制
關(guān)鍵字:ATTLIST
語法格式:<!ATTLIST element-name attribute-name attribute-type attribute-value>
<!ATTLIST C type CDATA "NTFS"><!---DTD限制(group1):NTFS是默認(rèn)值,type屬性未賦值時(shí)填入-->
<C type="" /> </C><!---XML符合(group1)-->
<C type="FAT32" /> </C><!---XML符合(group1)-->
<!ATTLIST C type CDATA #REQUIRED><!---DTD限制(group2):type屬性必須賦值-->
<C type="" /> </C><!---XML不符合(group2)-->
<C type="FAT32" /> </C><!---XML符合(group2)-->
<!ATTLIST C type CDATA #IMPLIED><!---DTD限制(group3):type屬性可選-->
<C type="" /> </C><!---XML符合(group3)-->
<C type="FAT32" /> </C><!---XML符合(group3)-->
<C size="52GB" /> </C><!---XML符合(group3)-->
<!ATTLIST C type CDATA #FIXED "NTFS"> <!---DTD限制(group4):type屬性擁有固定的值,并不允許修改-->
<C type="FAT32" /> </C><!---XML不符合(group4)-->
<C type="NTFS" /> </C><!---XML符合(group4)-->
<!ATTLIST C type (NTFS|FAT16|FAT32) "NTFS"> <!---DTD限制(group5):type屬性枚舉值,默認(rèn)為NTFS-->
<C type="" /> </C><!---XML不符合(group5)-->
<C type="FAT32" /> </C><!---XML符合(group5)-->
<C type="NTFS" /> </C><!---XML符合(group5)-->
| 符號 | 含義 |
|---|---|
| CDATA | 值為字符數(shù)據(jù) |
| (value1|value2|value3....) | 此值是枚舉列表中的一個(gè)值 |
| ID | 值為唯一的 id |
| IDREF | 值為另外一個(gè)元素的 id |
| ENTITY | 值是一個(gè)實(shí)體 |
| ENTITIES | 值是一個(gè)實(shí)體列表 |
| xml: | 值是一個(gè)預(yù)定義的 XML 值 |
參考資料:DTD 屬性
第一篇:XML簡介(1)--頭部聲明
第二篇:XML編寫(2)--語法要求
第四篇:XML引用(4)--DTD應(yīng)用
第五篇:XXE基礎(chǔ)(1)--實(shí)體類別
第六篇:XXE利用(2)--漏洞實(shí)現(xiàn)
第七篇:XXE后記(3)--拋磚引玉