前言
|ू・ω・` )
DTD的概念:DTD为英文Document Type Definition,中文意思为“文档类型定义”
是一套为了进行程序间的数据交换而建立的关于标记符的语法规则
优点:
- 通过它,您的每一个 XML 文件均可携带一个有关其自身格式的描述。
- 通过它,独立的团体可一致地使用某个标准的文档类型定义来交换数据。
- 您还可以使用它来验证您自身的数据。
也有点缺点:
- DTD有自己的特殊语法,其本身不是XML文档;
- DTD只提供了有限的数据类型,用户无法自定义类型;
- DTD不支持域名机制。
总的来说就是一种文档约束;
合法的XML
XML是必须要合法的才能平稳运行哦
- 有且只有一个根元素
- XML标签大小写正确区分
- 正确使用结束标签
- 正确嵌套标签
- 使用了合法的标签名
- 定义有效的属性
如下:
这就是一个完整的XML
DTD对元素限制
如何对DTD进行一个元素限制:(也就是文档限制)
<!ELEMENT element-name (type)>
为了方便理解,有如下图
DTD对属性限制
属性限制:是对<person pid="p1" sex="男" qq="aaa" parent="p2">
的 Pid ,Sex ,Qq ,Parent 作一个限制
一些限制语法:
XML Schema的初识
什么是XML Schema?
- 是基于 XML 的 DTD 替代者。
- 可描述 XML 文档的结构。
- 语言也可作为 XSD(XML Schema Definition)来引用。
其实相对而言:XML Schema 要比 DTD 更强大
而最重要的能力之一就是对数据类型的支持
XSD 简易元素
简易元素:指那些只包含文本的元素。它不会包含任何其他的元素或属性。
语法:
<xs:element name="xxx" type="yyy"/>
xxx 指元素的名称,yyy 指元素的数据类型
在 XML Schema中的数据类型有:
- xs:string
- xs:decimal
- xs:integer
- xs:boolean
- xs:date
- xs:time
比如:
XML 元素:
<name>"aa"</name>
<age>28</age>
定义:
<xs:element name="name" type="xs:string"/>
<xs:element name="age" type="xs:integer"/>
XSD 属性
概念:所有的属性均作为简易类型来声明。
!!!注意:简易元素无法拥有属性。假如某个元素拥有属性,它就会被当作某种复合类型
定义属性的语法:
<xs:attribute name="xxx" type="yyy"/>
比如:
XML 元素:
<name lang="EN">Smith</name>
定义:
<xs:attribute name="lang" type="xs:string"/>
XSD 限定 / Facets
概念:限定(restriction)用于为 XML 元素或者属性定义可接受的值。对 XML 元素的限定被称为 facet。
限定就暂时就讲 :对一个值的限定 和 对一组值得限定
对一个值的限定:
下面的例子定义了带有一个限定且名为 “age” 的元素。age 的值不能低于 0 或者高于 120:
<xs:element name="age">
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:minInclusive value="0"/>
<xs:maxInclusive value="120"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
对一组值得限定:
下面的例子定义了带有一个限定的名为 “car” 的元素。可接受的值只有:a, b c:
<xs:element name="car">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="a"/>
<xs:enumeration value="b"/>
<xs:enumeration value="c"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
好的
Thanks♪(・ω・)ノ谢谢大家的参考