13

Webサービスを実装するための準備として、SOAPとWSDLについて勉強しています。私が困惑することに遭遇したことの 1 つは、私が見た URI の一部が次のような末尾のスラッシュを使用していることです。

http://www.w3.org/some-namespace/

私が研究した他の例では、この末尾のスラッシュが省略されています。これに関していくつか質問があります。

  • 末尾のスラッシュの意味は何ですか?
  • URI http://www.w3.org/some-namespace は http://www.w3.org/some-namespace/ と同じですか?
  • それらが同じでない場合、あるフォームが別のフォームに対して保証される時期をどのように判断すればよいですか?
  • URI に関して w3c によって提供されたガイドラインを読みましたが、これらは、URI 文字列の大文字と小文字を区別した比較が等しいと見なされる場合にのみ、その URI が等しいと見なされるべきであることを示しているようです。この解釈は正しいでしょうか?
4

3 に答える 3

10

はい、あなたが読んだ URI に関する w3c ガイドラインは正しいです。

equal-strings-uri を持たない 2 つの名前空間は、異なる名前空間です。大文字と空白も重要です。

名前空間 uri は、要求を発行すると Web 応答が生成されるという意味ではありません。したがって、「/」で終わるべきかどうかの推論はあまり意味がありません。

実際、namespace-uri は URI の構文規則を満たしていなくても、名前空間を定義するという目的を果たします。次のような名前空間を使用すると非常に便利です。

"\/^%$#sdhfgds"

それがユニークである限り(私は決してそのような使用を推奨していないことに注意してください:))。既存の XML プロセッサ (パーサー、XPath、XSLT プロセッサなど) は、そのような名前空間に遭遇してもエラーを発生させません。

于 2009-01-10T16:50:36.413 に答える
6

名前空間 URI は、単に一意の識別子を意味します (比較のためのルールへのリンクはここにあります)。URI の使用 ("foo" とは対照的) は、XML DOCTYPE での URI の使用にまでさかのぼることができます (私は信じています)。

また、そのようなURIの「取得可能性」に関して混乱が生じるところだと思います。XML 仕様では、ドキュメントの DTD を取得するために DOCTYPE の SYSTEM 識別子を使用する必要があります (Tim Bray の解説が非常に役立つと思うので、W3C バージョンではなく、注釈付き XML 仕様にリンクします)。

他の仕様 (XML スキーマなど) ではこの動作は必要ありませんが、特にスキーマ ターゲット名前空間の場合は、従うと便利な習慣だと思います。1 つには、スキーマの利用者が常に正しい定義を簡単に見つけられるようになります。別の理由として、ドキュメントをパブリック URL に置く権限がある場合は、URI が一意であることを確認することもできます。

最後に: Uniform Resource Identifier (URI) は、Uniform Resource Locator (URL) のスーパーセットです。また、Uniform Resource Name (URN) を使用することもできます。私は、3 番目の形式の識別子があると考えています (ただし、仕様は手元にありません)。

于 2009-01-10T17:44:14.777 に答える
3

いいえ、それらは同じではありません。

最大の違いは、そのベースからの相対 URI の形成にあります。スラッシュを使用すると、相対 uri は子孫になります。スラッシュがなければ兄弟になります - つまり (C# の例):

    Uri uri = new Uri(@"http://www.w3.org/some-namespace/");
    Console.WriteLine(new Uri(uri, "foo")); // http://www.w3.org/some-namespace/foo

    uri = new Uri(@"http://www.w3.org/some-namespace");
    Console.WriteLine(new Uri(uri, "foo")); //http://www.w3.org/foo
于 2009-01-10T14:11:27.123 に答える