Validation xml文件中用于验证的确切dtd URI

Validation xml文件中用于验证的确切dtd URI,validation,jar,dtd,xml,Validation,Jar,Dtd,Xml,我有一个与xml验证相关的查询 <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> 这里dtd文件路径是一个精确的URI,如果我们断开互联网,同样的验证会再次持续。我还认为,当我们下载jar时,可能dtd存在于jar文件中。如果d

我有一个与xml验证相关的查询

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

这里dtd文件路径是一个精确的URI,如果我们断开互联网,同样的验证会再次持续。我还认为,当我们下载jar时,可能dtd存在于jar文件中。如果dtd存在于jar文件中,那么我们为什么要编写这种URI呢


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

如果您使用的软件是从一个JAR文件中获取DTD,而不是通过咨询URI中指定的主机(这是有道理的,但您没有说涉及到什么软件,我也没有就此问题提出任何声明),然后,它没有做任何与任何HTTP代理完全不同的事情:使用本地缓存副本,而不是通过网络再次获取相同的数据


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

如果HTTP代理的概念在从jar获取DTD时成为人们关注的焦点,那么会有什么危害。对于第二个问题,您没有给出我的答案,即如果我们断开互联网,仍然会存在相同的xml验证。这是如何发生的?请告诉我原因有什么害处?我不确定是否有伤害;应该有吗?当机器未连接网络时,验证如何继续工作?当验证器可以查询DTD的本地缓存副本而不需要从网络获取新副本时,它就可以工作。(我想我是这么说的;也许我还不够清楚。)所以,你们的意思是,若机器连接到internet,那个么验证将从前面提到的URI执行,否则验证将使用DTD的本地副本执行。我说得对吗?这可能是正在发生的事情,但不,我不是这么说的。任何软件(不仅仅是验证器)都可以通过向权威主机发送GET请求或从本地缓存中提取资源的副本来解除对URI的引用。它选择哪一个取决于软件的编写方式。如果它发送GET请求,则该请求可能会转到指定主机,或者可能会由缓存处理。HTTP就是这样工作的,明白了。和thanx为您提供有用的指导