XML 验证 (DTD)
拥有正确语法的 XML 被称为 "形式良好" 的 XML 通过 DTD 验证的 XML 是 "合法" 的 XML
形式良好的 XML 文档
"形式良好"的 XML 文档拥有正确的语法
也就是遵守前面的章节描述的语法规则
- XML 文档必须有一个根元素
- XML 元素都必须有一个关闭标签
- XML 标签对大小写敏感
- XML 元素必须被正确的嵌套
- XML 属性值必须加引号
<?xml version="1.0" encoding="UTF-8"?> <note> <to>小明</to> <from>小红</from> <heading>短信</heading> <body>I miss you so much</body> </note>
验证 XML 文档
合法的 XML 文档是 "形式良好"的 XML 文档
也就是符合文档类型定义(DTD)的规则:
<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE note SYSTEM "Note.dtd"> <note> <to>小明</to> <from>小红</from> <heading>短信</heading> <body>I miss you so much</body> </note>
DOCTYPE 声明是对外部 DTD 文件的引用
Note.dtd
的内容会在下一节中学习到
XML DTD
DTD 的目的是定义 XML 文档的结构。 它使用一系列合法的元素来定义文档结构
<!DOCTYPE note[ <!ELEMENT note (to,from,heading,body)> <!ELEMENT to (#PCDATA)> <!ELEMENT from (#PCDATA)> <!ELEMENT heading (#PCDATA)> <!ELEMENT body (#PCDATA)> ]>
如果要深入要学习 DTD,请移步在我们的 DTD 基础教程
XML Schema
W3C 支持一种基于 XML 的 DTD 代替者 XML Schema
<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 比 DTD 要复杂有没有?
所以,才流行不起来?
如果要深入学习 XML Schema,请移步我们的 XML Schema 基础教程
一个通用的 XML 验证器
为了更简单快捷的检查 XML 文件的语法,我们会在下一章节中创建一个 XML 验证器,以便在需要时对任何 XML 文件进行语法检查