您的位置:首页 > 其它

XML之DTD Schema总结

2012-02-26 22:14 302 查看
首先强烈推荐使用XMLSpy这款专业工具:下载地址:http://download.csdn.net/detail/jiangtongcn/4091853DTD总结DTD文档结构内部DTD文档语法结构外部DTD文档语法结构内外部DTD文档语法结构【当外部DTD不满足要求的时候可以考虑添加内部DTD】DTD元素空元素定义 建议<元素名称/>#PCDATA限定元素包含文档内容纯元素符号的用法(?、+、*)DTD属性类型CDATA表示属性值是文本类型ID表示属性值是唯一的IDREF/IDREFS表示外键的引用,在属性值里面出现的值一定是之前定义好的ID类型的值。Enumerated枚举类型,并非使用这个单词而是自定的枚举值如男或女属性特点#REQUIRED表示属性值是必须的。#IMPLIED表示属性可以省略#FIEXD表示属性在出现的时候有个固定值Default表示缺省值,并非使用这个单词,而是预定好的一些值。DTD实体实体是在DTD里面去定义,在XML文件里使用。好比在DTD里面定义了一个变量,在XML里面使用这个变量。Schema总结Schema文档结构Schema文档是一个XML文档,因此是需要声明和根元素的。Schema常用元素类型element元素元素名称、出现次数、group元素将几个元素捆绑到一起以组的形势出现attribute元素定义属性名称、默认值attributeGroup元素将几个属性捆绑出现simpleType元素要对数据类型进行扩充的时候要使用自定简单数据类型restriction定义一个约束[常用]list列表,可以定义数据类型complexType元素限制包含元素的元素和元素的属性sequenceXML文档的子元素按照什么顺序出现choice表示定义的一组当中可以选择哪一个。-----------------------------------------[b]-------------------DTD使用示范-------[b]--------------------------------[/b][/b]DTD元素示范Movie.dtd
<?xml version="1.0" encoding="GB2312"?>
<!ELEMENT CCTV-6 (电影+)>
<!ELEMENT 电影 (名称, 主演+, 类型?, 片长)>
<!ELEMENT 名称 (#PCDATA)>
<!ELEMENT 主演 (#PCDATA)>
<!ELEMENT 类型 (#PCDATA)>
<!ELEMENT 片长 (#PCDATA)>
Movie.xml
<?xml version="1.0" encoding="gb2312"?>
<!--为下面的xml编写一个外部的DTD文档
类型:最多出现1次
主演:至少是一个人
-->
<!DOCTYPE CCTV-6 SYSTEM "验证元素测试.dtd">
<CCTV-6>
<电影>
<名称>霍元甲</名称>
<主演>李连杰</主演>
<类型>动作</类型>
<片长>1小时35分</片长>
</电影>
<电影>
<名称>宝贝计划</名称>
<主演>成龙</主演>
<主演>古天乐</主演>
<片长>1小时40分</片长>
</电影>
</CCTV-6>
------------------------------------------------------------------------------------DTD属性示范Family.dtd
<!ELEMENT 家庭 (人+, 家电*)><!ELEMENT 人 EMPTY><!ELEMENT 家电 EMPTY><!ATTLIST 人名字 CDATA #REQUIRED年龄 CDATA #REQUIRED性别 (男 | 女) "女"住址 CDATA #FIXED "北京"爱好 CDATA #IMPLIED><!ATTLIST 家电名称 CDATA #REQUIRED数量 CDATA #REQUIRED>	
Family.xml
<?xml version="1.0"?><!DOCTYPE 家庭 SYSTEM "Family.dtd"><!--要求如下:1、子元素都为空元素2、家庭必须有一个人,可以没有家电3、名字和年龄是必须填写的4、性别男或女 默认为女5、住址固定为北京--><家庭><人 名字="郭大路" 性别="男" 年龄="25" 住址="北京"/><人 名字="杨柳" 年龄="38" 爱好="作个教育家和伟人"/><家电 名称="彩电" 数量="3"/></家庭>
------------------------------------------------------------------------------------
DTD实体示范book.dtd
<!ELEMENT book (details+)><!ELEMENT details (name, author, publication, price)><!ELEMENT name (#PCDATA)><!ELEMENT author (#PCDATA)><!ELEMENT publication (#PCDATA)><!ELEMENT price (#PCDATA)><!ATTLIST pricetype (支票 | 现金) "现金"><!ENTITY country "中国"><!ENTITY count "印度"><!ENTITY rights "版权所有"><!ENTITY pricenotation "{1}quot;>
book.xml
<?xml version="1.0" encoding="UTF-8"?><!--country  中国count    印度rights   版权所有pricenotation  $type	 支票或现金 默认为现金--><book><details><name>xml 使用详解</name><author>成龙来自&country;</author><publication>Mac &rights;</publication><price type="支票">&pricenotation;50</price></details><details><name>xml 揭密</name><author>Raghu 来自&count;</author><publication>Mac &rights;</publication><price>&pricenotation;45</price></details></book>
--------------------------------------Schema使用示范--[b]------------------------[/b]Schema元素定义:students.xsd
<?xml version="1.0" encoding="UTF-8"?><xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified"><xs:element name="students"><xs:complexType><xs:sequence><xs:element name="student" type="xs:string" minOccurs="1" maxOccurs="2"></xs:element></xs:sequence></xs:complexType></xs:element></xs:schema>
students.xml
<?xml version="1.0" encoding="UTF-8"?><students xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="students.xsd"><student>pbdevn</student></students>
------------------------------------------------------------------------------------
Schema元素组定义:students.xsd
<?xml version="1.0" encoding="UTF-8"?><xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified"><xs:group name="studentGroup"><xs:sequence><xs:element name="student" type="xs:string"></xs:element><xs:element name="class" type="xs:string"></xs:element></xs:sequence></xs:group><xs:element name="students"><xs:complexType><xs:sequence><xs:group ref="studentGroup" maxOccurs="2"></xs:group></xs:sequence></xs:complexType></xs:element></xs:schema>
students.xml
<?xml version="1.0" encoding="UTF-8"?><students xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="students.xsd"><student>jack</student><class>1班</class><student>tony</student><class>2班</class></students>
------------------------------------------------------------------------------------
Schema属性定义student.xsd
<?xml version="1.0" encoding="UTF-8"?><xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified"><xs:element name="student"><xs:complexType><xs:attribute name="id" type="xs:string" use="optional"fixed="T"></xs:attribute></xs:complexType></xs:element></xs:schema>
student.xml
<?xml version="1.0" encoding="UTF-8"?><student id="S101"></student>
------------------------------------------------------------------------------------
Schema属性组定义student.xsd
<?xml version="1.0" encoding="UTF-8"?><xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified"><xs:attributeGroup name="message"><xs:attribute name="id" type="xs:string"/><xs:attribute name="name" type="xs:string"/></xs:attributeGroup><xs:element name="school"><xs:complexType><xs:sequence><xs:element name="student"><xs:complexType><xs:attributeGroup ref="message"/></xs:complexType></xs:element><xs:element name="teacher"><xs:complexType><xs:attributeGroup ref="message"/></xs:complexType></xs:element></xs:sequence></xs:complexType></xs:element></xs:schema>
student.xml
<?xml version="1.0" encoding="UTF-8"?><school xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="E:\XML案例\student.xsd"><student id="S101" name="jack"/><teacher id="T101" name="tony"/></school>
------------------------------------------------------------------------------------
Schema简单类型约束student.xsd
<?xml version="1.0" encoding="UTF-8"?><xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified"><xs:simpleType name="stuAge"><xs:restriction base="xs:int"><xs:minExclusive value="18"></xs:minExclusive ><xs:maxInclusive value="50"></xs:maxInclusive></xs:restriction></xs:simpleType><xs:simpleType name="stuName"><xs:restriction base="xs:string"><xs:maxLength value="5"></xs:maxLength></xs:restriction></xs:simpleType><xs:element name="student"><xs:complexType><xs:sequence><xs:element name="name" type="stuName"></xs:element><xs:element name="age" type="stuAge"></xs:element></xs:sequence></xs:complexType></xs:element></xs:schema>
student.xml
<?xml version="1.0" encoding="UTF-8"?><student xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="student.xsd"><name>tony</name><age>19</age></student>
------------------------------------------------------------------------------------
Schema简单类型列表student.xsd
<?xml version="1.0" encoding="UTF-8"?><xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified"><xs:simpleType name="stuScore"><xs:list itemType="stuScoreItem"></xs:list></xs:simpleType><xs:simpleType name="stuScoreItem"><xs:restriction base="xs:int"><xs:minInclusive value="0"></xs:minInclusive><xs:maxExclusive value="100"></xs:maxExclusive></xs:restriction></xs:simpleType><xs:element name="student"><xs:complexType><xs:sequence><xs:element name="scores" type="stuScore"></xs:element></xs:sequence></xs:complexType></xs:element></xs:schema>
student.xml
<?xml version="1.0" encoding="UTF-8"?><student xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="student.xsd"><scores>80 90 89</scores></student>
------------------------------------------------------------------------------------
Schema复合类型序列student.xsd
<?xml version="1.0" encoding="UTF-8"?><xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified"><xs:complexType name="studentType"><xs:sequence><xs:element name="id" type="xs:string"></xs:element><xs:element name="name" type="xs:string"></xs:element></xs:sequence></xs:complexType><xs:element name="students"><xs:complexType><xs:sequence><xs:element name="student" maxOccurs="5" type="studentType"></xs:element></xs:sequence></xs:complexType></xs:element></xs:schema>
student.xml
<?xml version="1.0" encoding="UTF-8"?><students xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="student.xsd"><student><id>S101</id><name>jack</name></student><student><id>S102</id><name>tony</name></student></students>
------------------------------------------------------------------------------------
Schema复合类型单选项student.xsd
<?xml version="1.0" encoding="UTF-8"?><xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified"><xs:element name="交通工具"><xs:complexType><xs:choice><xs:element name="自行车" type="xs:string"></xs:element><xs:element name="公交车" type="xs:string"></xs:element><xs:element name="小汽车" type="xs:string"></xs:element></xs:choice></xs:complexType></xs:element></xs:schema>
student.xml
<?xml version="1.0" encoding="UTF-8"?><交通工具 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="student.xsd"><自行车>捷安特</自行车></交通工具>
------------------------------------------------------------------------------------
Schema综合练习student.xsd
<?xml version="1.0" encoding="UTF-8"?><!-- edited with XMLSpy v2010 rel. 3 (http://www.altova.com) by jiang (tong) --><xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified"><xs:simpleType name="AgeInt"><xs:restriction base="xs:integer"><xs:minInclusive value="18"/><xs:maxInclusive value="40"/></xs:restriction></xs:simpleType><xs:simpleType name="SexEnum"><xs:restriction base="xs:string"><xs:enumeration value="男"/><xs:enumeration value="女"/></xs:restriction></xs:simpleType><xs:simpleType name="NameType"><xs:restriction base="xs:string"><xs:minLength value="2"/><xs:maxLength value="4"/></xs:restriction></xs:simpleType><xs:simpleType name="StuNumType"><xs:restriction base="xs:string">
			<!--正则表达式--><xs:pattern value="T[0-9][1-9]"/></xs:restriction></xs:simpleType><xs:element name="Students"><xs:complexType><xs:sequence><xs:element name="Student" minOccurs="0" maxOccurs="3"><xs:complexType><xs:sequence><xs:element name="Name" type="NameType"/><xs:element name="Sex" type="SexEnum"/><xs:element name="Age" type="AgeInt"/></xs:sequence><xs:attribute name="StuNum" type="StuNumType" use="required"/></xs:complexType></xs:element></xs:sequence></xs:complexType></xs:element></xs:schema>
student.xml
<?xml version="1.0" encoding="UTF-8"?><Students xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="Students.xsd"><Student StuNum="T01"><Name>张三</Name><Sex>男</Sex><Age>40</Age></Student><Student StuNum="T09"><Name>李四</Name><Sex>男</Sex><Age>22</Age></Student><Student StuNum="T03"><Name>王二</Name><Sex>男</Sex><Age>18</Age></Student></Students>

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: