xml文档的DTD约束和Schema约束
2017-05-08 10:26
441 查看
在XML技术里,可以编写一个文档来约束一个XML文档的书写规范,这称之为XML约束。XML的约束模式有两种,一种是DTD,还有一种就是Schema。
一、DTD约束(语法简单,功能简单)
二、Schema约束(语法复杂,功能强大)
文档类型定义可被成行地声明于标准通用标记语言、可扩展标记语言文档中,也可作为一个外部引用。
2、外部文档声明
(1)本地文件系统导入
(2)公共的外部导入
更多关于DTD约束内容…
1、XML Schema 是基于 XML 的 DTD 替代者。
2、XML Schema 描述 XML 文档的结构。
3、XML Schema 语言也称作 XML Schema 定义(XML Schema Definition,XSD)。
简单元素指那些仅包含文本的元素。它不会包含任何其他的元素或者属性。(也可以像数据类型添加限定,以此来限制它的内容)
2、xsd 属性
某个元素拥有属性则是复杂的类型。但是属性本身作为简易类型被声明。。
3、xsd限定
1、空元素
2、包含其他元素的元素
3、仅包含文本的元素
4、包含元素和文本的元素
一、DTD约束(语法简单,功能简单)
二、Schema约束(语法复杂,功能强大)
一、DTD约束
文档类型定义(DTD)可定义合法的XML文档构建模块。它使用一系列合b法的元素来定义文档的结构。文档类型定义可被成行地声明于标准通用标记语言、可扩展标记语言文档中,也可作为一个外部引用。
(一)声明
1、内部的 DOCTYPE 声明<!DOCTYPE note[ <!ELEMENT note(heading,body)> <!ELEMENT heading (#PCDATA)> <!ELEMENT body (#PCDATA)> ]> <!-- !ELEMENT note(heading,body) 定义 note 元素有四个元素:heading,、body,并且按照顺序、次数排列。 !ELEMENT heading (#PCDATA) 定义 heading 元素为 "#PCDATA" 类型 !ELEMENT body (#PCDATA) 定义 body 元素为 "#PCDATA" 类型 -->
2、外部文档声明
(1)本地文件系统导入
<!DOCTYPE rootElt SYSTEM "constrain.dtd"> <!-- 格式为: <!DOCTYPE 根元素 SYSTEM "约束文件名"> -->
(2)公共的外部导入
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <!-- 格式为: <!DOCTYPE 根标签 PUBLIC "约束文件url"> -->
(二)DTD-元素
在一个 DTD 中,元素通过元素声明来进行声明。<!ELEMENT rootElt (subElt1+,subElt2*,subElt3?,(subElt4|subElt5))> <!ELEMENT subElt1 EMPTY> <!ELEMENT subElt2 (#PCDATA)> <!ELEMENT subElt2 ANY> <!--下面为合法xml格式--> <rootElt> <subElt1></subElt1> <subElt1></subElt1> <subElt1></subElt1> <subElt3>any</subElt3> <subElt4><grand></grand></subElt4> </rootElt> <!-- 元素约束格式: <!ELEMENT 标签名字 类别> 或者 <!ELEMENT 标签名字 (标签内容)> 类别: 1、空标签: EMPTY 表示标签是空标签 2、普通字符串: (#PCDATA) 表示标签内容一定是普通字符串 3、带有任何内容的标签: ANY 表示标签的可以是任何内容 标签内容: 1、解决子标签出现顺序问题: <!ELEMENT 父元素 (子元素1,子元素2,子元素3)> 那么父元素,必定要包含 子元素1,子元素2,子元素3 ,并且一定要按照该顺序排列 2、解决子标签出现次数问题: <!ELEMENT 父元素 (子元素1+,子元素2*,子元素3?)> 这里除了子元素顺序问题。还有包含着子元素的后面跟着的符号 + 表明子元素1可以出现1次或者多次 * 表明子元素2可以出现0次或者多次 ? 表明子元素3可以出现0次或者1次 3、解决子标签不确定问题: <!ELEMENT 父元素 (子元素1,(子元素2|子元素3))> 表明该父元素,一定要包含子元素1,子元素2或子元素3。 -->
(三)DTD-属性
在 DTD 中,属性通过 ATTLIST 声明来进行声明。<!ELEMENT elt EMPTY> <!ATTLIST elt name CDATA "nameless"> <!ATTLIST elt gender (women|men) #REQUIRED> <!ATTLIST elt id ID> <!ATTLIST elt alias CDATA #IMPLIED> <!ATTLIST elt specis CDATA #FIXED "human"> <!--下面为合法xml格式--> <elt name="lee" gender="man" id="elt1" specis="huamn" /> <!--下面为不合法xml格式 1、缺少name属性 2、gender属性的值不是枚举中的任何一个 3、ID类型的id属性,值不能以数字开头 4、specis属性值时固定的 --> <elt gender="ladybody" id="1" specis="animal"> <!-- 属性约束格式: <!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" 属性不是必需的,但属性值是固定的 -->
更多关于DTD约束内容…
二、Schema约束
可扩展标记语言架构是以可扩展标记语言(例如XML)为基础的,它用于可替代文档类型定义(DTD);一份XML schema文件描述了可扩展标记语言文档的结构。1、XML Schema 是基于 XML 的 DTD 替代者。
2、XML Schema 描述 XML 文档的结构。
3、XML Schema 语言也称作 XML Schema 定义(XML Schema Definition,XSD)。
(一)简单的类型
1、xsd 元素简单元素指那些仅包含文本的元素。它不会包含任何其他的元素或者属性。(也可以像数据类型添加限定,以此来限制它的内容)
<xs:element name="Name" type="xs:string"> <xs:element name="Age" type="integer"> <xs:element name="gender" type="" default="man"> <xs:element name="specis" type="xs:string" fixed="human"> <!-- 定义简易元素的格式: <xs:element name="元素名称" type="元素的数据类型"/> 元素的数据类型: xs:string 字符串类型 xs:decimal 浮点数类型 xs:integer 整数类型 xs:boolean 布尔类型 xs:date 日期类型 xs:time 时间类型 默认值和固定值 default 当没有其他值被规定时,默认值就会自动分配给元素 fixed 固定值会自动分配给元素,而且无法规定另外的值 -->
2、xsd 属性
某个元素拥有属性则是复杂的类型。但是属性本身作为简易类型被声明。。
<xs:attribute name="id" type="integer"> <!-- 定义属性的格式为: <xs:attribute name="属性名称" type="属性的数据类型" /> 属性的数据类型: xs:string 字符串类型 xs:decimal 浮点数类型 xs:integer 整数类型 xs:boolean 布尔类型 xs:date 日期类型 xs:time 时间类型 默认值和固定值 default 当没有其他值被规定时,默认值就会自动分配给元素 fixed 固定值会自动分配给元素,而且无法规定另外的值 -->
3、xsd限定
<!-- 1、对值的限定 下面的例子定义带有限定且名为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> </xssimpleType> </xs:element> <!-- 2、限定为某一枚举类 下面的例子,把xml元素限定为一组枚举类。元素gender的内容只能是man和woman。 --> <xs:element name="gender"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:enumeration value="man"/> <xs:enumeration value="woman"/> <xs:restriction> </xs:simpleType> <xs:element>
(二)复杂的类型
复合元素指包含其他元素或者换属性的xml元素。四种类型复合元素:1、空元素
2、包含其他元素的元素
3、仅包含文本的元素
4、包含元素和文本的元素
相关文章推荐
- XML 的 约束 :DTD 、 Schema
- xml约束之dtd约束和schema约束---3
- xml约束之dtd约束和schema约束---3
- XML文档数据库--DTD约束简单演示
- xml语法、DTD约束xml、Schema约束xml、DOM解析xml
- XML的约两种约束——DTD、Schema
- xml约束之dtd约束和schema约束---3
- xml约束之dtd约束和schema约束---3
- XML的约两种约束——DTD、Schema
- XML_DTD约束和XML_Schema约束以及使用dom4j解析
- 黑马训练营 -----XML语法与DTD,Schema约束
- java自学之路-----XML_编写规范,约束技术dtd,schema
- Spring 配置文件xml文档的schema约束
- xml约束之dtd约束和schema约束---3
- xml约束之dtd约束和schema约束---3
- XML的DTD和Schema约束
- XML文档数据库--schema约束简单演示
- 关于Spring配置文件xml文档的schema约束
- xml的约束技术Schema、dtd
- XML约束文档DTD