0

我有与 xml 验证相关的查询。当我们编写下面的 xml 验证代码时

<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">

这里的dtd文件路径是一个准确的URI,如果我们断开网络,同样的验证仍然存在。我还认为当我们下载jar时,jar文件中可能存在dtd。如果jar文件中存在而不是我们为什么要写这种URI。

等待背后的一些坚实的原因..

4

1 回答 1

1

在许多情况下,URI 主要用于为资源提供唯一名称。与其他分配唯一名称的机制一样,URI 通过委托实现唯一性:只有域 www.hibernate.org 的所有者才能使用该主机名在 URI 空间中分配名称,因此他们的名称不会与其他人的名称冲突(谁将使用具有不同主机名的 URI)。与许多其他分配唯一名称的机制不同,URI 的优点是原则上可以使用简单的广泛可用的技术取消引用。

如果您使用的软件是从 JAR 文件中获取 DTD,而不是通过咨询 URI 中命名的主机(这似乎是合理的,但您没有说涉及到什么软件,我也不会以任何方式提出任何声明关于这个问题),那么它并没有做任何与任何 HTTP 代理完全不同的事情:使用本地缓存副本而不是通过网络再次获取相同的数据。

问题“我们为什么要编写这种 URI?” 如果您花一点时间考虑在系统标识符中使用 URI 的替代方法,那么最容易回答(而不是为 DTD 使用其他标识符)。很容易想到替代方案,但不仅很难想到比 URI 更好的替代方案,而且实际上很难想到不明显劣于 URI 的替代方案。(至少,这是我从该领域过去 25 年的经验中得出的推论。)

于 2012-12-20T18:52:49.397 回答