我想为我的 DTD(定义内联)指定一个版本(如 1.0 或 2.0)。我的目的是让解析器程序优雅地拒绝 XML 文档,如果版本与它正在寻找的不同。
问问题
213 次
1 回答
1
您可以将版本信息添加到文件名。例如:myapp_1_2.dtd
如果您从文件系统或 URL 加载它。您可以解析名称并获取版本。
如果这在您的方案中不起作用,您可以使用可以包含版本信息的正式公共标识符。要使用它,您需要建立一个XML 目录。
目录是将 FPI 映射到 DTD 的 XML 文件。它可能已经存在于您的环境或服务器中,因此您只需对其进行编辑并为每个 DTD 添加一个新条目。如果没有,您可能需要为您的应用程序编写目录文件和目录解析器,然后将其注册到您的解析器。
目录文件具有以下格式:
<!DOCTYPE catalog
PUBLIC "-//OASIS/DTD Entity Resolution XML Catalog V1.0//EN"
"http://www.oasis-open.org/committees/entity/release/1.0/catalog.dtd">
<catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog">
<group prefer="public" xml:base="file:///server/apps/dtds/" > 3
<public publicId="-//MY GROUP//DTD MY APP V1.2//EN" uri="myapp_1_2.dtd"/>
<system systemId="..." uri="..."/>
...
</group>
</catalog>
通过此设置,您可以通过 选择您的 DTD <!DOCTYPE root PUBLIC="-//MY GROUP//DTD MY APP V1.2//EN" />
。
请参阅这篇文章,其中有一些关于如何设置解析器的起点,并为其他来源搜索“XML 目录”。
另请参阅:正式的公共标识符和目录
于 2014-05-22T19:59:45.803 回答