2017-05-14 12 views
1

解決策を検索しようとしましたが、成功しませんでした。要素 'wsdl:definitions'の宣言が見つかりません

私は次のエラーを取得していますXSDと私のXMLファイルを検証しようとしています:

"cvc-elt.1: Cannot find the declaration of element 'wsdl:definitions'"

私はhttp://www.xmlvalidation.com/index.phpでそれを検証するのですか?他のバリデータで

は私が取得しています:

element definitions: Schemas validity error : Element '{ http://schemas.xmlsoap.org/wsdl/ }definitions': No matching global declaration available for the validation root.

マイXML/WSDLファイルを

<?xml version='1.0' encoding='UTF-8'?><wsdl:definitions xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://com.my.company/IFBTCIBPSI" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" name="IFBTCIBPSI" targetNamespace="http://com.my.company/IFBTCIBPSI"> 
    <wsdl:types> 
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://com.my.company/IFBTCIBPSI" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:QF2="urn:http://com.my.company/RSException_ARRAY" xmlns:QF1="urn:http://com.my.company/RSErrorMessage_ARRAY" xmlns:Q5="urn:com/EXCEPTION_ARRAY" xmlns:Q4="urn:com/IMOFDA" xmlns:Q3="urn:com/IMOC" xmlns:Q2="urn:com/IMIC" targetNamespace="http://com.my.company/IFBTCIBPSI"> 
    <xsd:import namespace="urn:http://com.my.company/RSErrorMessage_ARRAY" schemaLocation="http://mycompany.com/IFBTCIBPSI?xsd=RSErrorMessage_ARRAY.xsd" /> 
    <xsd:import namespace="urn:http://com.my.company/RSException_ARRAY" schemaLocation="http://mycompany.com/IFBTCIBPSI?xsd=RSException_ARRAY.xsd" /> 
    <xsd:import namespace="urn:com/IMIC" schemaLocation="http://mycompany.com/IFBTCIBPSI?xsd=IMIC.xsd" /> 
    <xsd:import namespace="urn:com/IMOC" schemaLocation="http://mycompany.com/IFBTCIBPSI?xsd=IMOC.xsd" /> 
    <xsd:import namespace="urn:com/IMOFDA" schemaLocation="http://mycompany.com/IFBTCIBPSI?xsd=IMOFDA.xsd" /> 
    <xsd:import namespace="urn:com/EXCEPTION_ARRAY" schemaLocation="http://mycompany.com/IFBTCIBPSI?xsd=EXCEPTION_ARRAY.xsd" /> 
    <xsd:element name="IFBTCIBP"> 
    <xsd:complexType> 
     <xsd:sequence> 
     <xsd:element ref="Q2:IMIC" /> 
     <xsd:element ref="Q5:EXCEPTION_ARRAY" /> 
     </xsd:sequence> 
    </xsd:complexType> 
    </xsd:element> 
    <xsd:element name="IFBTCIBPR"> 
    <xsd:complexType> 
     <xsd:sequence> 
     <xsd:element ref="Q3:IMOC" /> 
     <xsd:element ref="Q4:IMOFDA" /> 
     </xsd:sequence> 
    </xsd:complexType> 
    </xsd:element> 
    <xsd:element name="RSError"> 
    <xsd:complexType> 
     <xsd:sequence> 
     <xsd:element ref="QF1:RSErrorMessage_ARRAY" /> 
     <xsd:element ref="QF2:RSException_ARRAY" /> 
     </xsd:sequence> 
    </xsd:complexType> 
    </xsd:element> 
</xsd:schema> 
    </wsdl:types> 
    <wsdl:message name="IFBTCIBPR"> 
    <wsdl:part element="tns:IFBTCIBPR" name="parameters"> 
    </wsdl:part> 
    </wsdl:message> 
    <wsdl:message name="RSError"> 
    <wsdl:part element="tns:RSError" name="fault"> 
    </wsdl:part> 
    </wsdl:message> 
    <wsdl:message name="IFBTCIBP"> 
    <wsdl:part element="tns:IFBTCIBP" name="parameters"> 
    </wsdl:part> 
    </wsdl:message> 
    <wsdl:portType name="IFBTCIBPSI"> 
    <wsdl:operation name="IFBTCIBP"> 
<wsdl:documentation /> 
     <wsdl:input message="tns:IFBTCIBP"> 
    </wsdl:input> 
     <wsdl:output message="tns:IFBTCIBPR"> 
    </wsdl:output> 
     <wsdl:fault message="tns:RSError" name="fault"> 
    </wsdl:fault> 
    </wsdl:operation> 
    </wsdl:portType> 
    <wsdl:binding name="IFBTCIBPSI" type="tns:IFBTCIBPSI"> 
    <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" /> 
    <wsdl:operation name="IFBTCIBP"> 
     <soap:operation soapAction="http://com.my.company/IFBTCIBPSI/IFBTCIBP" /> 
     <wsdl:input> 
     <soap:body use="literal" /> 
     </wsdl:input> 
     <wsdl:output> 
     <soap:body use="literal" /> 
     </wsdl:output> 
     <wsdl:fault name="fault"> 
     <soap:fault name="fault" use="literal" /> 
     </wsdl:fault> 
    </wsdl:operation> 
    </wsdl:binding> 
    <wsdl:service name="IFBTCIBPSI"> 
<wsdl:documentation /> 
    <wsdl:port binding="tns:IFBTCIBPSI" name="IFBTCIBPSHttpS11Ep"> 
     <soap:address location="http://mycompany.com/IFBTCIBPSI" /> 
    </wsdl:port> 
    </wsdl:service> 
</wsdl:definitions> 

私のXSDファイルがあるさ:

<?xml version='1.0' encoding='UTF-8'?><xsd:schema 
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="urn:com/IMIC" 
targetNamespace="urn:com/IMIC"> 
<xsd:annotation> 
    <xsd:documentation> 
    </xsd:documentation> 
</xsd:annotation> 
<xsd:element name="IMIC"> 
    <xsd:complexType> 
     <xsd:sequence> 
      <xsd:element minOccurs="1" ref="ID" /> 
      <xsd:element minOccurs="1" ref="IT" /> 
      <xsd:element minOccurs="1" ref="CT" /> 
      <xsd:element minOccurs="1" ref="MI" /> 
      <xsd:element minOccurs="1" ref="KBC" /> 
      <xsd:element minOccurs="1" ref="TT" /> 
      <xsd:element minOccurs="1" ref="TI" /> 
      <xsd:element minOccurs="1" ref="CN" /> 
      <xsd:element minOccurs="0" ref="ST" /> 
     </xsd:sequence> 
    </xsd:complexType> 
</xsd:element> 
<xsd:element name="ID" type="xsd:date" /> 
<xsd:element name="IT" type="xsd:integer" /> 
<xsd:element name="CT" type="xsd:integer" /> 
<xsd:element name="MI" type="xsd:integer" /> 
<xsd:element name="KBC" type="xsd:integer" /> 
<xsd:element name="TT" type="xsd:integer" /> 
<xsd:element name="TI" type="xsd:string" /> 
<xsd:element name="CN" type="xsd:string" /> 
<xsd:element name="ST" type="xsd:integer" /> 
</xsd:schema> 

してくださいあなたの助け。

ありがとうございます!

答えて

0

XMLドキュメントは、(WSDL)という名前空間に最上位の要素を持つため、XML Schema for WSDLに対して検証する必要があります。

XMLスキーマがwsdl:typesの中にネストされているため、スコープ内に「スキーマのスキーマ」(XMLスキーマのXMLスキーマ)も必要です。この部分も正しく検証されることを確認してください。

(それは、ネストされたスキーマによってインポートされるよう)(urn:com/IMIC用)の質問に参照されるスキーマは、限り、私はそれを理解するようではなく、WSDL文書のため、実際のSOAPデータに関連します。見かけ上の複雑さは、検証の二つのレベルから来ている:WSDLに対する一方のSOAPデータ上

  • (ネストされたXMLスキーマに対して含む)
  • 一方、「メタスキーマに対して検証WSDLドキュメント"(この質問のトピック)。

一度に1つのレベルでのみ判断することが重要です。

xmlvalidation.comとほとんどのXMLスキーマ検証エンジンで検証するには、スキーマの場所にxsi:schemaLocation属性を指定する必要があります。この属性は、スキーマの名前空間、その場所(WSDLの場合は名前空間と同じです)、別のスキーマの名前空間、場所などをURLのリストで指定します.2つのスキーマが必要なので、次のように4つのURLになります。 xmlvalidation.comは、それがために要求することを二つのファイル(XMLSchema.dtdとdatatypes.dtd)を欠けているように思わ

<wsdl:definitions 
    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" 
    xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
    xmlns:tns="http://com.my.company/IFBTCIBPSI" 
    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" 
    name="IFBTCIBPSI" 
    targetNamespace="http://com.my.company/IFBTCIBPSI" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://schemas.xmlsoap.org/wsdl/ 
         http://schemas.xmlsoap.org/wsdl/ 
         http://www.w3.org/2001/XMLSchema 
         https://www.w3.org/2001/XMLSchema.xsd" > 
    <!-- rest of document --> 
</wsdl:definitions/> 

注意。それがない場合は、あなただけのこれらの場所からコピーして貼り付けることができます:私の側にhttps://www.w3.org/2001/datatypes.dtd

https://www.w3.org/2001/XMLSchema.dtd

    • が、検証はその後、(見つかったエラーを)成功しないように思われます。またoXygenは文句を言っていません。

  • +0

    こんにちはGhislain、あなたの答えをありがとう、私に教えてください/私にその問題を解決することができますか教えていただけますか?ありがとう!!! – Matan

    +0

    こんにちはマタン、はい、私はxmlvalidation.com(xsi:schemaLocationは標準化されているので、他のエンジンも同様に理解する必要があります)に固有の指示で回答を完了しました。私はこれが役立つことを願っています –

    +0

    こんにちはGhislain! まずは、お手数をお掛けいただきありがとうございます。非常に感謝しています! あなたの解決策を確認しました。[xmlvalidation.com] [1] の.dtdファイルを使用して検証を受けています。問題は、バリデーションが追加の外部スキーマ/ファイルなしで** xmllint ** linuxバリデーターを通過する必要があることです。 外部の.dtdファイルの使用を避けるために、ファイルを編集/変更/簡略化することは可能ですか? もう一度ありがとうございます! [1]:http://xmlvalidation.com – Matan

    関連する問題