XML规范(3)--DTD限制

2020-03-26  本文已影响0人  六亲不认的步伐

XML元素限制

DTD (Document Type Definition):文档类型定义
DTD作用:可以通过 DTD 验证的XML是"合法"的 XML。


DTD语法格式

1. DTD元素限制

关键字:ELEMENT
语法格式:<!ELEMENT element-name (child-name)>

<!ELEMENT C (ssh)>   <!--此处指定在C节点下必须存在ssh元素节点且只能出现一次-->
<!ELEMENT C (ssh+)>  <!--此处指定在C节点下必须存在ssh元素节点且至少出现一次-->
<!ELEMENT C (ssh*)>  <!--此处指定在C节点下可存在ssh元素节点出现任意次数(包含0次)-->
<!ELEMENT C (ssh?)>  <!--此处指定在C节点下ssh元素节点不出现或者只出现一次-->
<!ELEMENT C (ssh|telnet)>  <!--此处指定在C节点下必定出现其中(ssh或telnet元素)-->
<!ELEMENT C (ssh,telnet)>  <!--此处指定在C节点下必定先出现ssh元素一次,再出现telnet元素一次-->
<!ELEMENT C (#PCDATA)> <!--此处指定在C节点下输入字符数据->
符号 含义
PCDATA 被解析器解析的文本。这些文本将被解析器检查实体以及标记对于实体字符需要进行替换
CDATA C不会被解析器解析的文本。在这些文本中的标签不会被当作标记来对待,其中的实体也不会被展开。
+ 出现一次或多次
* 出现任意次数
? 出现一次或不出现
, 指定出现顺序

参考资料:DTD 元素

2. DTD属性限制

关键字:ATTLIST
语法格式:<!ATTLIST element-name attribute-name attribute-type attribute-value>

<!ATTLIST C type CDATA "NTFS"><!---DTD限制(group1):NTFS是默认值,type属性未赋值时填入--> 
<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属性枚举值,默认为NTFS-->
<C type="" /> </C><!---XML不符合(group5)--> 
<C type="FAT32" /> </C><!---XML符合(group5)--> 
<C type="NTFS" /> </C><!---XML符合(group5)--> 
符号 含义
CDATA 值为字符数据
(value1|value2|value3....) 此值是枚举列表中的一个值
ID 值为唯一的 id
IDREF 值为另外一个元素的 id
ENTITY 值是一个实体
ENTITIES 值是一个实体列表
xml: 值是一个预定义的 XML 值

参考资料:DTD 属性


第一篇:XML简介(1)--头部声明
第二篇:XML编写(2)--语法要求
第四篇:XML引用(4)--DTD应用
第五篇:XXE基础(1)--实体类别
第六篇:XXE利用(2)--漏洞实现
第七篇:XXE后记(3)--抛砖引玉

上一篇 下一篇

猜你喜欢

热点阅读