1

我有一个自定义的 dtd,其中包含对远程 dtd 的引用,例如:

<!ENTITY % table.model     PUBLIC "-//OASIS//DTD XML Exchange Table Model 19990315//EN" "http://www.docbook.org/sgml/4.2/soextblx.dtd">

但是,docbook 网站在 2011 年 3 月中旬至少关闭了 1 天,我们的内容将无法验证。因此,我正在考虑制作 soextblx.dtd 的本地副本并更改对它的引用可能会有所帮助,例如:

  <!ENTITY % table.model     PUBLIC "-//OASIS//DTD XML Exchange Table Model 19990315//EN" "soextblx.dtd">

假设我已将“soextblx.dtd”放在与自定义 dtd 相同的文件夹中。我已经使用 XmlSpy 对其进行了验证,这是经过验证的,但我不确定这对于未来可能发生的这种服务器停机问题是否是正确或最佳的解决方案。

我在这里先向您的帮助表示感谢。

4

2 回答 2

1

有趣的方法@ mzjn——似乎 XML 目录是公共/系统概念的抽象。

回到您最初的问题 -根据关于外部实体声明的 DTD 参考,您正在以正确的方式进行操作。

相关摘录:

因此,URI 可能与文档实体、包含外部 DTD 子集的实体或某些其他外部参数实体相关。检索由 URI 标识的资源的尝试可以在解析器级别(例如,在实体解析器中)或以下(在协议级别,例如,通过 HTTP Location: 标头)重定向。如果资源中没有超出本规范范围的附加信息,则资源的基本 URI 始终是返回的实际资源的 URI。换句话说,它是在所有重定向发生后检索到的资源的 URI。

于 2011-06-07T17:12:39.767 回答
0

此类问题的最佳通用解决方案是使用XML 目录。简而言之,目录提供从通用标识符到特定(本地)文件或 URI 的映射。

这里有两篇关于目录的好文章(对 DocBook 用户特别有用):

于 2011-06-07T16:46:15.677 回答