首页 > 编程语言 > 详细

XML语言2.约束

时间:2019-04-20 13:32:30      阅读:161      评论:0      收藏:0      [点我收藏+]

三、XML的约束

目的:编写一个文件用来约束另一个xml文件的书写规范。

  1. DTD

    用来约束xml的文件格式,保证这个文件是有效的。

    内部DTD:所有的约束都是直接定义在xml文件中的

内部的 DOCTYPE 声明的格式

????<!DOCTYPE 根元素 [元素声明]>

声明一个元素:

????<!ELEMENT 元素名称 类别>或<!ELEMENT 元素名称 (元素内容)>

类别:

空元素???? <!ELEMENT 元素名称 EMPTY>

任意内容的元素 <!ELEMENT 元素名称 ANY>

元素内容:

????只有 PCDATA 的元素????????????<!ELEMENT 元素名称 (#PCDATE)>

????带有子元素(序列)的元素????<!ELEMENT 元素名称 (子元素名称 1,子元素名称 2,.....)>

????声明只出现一次的元素????????<!ELEMENT 元素名称 (子元素名称)>

????声明最少出现一次的元素????????<!ELEMENT 元素名称 (子元素名称+)>

????声明出现零次或多次的元素????<!ELEMENT 元素名称 (子元素名称*)>

????声明出现零次或一次的元素????<!ELEMENT 元素名称 (子元素名称?)

声明一个属性:

????<!ATTLIST 元素名称 属性名称 属性类型 默认值>

属性类型选项:

????

类型????????描述

CDATA????????值为字符数据 (character data)

(en1|en2|..)????此值是枚举列表中的一个值

ID????????????值为唯一的 id

IDREF????????值为另外一个元素的 id

IDREFS????????值为其他 id 的列表

NMTOKEN????值为合法的 XML 名称

NMTOKENS????值为合法的 XML 名称的列表

ENTITY????????值是一个实体

ENTITIES????????值是一个实体列表

NOTATION????此值是符号的名称

xml:????????????值是一个预定义的 XML 值

?

默认值参数:

?

?

值????????????解释

值????????????属性的默认值

#REQUIRED????属性值是必需的

#IMPLIED????属性不是必需的

#FIXED value????属性值是固定的

外部文档声明:

????引用本地文件:

????<!DOCTYPE 根元素 SYSTEM "文件名">

????引用在线文件:

????<!DOCTYPE 根元素 PUBLIC "dtd名称" "文件地址" >

2.Schema

XML Schema 的作用是定义 XML 文档的合法构建模块,类似 DTD。

<schema> 元素是每一个 XML Schema 的根元素。

XSD简易元素

????定义简易元素:

<xs:element name="xxx" type="yyy"/>

此处 xxx 指元素的名称,yyy 指元素的数据类型。XML Schema 拥有很多内建的数据类型。

常用类型有:

????xs:string

xs:decimal

xs:integer

xs:boolean

xs:date

xs:time

例如:

<xs:element name="lastname" type="xs:string"/>

<xs:element name="age" type="xs:integer"/>

<xs:element name="dateborn" type="xs:date"/>

简易元素的默认值:

<xs:element name="color" type="xs:string" default="red"/>

简易元素的固定值:

<xs:element name="color" type="xs:string" fixed="red"/>

简易元素无法拥有属性。

XSD属性:

????格式:

<xs:attribute name="xxx" type="yyy"/>

在此处,xxx 指属性名称,yyy 则规定属性的数据类型。XML Schema 拥有很多内建的数据类型。

常用类型有:

????xs:string

xs:decimal

xs:integer

xs:boolean

xs:date

xs:time

例如:

对应的属性定义

<xs:element name="lastname" type="xs:string"/>

<xs:attribute name="lang" type="xs:string"/>

带有属性的xml元素:

<lastname lang="en">Smith<lastname>

属性的默认值:

<xs:attribute name="lang" type="xs:string" default="EN"/>

属性的固定值:

<xs:attribute name="lang" type="xs:string" fixed="EN"/>

可选和必需的属性:

在缺省的情况下,属性是可选的。如需规定属性为必选,请使用 "use" 属性:

<xs:attribute name="lang" type="xs:string" use="required"/>

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>

数据类型的限定:

?

限定????描述

enumeration????定义可接受值的一个列表

fractionDigits????定义所允许的最大的小数位数。必须大于等于0。

length????????定义所允许的字符或者列表项目的精确数目。必须大于或等于0。

maxExclusive????定义数值的上限。所允许的值必须小于此值。

maxInclusive????定义数值的上限。所允许的值必须小于或等于此值。

maxLength????定义所允许的字符或者列表项目的最大数目。必须大于或等于0。

minExclusive????定义数值的下限。所允许的值必需大于此值。

minInclusive????定义数值的下限。所允许的值必需大于或等于此值。

minLength????定义所允许的字符或者列表项目的最小数目。必须大于或等于0。

pattern????????定义可接受的字符的精确序列。

totalDigits????定义所允许的阿拉伯数字的精确位数。必须大于0。

whiteSpace????定义空白字符(换行、回车、空格以及制表符)的处理方式。

xml复合类型指示器:

order指示器:用于定义元素顺序

  1. <all> 指示器规定子元素可以按照任意顺序出现,且每个子元素必须只出现一次
  2. <sequence> 规定子元素必须按照特定的顺序出现
  3. <choice> 指示器规定可出现某个子元素或者可出现另外一个子元素(非此即彼)

Occurrence指示器:Occurrence 指示器用于定义某个元素出现的频率。

  1. <maxOccurs> 指示器可规定某个元素可出现的最大次数
  2. <minOccurs> 指示器可规定某个元素能够出现的最小次数

Group指示器:Group 指示器用于定义相关的数批元素。

  1. 元素组通过 group 声明进行定义
  2. 属性组通过 attributeGroup 声明来进行定义

XML语言2.约束

原文:https://www.cnblogs.com/bing-08/p/10740643.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!