【XML之DTD约束】

本文介绍了DTD(文档类型定义),它是程序间数据交换的标记符语法规则,有优点也有缺点。还阐述了合法XML的要求,以及DTD对元素和属性的限制。此外,初步认识了XML Schema,它是基于XML的DTD替代者,更强大且支持数据类型,还介绍了XSD简易元素、属性和限定等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

|ू・ω・` )
DTD的概念:DTD为英文Document Type Definition,中文意思为“文档类型定义
是一套为了进行程序间的数据交换而建立的关于标记符的语法规则
优点:

  1. 通过它,您的每一个 XML 文件均可携带一个有关其自身格式的描述。
  2. 通过它,独立的团体可一致地使用某个标准的文档类型定义来交换数据。
  3. 您还可以使用它来验证您自身的数据。

也有点缺点:

  1. DTD有自己的特殊语法,其本身不是XML文档;
  2. DTD只提供了有限的数据类型,用户无法自定义类型;
  3. DTD不支持域名机制。

总的来说就是一种文档约束;


合法的XML

XML是必须要合法的才能平稳运行哦

  1. 有且只有一个根元素
  2. XML标签大小写正确区分
  3. 正确使用结束标签
  4. 正确嵌套标签
  5. 使用了合法的标签名
  6. 定义有效的属性

如下:
在这里插入图片描述
这就是一个完整的XML

DTD对元素限制

如何对DTD进行一个元素限制:(也就是文档限制)

 <!ELEMENT element-name (type)>

在这里插入图片描述
为了方便理解,有如下图
在这里插入图片描述

DTD对属性限制

属性限制:是对<person pid="p1" sex="男" qq="aaa" parent="p2">
的 Pid ,Sex ,Qq ,Parent 作一个限制

在这里插入图片描述
一些限制语法:
在这里插入图片描述

XML Schema的初识

什么是XML Schema?

  1. 是基于 XML 的 DTD 替代者。
  2. 可描述 XML 文档的结构。
  3. 语言也可作为 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♪(・ω・)ノ谢谢大家的参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值