拥有正确语法的 XML 被称为“形式良好”的 XML。
通过某个 DTD 进行了验证的 XML 是“合法”的 XML。
一个"形式良好"的 XML 文档拥有正确的语法
一个"形式良好"的 XML 文档会遵守前几章介绍过的 XML 语法规则:
XML 文档必须有根元素XML 文档必须有关闭标签XML 标签对大小写敏感XML 元素必须被正确的嵌套XML 属性必须加引号 <?xml version="1.0" encoding="ISO-8859-1"?> <note> <to>George</to> <from>John</from> <heading>Reminder</heading> <body>Don't forget the meeting!</body> </note>一个合法的 XML 文档是"形式良好"的 XML 文档,同样遵守文档类型定义 (DTD) 的语法规则
<?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE note SYSTEM "Note.dtd"> <note> <to>George</to> <from>John</from> <heading>Reminder</heading> <body>Don't forget the meeting!</body> </note>在上例中,DOCTYPE 声明是对外部 DTD 文件的引用。下面的段落展示了这个文件的内容。
DTD 的作用是定义 XML 文档的结构。它使用一系列合法的元素来定义文档结构:
<!DOCTYPE note [ <!ELEMENT note (to,from,heading,body)> <!ELEMENT to (#PCDATA)> <!ELEMENT from (#PCDATA)> <!ELEMENT heading (#PCDATA)> <!ELEMENT body (#PCDATA)> ]>实例:
<xs:element name="note"> <xs:complexType> <xs:sequence> <xs:element name="to" type="xs:string"/> <xs:element name="from" type="xs:string"/> <xs:element name="heading" type="xs:string"/> <xs:element name="body" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element>理由如下:
XML Schema 可针对未来的需求进行扩展XML Schema 更完善,功能更强大XML Schema 基于 XML 编写XML Schema 支持数据类型XML Schema 支持命名空间通过对数据类型的支持:
可更容易地描述允许的文档内容可更容易地验证数据的正确性可更容易地与来自数据库的数据一并工作可更容易地定义数据约束(data facets)可更容易地定义数据模型(或称数据格式)可更容易地在不同的数据类型间转换数据注: 数据约束,或称 facets,是 XML Schema 原型中的一个术语,中文可译为“面”,用来约束数据类型的容许值。
XML Schema 是可扩展的,因为它们由 XML 编写。
通过可扩展的 Schema 定义,你可以:
在其他 Schema 中重复使用你的 Schema创建由标准类型衍生而来的你自己的数据类型在相同的文档中引用多重的 Schema我们把符合 XML 语法的文档称为形式良好的 XML 文档,比如:
它必须以 XML 声明开头它必须拥有唯一的根元素开始标签必须与结束标签相匹配元素对大小写敏感所有的元素都必须关闭所有的元素都必须正确地嵌套必须对特殊字符使用实体即使文档的形式良好,仍然不能保证它们不会包含错误,并且这些错误可能会产生严重的后果。
请考虑下面的情况:您订购的了 5 打激光打印机,而不是 5 台。通过 XML Schema,大部分这样的错误会被您的验证软件捕获到。