XML之DTD Schema总结

来源:互联网 发布:绣花软件分哪几种 编辑:程序博客网 时间:2024/05/21 10:39

首先强烈推荐使用XMLSpy这款专业工具:

下载地址:http://download.csdn.net/detail/jiangtongcn/4091853

DTD总结
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表示定义的一组当中可以选择哪一个。


------------------------------------------------------------DTD使用示范---------------------------------------

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使用示范--------------------------

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>



	
				
		
原创粉丝点击