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には、広く利用可能な単純なテクノロジを使用して、原則として逆参照できるという利点があります。

使用しているソフトウェアが、URIで指定されたホストを参照するのではなく、JARファイルからDTDをフェッチしている場合(もっともらしいですが、どのソフトウェアが関係しているかはわかりません。また、私はいずれの方法でも主張しません。質問について)、HTTPプロキシが行うことと根本的に異なることは何もしていません。つまり、ネットを介して同じデータを再度フェッチする代わりに、ローカルにキャッシュされたコピーを使用します。

「なぜこの種のURIを書くのか」という質問。(DTDに他の識別子を使用する代わりに)システム識別子でURIを使用する代わりの方法を考えるのに少し時間を費やすと、最も簡単に答えられます。代替案を考えるのは簡単ですが、URIよりも優れている代替案を考えるのは非常に難しいだけでなく、URIよりも劇的に劣っていない代替案を考えるのは実際にはかなり難しいです。(少なくとも、それは私がこの分野での過去25年間の経験から導き出した推論です。)

于 2012-12-20T18:52:49.397 に答える