【XML之DTD约束】

    xiaoxiao2022-07-13  165

    目录

    前言合法的XMLDTD对元素限制DTD对属性限制XML Schema的初识什么是XML Schema?XSD 简易元素XSD 属性XSD 限定 / Facets

    前言

    |ू・ω・` ) 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:stringxs:decimalxs:integerxs:booleanxs:datexs: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♪(・ω・)ノ谢谢大家的参考

    最新回复(0)