1

現在の仕事で継承した Web サービスの 1 つには、次の名前空間定義を持つ WSDL スキーマが含まれています。

<xs:schema 
  xmlns:xs="http://www.w3.org/2001/XMLSchema" 
  xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" 
  xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" 
  xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" 
  xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" 
  xmlns:mns="http://my.example.com/sumproj/msgs.xsd" 
  xmlns:tns="http://my.example.com/sumproj" 
  xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" 
  targetNamespace="http://my.example.com/sumproj/msgs.xsd" 
  elementFormDefault="qualified">

上記の外部 URL はすべて Web ブラウザーからアクセスできますが、内部 URL (my.example.com ドメイン) は「見つかりません」というエラーしか生成しません。

見つかりません

要求された URL /sumproj/msgs.xsd がこのサーバーで見つかりませんでした。

特定のものがそのままの形で実装されている理由を尋ねる人が去ったので、これはバグなのか機能なのか疑問に思っています。

  • オーサリング開発者は、名前空間 XSD をそのhttp://my.example.comサーバーに配置するつもりでしたが、単に実装できなかったのでしょうか?

  • それとも、実際に localhost などにアクセスするときにこの URL を仮想として効果的に定義し、構成 XML を介して Web サービスによってのみ URL にアクセスできるセキュリティ機能の一種ですか?

後者の場合、これはどのように機能し、どこで詳細を確認できますか?

(注:上記の example.com は説明のためだけに使用されているため、雇用主の内部 URL を実際に開示することはできません)

4

2 に答える 2

2

XML 名前空間は URI (Uniform Resource Identifiers) であり、要素 'book' の作成者の意味を、他の XML ドキュメントに現れる要素 'book' の意味と区別することを目的としています。

自分のスキーマに名前空間を選択する場合、それが他の誰かが選択する可能性のある名前空間と同じではないことを絶対に確認する必要があります。この衝突が起こらないようにするために、作成者は通常、自分が所有するドメイン名で名前空間を開始します。これにより、それらは URL のように見えますが、名前空間 URI が実際に有用なリソースを指すようにする必要はなく、実際には何も必要ありません。w3c などの有益な組織は、実際にこれらの URI にリソースを投稿しています。これが、上記のドキュメントの外部名前空間が機能した理由です。

于 2013-07-22T13:31:59.663 に答える
2

オーサリング開発者は、名前空間 XSD をそのhttp://my.example.comサーバーに配置するつもりでしたが、単に実装できなかったのでしょうか?

それは可能ですが、確実ではありません。開発者の心を読まなければ、確固たる答えはありません。合理的な開発者は、どちらの方法でも行うことができます。たとえ私を含む多くの人が、名前空間のドキュメントを (おそらくスキーマ ドキュメントの形式で、おそらく RDDL ドキュメントの形式で、別の形式) 名前空間 URI で。

それとも、実際に localhost などにアクセスするときにこの URL を仮想として効果的に定義し、構成 XML を介して Web サービスによってのみ URL にアクセスできるセキュリティ機能の一種ですか?

不可能ではありませんが、これは広く文書化されていると思われる設計手法ではありません。(少なくとも、それが示唆されたことを聞いたことのない XML オタクが少なくとも 1 人はいます。) したがって、答えは、おそらく元の作成者の意図ではない、ということになると思います。

これについて読める信頼できる情報源を教えてもらえますか?

XML 名前空間の信頼できる情報源は、Tim Bray らによって編集されたドキュメント「 XML 1.0 の名前空間 (第 3 版)」および「XML 1.1 の名前空間 (第 2 版) 」です。World Wide Web Consortium によって 2009 年と 2006 年にそれぞれ公開されました。

否定を簡潔に証明することは困難ですが、仕様を調べると、名前空間名として使用される URI が逆参照可能であるべきであるという要件を課していないことが明らかになるはずです。セクション 2.1 には、「XML 名前空間は URI 参照 [RFC3986] によって識別される」と記載されていますが、仕様では、名前空間名を逆参照する必要はありません。http://www.example.org/wineセクション 2.3 では、名前空間名の一致のプロセスを文字列の同一性のテストとして定義し、これは、同じ URI の同等の形式 (と などhttp://www.Example.org/wine) が名前空間名の一致の目的で等しいと見なされないことを意味することを指摘しています。名前空間プロセッサが名前空間名を逆参照する必要がある場合、これはまったく意味がありません。

W3C Technical Architecture Group (TAG) は、ドキュメントArchitecture of the World Wide Web, Volume One で、この複雑な問題をより高いレベルの観点から議論しています。特に見る

  • セクション 3.5 (これは、「参照は逆参照を意味しない」という原則を宣言しています。
  • XML 名前空間に関するセクション 4.5.3
  • 名前空間ドキュメントのセクション 4.5.4 (TAG が推奨)

この関連する質問(およびそれに対する私の回答)も参照してください。

名前空間の URL がリソースを指している場合、これは必ずしも WSDL スキーマが実行時にそれを参照する必要があることを意味しますか?

いいえ。WSDL は、WSDL ドキュメントでの名前空間名の使用に追加の規則を課すことができますが、引用するドキュメント フラグメントは XSD スキーマ ドキュメントからのものです。XSD 仕様では、名前空間名を逆参照する必要はありません (ただし、検証エピソードで使用する XSD スキーマ ドキュメントを検索するための 1 つの可能な戦略として提案しています)。

答えが「いいえ」の場合、実行時に相談できますか? それとも人間が読むためだけですか?

プロセッサが名前空間名を逆参照することは禁止されていませんが、当局によっては推奨されていません。広く展開されているソフトウェアが、実行するたびに、または XML ドキュメントを読み取るたびに名前空間名を逆参照する場合、その結果、過剰で不要なネットワーク トラフィックが発生する可能性があります。W3C は数年間、このような不必要なトラフィックに悩まされてきましたが、現在、ユーザーがソフトウェア ベンダーに文句を言うよう説得するために、すべてのスキーマを人為的に遅い速度で提供しています。(詳細については、2008 年の Ted Guild のブログ投稿を参照してください。)

于 2013-07-23T00:56:04.407 に答える