2012-03-09 7 views
-1

もう一度同じwsdlに関連する質問が返ってきましたが、今回は要求内のすべての名前空間を削除し、wsdlに準拠します。xml内のすべての名前空間を削除し、wsdlごとに有効にします

the linkからの同じwsdl tripservice wsdlは、「from」要素を以下のように置き換えてください。

<xs:element minOccurs="0" name="from" nillable="true"> 
      <xs:simpleType> 
       <xs:restriction base="xs:string"> 
       <xs:minLength value="1"/> 
       <xs:maxLength value="12"/> 
       </xs:restriction> 
      </xs:simpleType> 
      </xs:element> 

soapuiを使用して、以下のリクエストxmlがwsdlに準拠していることがわかりました。

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:trip="http://trip.price.service" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <soapenv:Header/> 
    <soapenv:Body> 
    <trip:getTripPrice> 
     <trip> 
     <adults>9</adults> 
     <duration>9</duration> 
     <from xsi:nil="true" /> 
     <rooms>3</rooms> 
     </trip> 
    </trip:getTripPrice> 
    </soapenv:Body> 
</soapenv:Envelope> 

私は、WSDLに準拠するように、要求からXSI名前空間を削除することができない、要求からのほぼすべての名前空間を削除だけでなく、まだ有効でxsi名前空間を削除する方法

<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <Header/> 
    <Body> 
    <getTripPrice xmlns="http://trip.price.service"> 
     <trip xmlns=""> 
     <adults>9</adults> 
     <duration>9</duration> 
     <from xsi:nil="true" /> 
     <rooms>3</rooms> 
     </trip> 
    </getTripPrice> 
    </Body> 
</Envelope> 

wsdlごとに?

+0

いいえwsdlでは、xsi名前空間やその他の名前空間を送信しないように指示できません。 – bmargulies

+0

したがって、名前空間を持つ属性があれば、それを送信する必要があります。要素の場合、要素と一緒にxmlns = "urlに対応する名前空間"を追加すると、その要素と共に名前空間について言及する必要はありません。 – Suresh

+0

名前空間接頭辞定義属性は、メッセージとWSDL /スキーマとの準拠を変更できません。 xmlns =またはプレフィックスを介してノード自体に割り当てられた実際の名前空間の1つ。 – bmargulies

答えて

0

これはXMLプロデューサ 'x'の名前空間接頭辞の使用と生成をどのように制御するのですか?あなたの場合、コメントによると、 'xml producer X is xslt'です。次に、使用しているXSLTの実装と、この特定の動作を制御するオプションがあるかどうかによって異なります。

一般に、xsltは名前空間接頭辞が構文的な砂糖だけであり、その使用を制御するための便利なメカニズムを提供しないという通常の姿勢をとっています。プレフィックスをXSLT定義の最上位に宣言することにより、プレフィックスの使用を増やすよう促すことができます。

帯域幅の使用を減らすための実際のソリューションとして圧縮をお勧めします。

+0

ありがとうございます。私はxsi:nil = "true"の代わりにnil = "true"(いくつかの名前空間宣言があるかもしれません)のように変更された上記のXMLファイル(Envelopeで始まり、soapenv:Envelopeではないxml) – Suresh

+0

このリンクからhttp://www.w3schools.com/xml/xml_namespaces.asp、「要素のデフォルトの名前空間を定義すると、すべての子要素に接頭辞を使用することができなくなります。私が必要とするのは、属性のデフォルト名前空間を定義する方法です。 – Suresh

関連する問題