3

SOAP 要求への応答として、WSDL ベースの Web サービスから受け取った非常に単純な SOAP XML があります。

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
   <soap:Body>
      <PingResponse xmlns="http://somevalidnamespacedomain.org/xyz">
         <PingResult>Pinging Back</PingResult>
      </PingResponse>
   </soap:Body>
</soap:Envelope>

この SOAP XMLは、 (このメッセージを受信するために使用されるツール)で完全に検証されます。soapUIつまり、soapUI のメッセージ ペインを右クリックし、コンテキスト メニューから [検証] を選択すると、[検証 OK] が表示されます。

ここに画像の説明を入力

しかし、まったく同じメッセージを にNotepad++(または に) コピー アンド ペーストしてから (Altova's XMLSpy正しい を指して.xsd) 検証しようとすると、あまり明確でないエラー メッセージが表示されます。

XML スキーマを使用した現在のファイルの検証:

エラー: 要素 '{ http://schemas.xmlsoap.org/soap/envelope/ }Envelope': 検証ルートに使用できる一致するグローバル宣言がありません。

なぜこれが起こるのですか?

soapUI の外部で検証するには、何をラップ (または変更) する必要がありますか?

4

2 に答える 2

1

検証時に、soap 本体の定義はあるが、soap エンベロープ構造の定義を持たないスキーマ ドキュメントをバリデーターに指定していると思います。したがって、検証はルート要素ですでに失敗しています。

(特に) バリデーターに特定のスキーマ ファイルを使用するように指示した場合、バリデーターはそれを認識せず、XML ドキュメントが何の目的で使用されているかについても関心がないことに注意してください。文法をチェックし、ドキュメント全体を検証しようとします (スキーマ ドキュメントで一部の要素の内容をスキップするように指示されていない限り)。

于 2014-01-19T02:00:00.740 に答える