XML DTD验证指南

发布时间:2026/7/9 15:48:51

XML DTD验证指南 DTD 验证的基本概念DTDDocument Type Definition是一种用于定义 XML 文档结构和约束的语法规则。通过 DTD 验证可以确保 XML 文档符合预定义的结构和数据类型要求。DTD 可以内嵌在 XML 文档中也可以作为外部文件引用。内嵌 DTD 的示例以下是一个包含内嵌 DTD 的 XML 文档示例用于验证书籍信息的结构!DOCTYPE bookstore [ !ELEMENT bookstore (book) !ELEMENT book (title, author, price) !ELEMENT title (#PCDATA) !ELEMENT author (#PCDATA) !ELEMENT price (#PCDATA) !ATTLIST book category CDATA #REQUIRED ] bookstore book categoryfiction titleThe Great Gatsby/title authorF. Scott Fitzgerald/author price10.99/price /book /bookstore外部 DTD 的示例将 DTD 定义保存在外部文件如bookstore.dtd中然后在 XML 文档中引用bookstore.dtd:!ELEMENT bookstore (book) !ELEMENT book (title, author, price) !ELEMENT title (#PCDATA) !ELEMENT author (#PCDATA) !ELEMENT price (#PCDATA) !ATTLIST book category CDATA #REQUIREDXML 文档:!DOCTYPE bookstore SYSTEM bookstore.dtd bookstore book categoryfiction titleThe Great Gatsby/title authorF. Scott Fitzgerald/author price10.99/price /book /bookstoreDTD 元素声明DTD 通过!ELEMENT声明 XML 元素的名称和内容模型。以下是常见的几种内容模型(#PCDATA)表示元素包含纯文本。(child1, child2)表示元素必须按顺序包含子元素。(child1|child2)表示元素只能包含其中一个子元素。*、、?分别表示子元素可以出现零次或多次、一次或多次、零次或一次。!ELEMENT person (name, email?, phone*) !ELEMENT name (#PCDATA) !ELEMENT email (#PCDATA) !ELEMENT phone (#PCDATA)DTD 属性声明通过!ATTLIST声明元素的属性包括属性名称、数据类型和默认行为CDATA属性值为字符数据。ID、IDREF用于唯一标识和引用。#REQUIRED属性必须存在。#IMPLIED属性可选。#FIXED属性值为固定值。!ATTLIST person id ID #REQUIRED gender (male|female) male age CDATA #IMPLIED 实体声明DTD 支持实体声明用于定义可重用的文本或特殊字符内部实体!ENTITY entityName entityValue外部实体!ENTITY entityName SYSTEM file.xml!ENTITY copyright Copyright 2023 !ENTITY logo SYSTEM logo.pngDTD 验证的代码示例以下是一个完整的 XML 文档和 DTD 验证示例product.dtd:!ELEMENT catalog (product*) !ELEMENT product (name, price, description) !ELEMENT name (#PCDATA) !ELEMENT price (#PCDATA) !ELEMENT description (#PCDATA) !ATTLIST product id ID #REQUIRED category (electronics|clothing|books) #REQUIRED product.xml:!DOCTYPE catalog SYSTEM product.dtd catalog product idp1 categoryelectronics nameLaptop/name price999.99/price descriptionHigh-performance laptop/description /product /catalog使用编程语言验证 DTD以下是使用 Python 的lxml库验证 XML 文档是否符合 DTD 的示例from lxml import etree # 加载 XML 和 DTD xml etree.parse(product.xml) dtd etree.DTD(product.dtd) # 验证 if dtd.validate(xml): print(XML 文档有效) else: print(XML 文档无效) print(dtd.error_log)常见 DTD 验证错误缺少必需的元素或属性。元素或属性的顺序不符合 DTD 定义。使用了未声明的元素或属性。属性值不符合定义的数据类型。通过 DTD 验证可以确保 XML 文档的结构和内容符合预期提高数据的规范性和可靠性。

相关新闻