如何为XML DTD指定版本?

时间:2014-05-22 15:10:30

标签: xml xml-parsing dtd xml-dtd dtd-parsing

我想为我的DTD(内联定义)指定一个版本(如1.0或2.0)。我的目的是让解析器程序优雅地拒绝XML文档,如果版本与它正在查找的版本不同。

1 个答案:

答案 0 :(得分:1)

您可以将文件信息添加到文件名中。例如:myapp_1_2.dtd,如果您从文件系统或URL加载它。您可以解析名称并获取版本。

如果在您的方案中不起作用,您可以使用可包含版本信息的Formal Public Identifier。要使用它,您需要建立XML Catalog

目录是将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>

通过此设置,您可以通过<!DOCTYPE root PUBLIC="-//MY GROUP//DTD MY APP V1.2//EN" />选择您的DTD。

请参阅this article,其中有一些关于如何设置解析器的起点,并搜索&#34; XML目录&#34;对于其他来源。

另请参阅:Formal Public Identifiers and Catalogs