我有与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。
等待一些坚实的理由......
答案 0 :(得分:1)
在许多情况下,URI主要用于为资源提供唯一名称;与其他分配唯一名称的机制一样,URI通过委托实现唯一性:只有域名www.hibernate.org的所有者才能在URI空间中为该主机名指定名称,因此它们的名称不会与其他人的名称冲突(谁将使用具有不同主机名的URI)。与许多其他分配唯一名称的机制不同,URI的优势在于它们原则上可以使用简单广泛的技术解除引用。
如果您使用的软件是从JAR文件中获取DTD而不是通过咨询URI中指定的主机(这是合理的,但您不会说出涉及的软件,我不会&# 39;在问题上以任何方式提出任何声明),然后它没有做任何与HTTP代理完全不同的事情:使用本地缓存副本而不是通过网络再次获取相同数据。
问题&#34;我们为什么要写这种URI?&#34; (如果您花一点时间考虑在系统标识符中使用URI的替代方法),则最容易回答(而不是使用DTD的其他标识符)。考虑替代方案很容易,但是不仅要想到比URI更好的替代方案,实际上很难想到那些并非显着的替代方案。不如URI。 (至少,这是我从这个领域过去二十五年的经验中得出的推论。)