0

外部 xsd (プロジェクト条件) を作成できないため、WSDL スキーマでローカル xsd 要素を使用できないようです。

<types>
    <xsd:schema xmlns:fs_req="urn:rg:fs_req" xmlns:sf_facto="urn:rg:sf_facto">
        <xsd:import namespace="urn:rg:sf_facto" schemaLocation="ROOT_sf_facto_SF_facto_V00_05.xsd" />
        <xsd:import namespace="urn:rg:fs_req"     schemaLocation="ROOT_fs_req_fs_req_V00_04.xsd" />

        <xsd:element name="getDetailsAction1" type="fs_req:fs_req_fs_req" /
        <xsd:element name="getDetailsAction1Response"      type="sf_facto:SF_facto_SF_facto"/>

    </xsd:schema>
</types>

xsd 要素の呼び出しの下 (有効な部分ではありません!)

<message name="detailMpaResponse">
    <part name="getDetail" element="tns:getDetailsAction1Response" />
</message>
<message name="detailMpaRequest">       
    <part name="getDetailResponse" element="tns:getDetailsAction1" />
</message>

ローカルの xsd 要素を持つ有効な wsdl を取得するにはどうすればよいですか?

4

3 に答える 3

1

<part>問題は、ノードの名前空間修飾子にあるようです。

編集:

元の投稿をよく見ると、スキーマ要素が必要な値を保持していると思います。このコードを試してみてください:

<message name="detailMpaResponse">
    <part name="getDetail" element="fs_req:getDetailsAction1Response" />
</message>
<message name="detailMpaRequest">       
    <part name="getDetailResponse" element="sf_facto:getDetailsAction1" />
</message>
于 2013-07-10T14:12:13.983 に答える
1

wsdl:types で xs:schema の新しい targetNamespace を宣言し、次のように wsdl:definitions に追加する必要があります。

<types>
    <xsd:schema xmlns:types="urn:rg:types" targetNameSpace="urn:rg:types" xmlns:fs_req="urn:rg:fs_req" xmlns:sf_facto="urn:rg:sf_facto">
        <xsd:import namespace="urn:rg:sf_facto" schemaLocation="ROOT_sf_facto_SF_facto_V00_05.xsd" />
        <xsd:import namespace="urn:rg:fs_req"     schemaLocation="ROOT_fs_req_fs_req_V00_04.xsd" />

        <xsd:element name="getDetailsAction1" type="fs_req:fs_req_fs_req" />
        <xsd:element name="getDetailsAction1Response" type="sf_facto:SF_facto_SF_facto"/>

    </xsd:schema>
</types>

次に、新しい名前空間を wsdl:definitions に追加します。

xmlns:types="urn:rg:types"

メッセージ部分でそれを参照します。

<message name="detailMpaResponse">
    <part name="getDetail" element="types:getDetailsAction1Response" />
</message>
<message name="detailMpaRequest">       
    <part name="getDetailResponse" element="types:getDetailsAction1" />
</message>

新しい名前空間は、インポートしたものと一致できません。

于 2014-06-05T11:49:09.843 に答える
0

簡単な実験 (Eclipse WSDL エディターを使用) を行ったところ、外部 XSD (WSDL ファイルと同じディレクトリー内) から「型を使用する」を選択すると、次のコードが生成されました。

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
    xmlns:tns="http://www.example.org/NewWSDLFile/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="NewWSDLFile"
    targetNamespace="http://www.example.org/NewWSDLFile/" xmlns:xsd1="http://www.example.org/NewXMLSchema">
    <wsdl:types>
        (...)
        <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
            <xsd:import namespace="http://www.example.org/NewXMLSchema"
                schemaLocation="NewXMLSchema.xsd">
            </xsd:import>
        </xsd:schema>
    </wsdl:types>
    <wsdl:message name="NewOperationRequest">
        <wsdl:part name="parameters" type="xsd1:externalSchemaParamType" />
    </wsdl:message>
    (...)

あなたの場合:「tns」は外部 XSD の名前空間ですか?

于 2013-07-10T15:36:13.730 に答える