- XML定义语言:DTD,XDR和XSD
- XML Schema的全貌
- 用XSD校验XML
- XML Schema和名域
XML定义语言:DTD,XDR和XSD
我们知道XML文档有格式良好和有效性两种约束。格式良好适合于所有的XML文档,即满足XML标准中对于格式的规定。而当XML文档满足一定的语义约束则称该XML文档为有效的XML文档。目前常用的XML定义语言有DTD,XDR和XSD。
文档类型定义(DTD)
文档类型定义用不同于XML的独立语法来规定了XML文档中各种元素集合的内容模式。该语言直接沿袭了定义SGML语言的方法。
- DTD使得XML文档保持一致
- DTD可以共享
- DTD提供了对XML语汇的形式化和完整的定义
- 每个XML文档有单个的DTD来限制
Schema
类似DTD,Schema可以规定一套特定文档的结构或模型。使用Schema语言来描述文档结构有下面以下好处:
- Schema使用的是XML语法
- Schema可以用XML解析器来解析
- Schema允许全局性元素(在整个XML文档中元素用相同方式来使用)和局部性元素(元素在特定的上下文中有不同的含义)
- Schema提供丰富的数据类型(如整型、布尔型、日期类型等);而且一个元素中的数据类型可以进行规定,甚至可以根据需要自定义数据类型
XDR
XDR的全称是XML-Data Reduced Language,是早先由XML-Data草案派生出来的一个定义XML语言的分支。由于微软最先提出了XML-Data,并且经过修订后在其软件中应用,所以XDR也被广泛使用。目前支持XDR Schema的产品有:
- Microsoft Biztalk Server
- Microsoft SQL Server 2000
- Microsoft Office 2000
- Microsoft IE5.0和后续版本
XDR也得到了Extensibility的 XML Authority编辑工具的支持。
XSD Schema
最为正式的XML Schema语言是由W3C指定的XML Schema规范,简称为XSD(XML Schema Definition)。XSD也提供了数据类型的支持和结构定义的方法。
2001年5月2日,XML Schema 规范成为了W3C的正式推荐标准。这就意味着经过三年多的发展,XML 的Schema标准终于修成了正果。这样,XML、XML Schema和Namespace都成为了W3C的正式,这是一个值得庆贺的历史性时刻,意味着XML语法的规范已经奠定了扎实的基础。XML的广泛发展和应用也即将成为现实。下面我们就将重点来介绍最新的XML Schema标准。
XML Schema的全貌
我们用实际的例子来介绍XML Schema的用法。比如,有这样的XML实例文档:
<?xml version="1.0" encoding="GB2312"?>
<!DOCTYPE studentlst SYSTEM "student.dtd">
<studentlst>
<student>
<name>至尊宝</name>
<genda>男</genda>
<sid>001</sid>
<birthday>1576-3-2</birthday>
</student>
<student>
<name>白晶晶</name>
<genda>女</genda>
<sid>002</sid>
<birthday>1578-4-25</birthday>
</student>
</studentlst>
该文档用DTD定义如下:
<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT studentlst (student)*>
<!ELEMENT student (name, genda, sid, birthday)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT genda (#PCDATA)>
<!ELEMENT sid (#PCDATA)>
<!ELEMENT birthday (#PCDATA)>
但是其中name和genda、sid等文本元素的数据类型都是统一的字符类型,而事实上我们一般要求对它们有更为严格的限制。比如,要求name仍然为字符类型,而genda为可选的枚举类型,只能取男或女,sid要求是三位的整数类型,并且要求birthday为日期类型。name和birthday的定义比较简单:
<element name="name" type="string" minOccurs="1" maxOccurs="1/">






