DTD远程引用问题

发布于 2024-11-14 10:27:02 字数 579 浏览 2 评论 0原文

我有一个自定义的 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对其进行了验证,这是经过验证的,但我不确定这对于将来可能发生的这种服务器宕机问题是否是正确或最佳的解决方案。

感谢您提前的帮助。

I have a customized dtd that contains a reference to a remote dtd like:

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

However, docbook site was down for at least 1 day in mid March 2011, our content won't validate. So I was thinking making a local copy of the soextblx.dtd and change reference to that may help, like:

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

Assuming that I have put "soextblx.dtd" in the same folder as my customized dtd. I have used XmlSpy to validate it, which is validated, but I am not sure whether this is the correct or best solution for this kind of server-down problem that may happen in the future.

Thanks for the help in advance.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

心不设防 2024-11-21 10:27:02

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

回到你原来的问题 - 你正在按照正确的方式做这件事有关外部实体声明的 DTD 参考

相关摘录:

因此,URI 可能相对于
文档实体
,到实体
包含外部 DTD 子集,或
到其他一些外部参数
实体。尝试找回
由 URI 标识的资源可以是
在解析器级别重定向(对于
例如,在实体解析器中)或
下面(在协议级别,对于
例如,通过 HTTP 位置:
标题)。在没有额外的情况下
超出本范围的信息
资源内的规范,
资源的基本 URI 始终是
返回的实际资源的URI

换句话说,它是 URI
资源终于找回了
已发生重定向。

Interesting approach @ mzjn -- seems like XML catalog is an abstraction of the public/system concept.

Back to your original question -- you are doing it the right way according to the DTD ref regarding the External Entity declaration.

Relevant excerpt:

A URI might thus be relative to the
document entity
, to the entity
containing the external DTD subset, or
to some other external parameter
entity. Attempts to retrieve the
resource identified by a URI may be
redirected at the parser level (for
example, in an entity resolver) or
below (at the protocol level, for
example, via an HTTP Location:
header). In the absence of additional
information outside the scope of this
specification within the resource, the
base URI of a resource is always the
URI of the actual resource returned
.
In other words, it is the URI of the
resource retrieved after all
redirection has occurred.

作死小能手 2024-11-21 10:27:02

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

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

The best general solution to this kind of problem is to use an XML catalog. In short, a catalog provides a mapping from generic identifiers to specific (local) files or URIs.

Here are two good articles about catalogs (especially useful for DocBook users):

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文