【问题标题】:CXF element referenceCXF 元素参考
【发布时间】:2014-08-05 03:29:57
【问题描述】:

我正在尝试通过 CXF 和 Maven 运行合同优先。

我有一个位于 src/java/resource/wsdl 内的 WSDL 和位于 src/java/resources/xsd 内的 5 个 xsds

我的层次结构是这样的:

aaa.v1r0.xsd (have an element which refers to bbb.v1r0.xsd)
bbb.v1r0.xsd (have elements which refers to ccc.v1r0.xsd, ddd.v1r0.xsd and eee.v1r0.xsd)
ccc.v1r0.xsd
ddd.v1r0.xsd (have an element which refers to eee.v1r0.xsd)
eee.v1r0.xsd
aaa.v1r0.wsdl have an element which refers to aaa.v1r0.xsd

aaa.v1r0.xsd

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema elementFormDefault="qualified"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
targetNamespace="http://schemas.example.com.br/aaa"
xmlns="http://schemas.example.com.br/aaa" 
version="v1r0"
xmlns:bbb="http://schemas.example.com.br/bbb">

<xsd:import 
    namespace="http://schemas.example.com.br/bbb" 
    schemaLocation="bbb.v1r0.xsd"/>


<xsd:element name="aaa" type="Aaa"/>

<xsd:element name="aaas" type="Aaas"/>

<xsd:complexType name="Aaa">
    <xsd:sequence>
        <xsd:element name="field1" type="xsd:string" minOccurs="1" maxOccurs="1"/>
        <xsd:element name="field2" type="xsd:string" minOccurs="1" maxOccurs="1"/>
        <xsd:element ref="bbb:bbbs" minOccurs="1" maxOccurs="1"/>
    </xsd:sequence>
</xsd:complexType>

<xsd:complexType name="Aaas">
    <xsd:sequence>
        <xsd:element ref="aaa" minOccurs="0" maxOccurs="unbounded"/>
    </xsd:sequence>
</xsd:complexType>
</xsd:schema>

bbb.v1r0.xsd

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema elementFormDefault="qualified"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
targetNamespace="http://schemas.example.com.br/bbb"
xmlns="http://schemas.example.com.br/bbb" 
version="v1r0"
xmlns:ccc="http://schemas.example.com.br/ccc"
xmlns:ddd="http://schemas.example.com.br/ddd"
xmlns:eee="http://schemas.example.com.br/eee">

<xsd:import 
    namespace="http://schemas.example.com.br/ccc" 
    schemaLocation="ccc.v1r0.xsd"/>

<xsd:import 
    namespace="http://schemas.example.com.br/ddd" 
    schemaLocation="ddd.v1r0.xsd"/>

<xsd:import 
    namespace="http://schemas.example.com.br/eee"
    schemaLocation="eee.v1r0.xsd"/>

<xsd:element name="bbb" type="Bbb"/>

<xsd:element name="bbbs" type="Bbbs"/>

<xsd:complexType name="Bbb">
    <xsd:sequence>
        <xsd:element name="field1" type="xsd:dateTime" minOccurs="1" maxOccurs="1"/>
        <xsd:element name="field2" type="xsd:string" minOccurs="1" maxOccurs="1"/>
        <xsd:element name="field3" type="xsd:base64Binary" minOccurs="0" maxOccurs="1"/>
        <xsd:element ref="ccc:ccc" minOccurs="1" maxOccurs="1"/>
        <xsd:element name="field4" type="xsd:integer" minOccurs="0" maxOccurs="1"/>
        <xsd:element name="field5" type="xsd:string" minOccurs="0" maxOccurs="1"/>
        <xsd:element ref="ddd:ddd" minOccurs="1" maxOccurs="1"/>
        <xsd:element name="field6" minOccurs="0" maxOccurs="1">
            <xsd:complexType>
                <xsd:sequence>
                    <xsd:element ref="eee:eees" minOccurs="1" maxOccurs="1"/>
                </xsd:sequence>
            </xsd:complexType>
        </xsd:element>
    </xsd:sequence>
</xsd:complexType>

<xsd:complexType name="Bbbs">
    <xsd:sequence>
        <xsd:element ref="bbb" minOccurs="0" maxOccurs="unbounded"/>
    </xsd:sequence>
</xsd:complexType>
</xsd:schema>

ccc.v1r0.xsd

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema elementFormDefault="qualified"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://schemas.example.com.br/ccc"
xmlns="http://schemas.example.com.br/ccc"
version="v1r0">

<xsd:element name="ccc" type="Ccc"/>

<xsd:complexType name="Ccc">
    <xsd:sequence>
        <xsd:element name="field1" type="xsd:string" minOccurs="1" maxOccurs="1"/>
        <xsd:element name="field2" type="xsd:string" minOccurs="1" maxOccurs="1"/>
        <xsd:element name="field3" minOccurs="0" maxOccurs="1">
            <xsd:complexType>
                <xsd:sequence>
                    <xsd:element name="field1" type="xsd:double" minOccurs="1" maxOccurs="1"/>
                    <xsd:element name="field2" type="xsd:double" minOccurs="1" maxOccurs="1"/>
                </xsd:sequence>
            </xsd:complexType>
        </xsd:element>
    </xsd:sequence>
</xsd:complexType>
</xsd:schema>

ddd.v1r0.xsd

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema elementFormDefault="qualified"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
targetNamespace="http://schemas.example.com.br/ddd"
xmlns="http://schemas.example.com.br/ddd" 
version="v1r0"
xmlns:eee="http://schemas.example.com.br/eee">

<xsd:import 
    namespace="http://schemas.example.com.br/eee" 
    schemaLocation="eee.v1r0.xsd"/>

<xsd:element name="ddd" type="Ddd"/>

<xsd:element name="ddds" type="Ddds"/>

<xsd:complexType name="Ddd">
    <xsd:sequence>
        <xsd:element name="field1" type="xsd:string" minOccurs="1" maxOccurs="1"/>
        <xsd:element name="field2" type="xsd:time" minOccurs="0" maxOccurs="1"/>
        <xsd:element ref="eee:eees" minOccurs="0" maxOccurs="1"/>
    </xsd:sequence>
</xsd:complexType>

<xsd:complexType name="Ddds">
    <xsd:sequence>
        <xsd:element ref="ddd" minOccurs="1" maxOccurs="1"/>
    </xsd:sequence>
</xsd:complexType>
</xsd:schema>

eee.v1r0.xsd

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema elementFormDefault="qualified"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://schemas.example.com.br/eee"
xmlns="http://schemas.example.com.br/eee"
version="v1r0">

<xsd:element name="eee" type="Eee"/>

<xsd:element name="eees" type="Eees"/>

<xsd:complexType name="Eee">
    <xsd:sequence>
        <xsd:element name="field1" type="xsd:string" minOccurs="1" maxOccurs="1"/>
        <xsd:element name="field2" type="xsd:string" minOccurs="0" maxOccurs="1"/>
        <xsd:element name="field3" type="xsd:string" minOccurs="1" maxOccurs="1"/>
        <xsd:element name="field4" type="xsd:integer" minOccurs="0" maxOccurs="1"/>
        <xsd:element name="field5" minOccurs="0" maxOccurs="1">
            <xsd:complexType>
                <xsd:sequence>
                    <xsd:element name="field1" type="xsd:string" minOccurs="1" maxOccurs="unbounded"/>
                </xsd:sequence>
            </xsd:complexType>
        </xsd:element>
    </xsd:sequence>
</xsd:complexType>

<xsd:complexType name="Eees">
    <xsd:sequence>
        <xsd:element ref="eee" minOccurs="1" maxOccurs="unbounded"/>
    </xsd:sequence>
</xsd:complexType>
</xsd:schema>

aaa.v1r0.wsdl

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<wsdl:definitions 
name="evento.v1r0"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" 
xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" 
targetNamespace="http://services.example.com.br/aaa"
xmlns:tns="http://services.example.com.br/aaa">

<wsdl:types>
    <xsd:schema
        elementFormDefault="qualified"
        targetNamespace="http://services.example.com.br/aaa"
        xmlns:aaa="http://schemas.example.com.br/aaa">

        <xsd:import 
            namespace="http://schemas.example.com.br/aaa"
            schemaLocation="../xsd/aaa.v1r0.xsd"/>

        <xsd:element name="capacity01Request">
            <xsd:complexType>
                <xsd:sequence>
                    <xsd:element ref="aaa:aaa" minOccurs="1" maxOccurs="1"/>
                </xsd:sequence>
            </xsd:complexType>
        </xsd:element>

        <xsd:element name="capacity01Response">
            <xsd:complexType>
                <xsd:sequence>
                    <xsd:element name="field1" type="xsd:integer" minOccurs="1" maxOccurs="1"/>
                </xsd:sequence>
            </xsd:complexType>
        </xsd:element>

        <xsd:element name="capacity02Request">
            <xsd:complexType>
                <xsd:sequence>
                    <xsd:element name="field1" type="xsd:string" minOccurs="0" maxOccurs="1"/>
                    <xsd:element name="field2" type="xsd:date" minOccurs="0" maxOccurs="1"/>
                </xsd:sequence>
            </xsd:complexType>
        </xsd:element>

        <xsd:element name="capacity02Response">
            <xsd:complexType>
                <xsd:sequence>
                    <xsd:element name="field01" minOccurs="0" maxOccurs="1">
                        <xsd:complexType>
                            <xsd:sequence>
                                <xsd:element name="field02" minOccurs="1" maxOccurs="unbounded">
                                    <xsd:complexType>
                                        <xsd:sequence>
                                            <xsd:element name="field03" type="xsd:string" minOccurs="1" maxOccurs="1"/>
                                            <xsd:element name="field04" type="xsd:string" minOccurs="1" maxOccurs="1"/>
                                            <xsd:element name="field05" minOccurs="1" maxOccurs="1">
                                                <xsd:complexType>
                                                    <xsd:sequence>
                                                        <xsd:element name="field06" minOccurs="1" maxOccurs="unbounded">
                                                            <xsd:complexType>
                                                                <xsd:sequence>
                                                                    <xsd:element name="field07" type="xsd:dateTime" minOccurs="1" maxOccurs="1"/>
                                                                    <xsd:element name="field08" type="xsd:string" minOccurs="1" maxOccurs="1"/>
                                                                    <xsd:element name="field09" type="xsd:base64Binary" minOccurs="0" maxOccurs="1"/>
                                                                    <xsd:element name="field10" minOccurs="1" maxOccurs="1">
                                                                        <xsd:complexType>
                                                                            <xsd:sequence>
                                                                                <xsd:element name="field11" type="xsd:string" minOccurs="1" maxOccurs="1"/>
                                                                                <xsd:element name="field12" type="xsd:string" minOccurs="1" maxOccurs="1"/>
                                                                            </xsd:sequence>
                                                                        </xsd:complexType>
                                                                    </xsd:element>
                                                                    <xsd:element name="field13" type="xsd:integer" minOccurs="0" maxOccurs="1"/>
                                                                </xsd:sequence>
                                                            </xsd:complexType>
                                                        </xsd:element>
                                                    </xsd:sequence>
                                                </xsd:complexType>
                                            </xsd:element>
                                        </xsd:sequence>
                                    </xsd:complexType>
                                </xsd:element>
                            </xsd:sequence>
                        </xsd:complexType>
                    </xsd:element>
                </xsd:sequence>
            </xsd:complexType>
        </xsd:element>

        <xsd:element name="capacity03Request">
            <xsd:complexType>
                <xsd:sequence>
                    <xsd:element name="field01" type="xsd:string" minOccurs="0" maxOccurs="1"/>
                    <xsd:element name="field02" type="xsd:date" minOccurs="0" maxOccurs="1"/>
                </xsd:sequence>
            </xsd:complexType>
        </xsd:element>

        <xsd:element name="capacity03Response">
            <xsd:complexType>
                <xsd:sequence>
                    <xsd:element ref="aaa:aaas" minOccurs="0" maxOccurs="1"/>
                </xsd:sequence>
            </xsd:complexType>
        </xsd:element>

        <xsd:element name="capacity04Request">
            <xsd:complexType>
                <xsd:sequence>
                    <xsd:element name="field01" type="xsd:string" minOccurs="1" maxOccurs="1"/>
                    <xsd:element name="field02" type="xsd:string" minOccurs="0" maxOccurs="1"/>
                    <xsd:element name="field03" minOccurs="0" maxOccurs="1">
                        <xsd:complexType>
                            <xsd:sequence>
                                <xsd:element name="field04" type="xsd:date" minOccurs="0" maxOccurs="1"/>
                                <xsd:element name="field05" type="xsd:string" minOccurs="0" maxOccurs="1"/>
                            </xsd:sequence>
                        </xsd:complexType>
                    </xsd:element>
                </xsd:sequence>
            </xsd:complexType>
        </xsd:element>

        <xsd:element name="capacity04Response">
            <xsd:complexType>
                <xsd:sequence>
                    <xsd:element ref="aaa:aaas" minOccurs="0" maxOccurs="1"/>
                </xsd:sequence>
            </xsd:complexType>
        </xsd:element>

        <xsd:element name="AaaError">
            <xsd:complexType>
                <xsd:sequence>
                    <xsd:element name="field01" type="xsd:string" minOccurs="1" maxOccurs="1"/>
                </xsd:sequence>
            </xsd:complexType>
        </xsd:element>
    </xsd:schema>
</wsdl:types>

<wsdl:message name="requestcapacity01">
    <wsdl:part name="capacity01Request" element="tns:capacity01Request"/>
</wsdl:message>

<wsdl:message name="responsecapacity01">
    <wsdl:part name="capacity01Response" element="tns:capacity01Response"/>
</wsdl:message>

<wsdl:message name="requestcapacity02">
    <wsdl:part name="capacity02Request" element="tns:capacity02Request"/>
</wsdl:message>

<wsdl:message name="responsecapacity02">
    <wsdl:part name="capacity02Response" element="tns:capacity02Response"/>
</wsdl:message>

<wsdl:message name="requestcapacity03">
    <wsdl:part name="capacity03Request" element="tns:capacity03Request"/>
</wsdl:message>

<wsdl:message name="responsecapacity03">
    <wsdl:part name="capacity03Response" element="tns:capacity03Response"/>
</wsdl:message>

<wsdl:message name="requestcapacity04">
    <wsdl:part name="capacity04Request" element="tns:capacity04Request"/>
</wsdl:message>

<wsdl:message name="responsecapacity04">
    <wsdl:part name="capacity04Response" element="tns:capacity04Response"/>
</wsdl:message>

<wsdl:message name="AaaError">
    <wsdl:part name="AaaError" element="tns:AaaError"/>
</wsdl:message>

<wsdl:portType name="eventoPortType">
    <wsdl:operation name="capacity01">
        <wsdl:input message="tns:requestcapacity01"/>
        <wsdl:output message="tns:responsecapacity01"/>
        <wsdl:fault name="error" message="tns:AaaError"/>
    </wsdl:operation>

    <wsdl:operation name="capacity02">
        <wsdl:input message="tns:requestcapacity02"/>
        <wsdl:output message="tns:responsecapacity02"/>
        <wsdl:fault name="error" message="tns:AaaError"/>
    </wsdl:operation>

    <wsdl:operation name="capacity03">
        <wsdl:input message="tns:requestcapacity03"/>
        <wsdl:output message="tns:responsecapacity03"/>
        <wsdl:fault name="error" message="tns:AaaError"/>
    </wsdl:operation>

    <wsdl:operation name="capacity04">
        <wsdl:input message="tns:requestcapacity04"/>
        <wsdl:output message="tns:responsecapacity04"/>
        <wsdl:fault name="error" message="tns:AaaError"/>
    </wsdl:operation>
</wsdl:portType>

<wsdl:binding name="eventoSOAP11Binding" type="tns:eventoPortType">
    <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>

    <wsdl:operation name="capacity01">
        <soap:operation style="document" soapAction="" />
        <wsdl:input>
            <soap:body use="literal" />
        </wsdl:input>
        <wsdl:output>
            <soap:body use="literal" />
        </wsdl:output>
        <wsdl:fault name="error">
            <soap:fault name="error" use="literal" />
        </wsdl:fault>
    </wsdl:operation>

    <wsdl:operation name="capacity02">
        <soap:operation style="document" soapAction=""/>
        <wsdl:input>
            <soap:body use="literal" />
        </wsdl:input>
        <wsdl:output>
            <soap:body use="literal" />
        </wsdl:output>
        <wsdl:fault name="error">
            <soap:fault name="error" use="literal" />
        </wsdl:fault>
    </wsdl:operation>

    <wsdl:operation name="capacity03">
        <soap:operation style="document" soapAction=""/>
        <wsdl:input>
            <soap:body use="literal" />
        </wsdl:input>
        <wsdl:output>
            <soap:body use="literal" />
        </wsdl:output>
        <wsdl:fault name="error">
            <soap:fault name="error" use="literal" />
        </wsdl:fault>
    </wsdl:operation>

    <wsdl:operation name="capacity04">
        <soap:operation style="document" soapAction=""/>
        <wsdl:input>
            <soap:body use="literal" />
        </wsdl:input>
        <wsdl:output>
            <soap:body use="literal" />
        </wsdl:output>
        <wsdl:fault name="error">
            <soap:fault name="error" use="literal" />
        </wsdl:fault>
    </wsdl:operation>
</wsdl:binding>

<wsdl:service name="aaaService">
    <wsdl:port name="AaaPort" binding="tns:eventoSOAP11Binding">
        <soap:address location="http://localhost:8080/aaa-service/services/aaa"/>
    </wsdl:port>
</wsdl:service>
</wsdl:definitions>

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>br.com.exampleapp</groupId>
<artifactId>aaa-service</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>aaa-service Maven Webapp</name>
<url>http://maven.apache.org</url>

<properties>
    <cxf.version>3.0.1</cxf.version>
    <jdk.version>1.7</jdk.version>
    <maven-compiler.version>3.1</maven-compiler.version>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <spring.version>4.0.6.RELEASE</spring.version>
</properties>

<dependencies>
    <dependency>
        <groupId>org.apache.cxf</groupId>
        <artifactId>cxf-rt-frontend-jaxws</artifactId>
        <version>${cxf.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-web</artifactId>
        <version>${spring.version}</version>
    </dependency>
</dependencies>

<build>
    <finalName>aaa-service</finalName>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>${maven-compiler.version}</version>
            <configuration>
                <source>${jdk.version}</source>
                <target>${jdk.version}</target>
                <encoding></encoding>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-codegen-plugin</artifactId>
            <version>${cxf.version}</version>
            <executions>
                <execution>
                    <id>generate-sources</id>
                    <phase>generate-sources</phase>
                    <configuration>
                        <sourceRoot>${basedir}/src/main/java</sourceRoot>
                        <wsdlOptions>
                            <wsdlOption>
                                <wsdl>${basedir}/src/main/resources/wsdl/aaa.v1r0.wsdl</wsdl>
                                <extraargs>
                                    <extraarg>-impl</extraarg>
                                </extraargs>
                            </wsdlOption>
                        </wsdlOptions>
                    </configuration>
                    <goals>
                        <goal>wsdl2java</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>
</project>

applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns:jaxws="http://cxf.apache.org/jaxws"
  xsi:schemaLocation="
     http://www.springframework.org/schema/beans 
     http://www.springframework.org/schema/beans/spring-beans.xsd
     http://cxf.apache.org/jaxws
     http://cxf.apache.org/schemas/jaxws.xsd">

<jaxws:endpoint 
    id="aaa"
    implementor="br.com.example.services.aaa.AaaPortImpl"
    wsdlLocation="wsdl/aaa.v1r0.wsdl"
    address="/aaa">
</jaxws:endpoint>
</beans>

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee  /web-app_2_5.xsd">
<display-name>Sample web service provider</display-name>
<listener>
    <listener-class>
         org.springframework.web.context.ContextLoaderListener
    </listener-class>
</listener>
<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>WEB-INF/applicationContext.xml</param-value>
</context-param>
<servlet>
    <servlet-name>CXFServlet</servlet-name>
    <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>CXFServlet</servlet-name>
    <url-pattern>/services/*</url-pattern>
</servlet-mapping>
<session-config>
    <session-timeout>60</session-timeout>
</session-config>
</web-app>

当我在 Tomcat 服务器中运行我的项目时,我可以通过 http://localhost:8080/aaa-service/services/aaa?wsdl 访问 WSDL 配置

但是,当我尝试通过 SOAPUI 测试此配置时,我收到一条消息,指出加载 WSDL 时出错

来源为空

找不到错误元素bbbs@http://schemas.example.com.br/bbb

我做错了什么?是否有一些配置来引用元素?

【问题讨论】:

  • 对不起,代码空格,我尝试了很多把它放在一个更好的方式,但它没有根据 StackOverFlow 验证工作

标签: web-services wsdl cxf wsdl2java contract-first


【解决方案1】:

添加import语句将其他xsd导入wsdl

<xsd:import namespace="http://schemas.example.com.br/bbb" schemaLocation="../xsd/bbb.v1r0.xsd" />
            <xsd:import namespace="http://schemas.example.com.br/ccc" schemaLocation="../xsd/ccc.v1r0.xsd" />
            <xsd:import namespace="http://schemas.example.com.br/ddd" schemaLocation="../xsd/ddd.v1r0.xsd" />
            <xsd:import namespace="http://schemas.example.com.br/eee" schemaLocation="../xsd/eee.v1r0.xsd" />

您的 wsdl 如下所示

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<wsdl:definitions name="evento.v1r0" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" targetNamespace="http://services.example.com.br/aaa" xmlns:tns="http://services.example.com.br/aaa">

    <wsdl:types>
        <xsd:schema elementFormDefault="qualified" targetNamespace="http://services.example.com.br/aaa" xmlns:aaa="http://schemas.example.com.br/aaa">

            <xsd:import namespace="http://schemas.example.com.br/aaa" schemaLocation="../xsd/aaa.v1r0.xsd" />
            <xsd:import namespace="http://schemas.example.com.br/bbb" schemaLocation="../xsd/bbb.v1r0.xsd" />
            <xsd:import namespace="http://schemas.example.com.br/ccc" schemaLocation="../xsd/ccc.v1r0.xsd" />
            <xsd:import namespace="http://schemas.example.com.br/ddd" schemaLocation="../xsd/ddd.v1r0.xsd" />
            <xsd:import namespace="http://schemas.example.com.br/eee" schemaLocation="../xsd/eee.v1r0.xsd" />

            <xsd:element name="capacity01Request">
                <xsd:complexType>
                    <xsd:sequence>
                        <xsd:element ref="aaa:aaa" minOccurs="1" maxOccurs="1" />
                    </xsd:sequence>
                </xsd:complexType>
            </xsd:element>

            <xsd:element name="capacity01Response">
                <xsd:complexType>
                    <xsd:sequence>
                        <xsd:element name="field1" type="xsd:integer" minOccurs="1" maxOccurs="1" />
                    </xsd:sequence>
                </xsd:complexType>
            </xsd:element>

            <xsd:element name="capacity02Request">
                <xsd:complexType>
                    <xsd:sequence>
                        <xsd:element name="field1" type="xsd:string" minOccurs="0" maxOccurs="1" />
                        <xsd:element name="field2" type="xsd:date" minOccurs="0" maxOccurs="1" />
                    </xsd:sequence>
                </xsd:complexType>
            </xsd:element>

            <xsd:element name="capacity02Response">
                <xsd:complexType>
                    <xsd:sequence>
                        <xsd:element name="field01" minOccurs="0" maxOccurs="1">
                            <xsd:complexType>
                                <xsd:sequence>
                                    <xsd:element name="field02" minOccurs="1" maxOccurs="unbounded">
                                        <xsd:complexType>
                                            <xsd:sequence>
                                                <xsd:element name="field03" type="xsd:string" minOccurs="1" maxOccurs="1" />
                                                <xsd:element name="field04" type="xsd:string" minOccurs="1" maxOccurs="1" />
                                                <xsd:element name="field05" minOccurs="1" maxOccurs="1">
                                                    <xsd:complexType>
                                                        <xsd:sequence>
                                                            <xsd:element name="field06" minOccurs="1" maxOccurs="unbounded">
                                                                <xsd:complexType>
                                                                    <xsd:sequence>
                                                                        <xsd:element name="field07" type="xsd:dateTime" minOccurs="1" maxOccurs="1" />
                                                                        <xsd:element name="field08" type="xsd:string" minOccurs="1" maxOccurs="1" />
                                                                        <xsd:element name="field09" type="xsd:base64Binary" minOccurs="0" maxOccurs="1" />
                                                                        <xsd:element name="field10" minOccurs="1" maxOccurs="1">
                                                                            <xsd:complexType>
                                                                                <xsd:sequence>
                                                                                    <xsd:element name="field11" type="xsd:string" minOccurs="1" maxOccurs="1" />
                                                                                    <xsd:element name="field12" type="xsd:string" minOccurs="1" maxOccurs="1" />
                                                                                </xsd:sequence>
                                                                            </xsd:complexType>
                                                                        </xsd:element>
                                                                        <xsd:element name="field13" type="xsd:integer" minOccurs="0" maxOccurs="1" />
                                                                    </xsd:sequence>
                                                                </xsd:complexType>
                                                            </xsd:element>
                                                        </xsd:sequence>
                                                    </xsd:complexType>
                                                </xsd:element>
                                            </xsd:sequence>
                                        </xsd:complexType>
                                    </xsd:element>
                                </xsd:sequence>
                            </xsd:complexType>
                        </xsd:element>
                    </xsd:sequence>
                </xsd:complexType>
            </xsd:element>

            <xsd:element name="capacity03Request">
                <xsd:complexType>
                    <xsd:sequence>
                        <xsd:element name="field01" type="xsd:string" minOccurs="0" maxOccurs="1" />
                        <xsd:element name="field02" type="xsd:date" minOccurs="0" maxOccurs="1" />
                    </xsd:sequence>
                </xsd:complexType>
            </xsd:element>

            <xsd:element name="capacity03Response">
                <xsd:complexType>
                    <xsd:sequence>
                        <xsd:element ref="aaa:aaas" minOccurs="0" maxOccurs="1" />
                    </xsd:sequence>
                </xsd:complexType>
            </xsd:element>

            <xsd:element name="capacity04Request">
                <xsd:complexType>
                    <xsd:sequence>
                        <xsd:element name="field01" type="xsd:string" minOccurs="1" maxOccurs="1" />
                        <xsd:element name="field02" type="xsd:string" minOccurs="0" maxOccurs="1" />
                        <xsd:element name="field03" minOccurs="0" maxOccurs="1">
                            <xsd:complexType>
                                <xsd:sequence>
                                    <xsd:element name="field04" type="xsd:date" minOccurs="0" maxOccurs="1" />
                                    <xsd:element name="field05" type="xsd:string" minOccurs="0" maxOccurs="1" />
                                </xsd:sequence>
                            </xsd:complexType>
                        </xsd:element>
                    </xsd:sequence>
                </xsd:complexType>
            </xsd:element>

            <xsd:element name="capacity04Response">
                <xsd:complexType>
                    <xsd:sequence>
                        <xsd:element ref="aaa:aaas" minOccurs="0" maxOccurs="1" />
                    </xsd:sequence>
                </xsd:complexType>
            </xsd:element>

            <xsd:element name="AaaError">
                <xsd:complexType>
                    <xsd:sequence>
                        <xsd:element name="field01" type="xsd:string" minOccurs="1" maxOccurs="1" />
                    </xsd:sequence>
                </xsd:complexType>
            </xsd:element>
        </xsd:schema>
    </wsdl:types>

    <wsdl:message name="requestcapacity01">
        <wsdl:part name="capacity01Request" element="tns:capacity01Request" />
    </wsdl:message>

    <wsdl:message name="responsecapacity01">
        <wsdl:part name="capacity01Response" element="tns:capacity01Response" />
    </wsdl:message>

    <wsdl:message name="requestcapacity02">
        <wsdl:part name="capacity02Request" element="tns:capacity02Request" />
    </wsdl:message>

    <wsdl:message name="responsecapacity02">
        <wsdl:part name="capacity02Response" element="tns:capacity02Response" />
    </wsdl:message>

    <wsdl:message name="requestcapacity03">
        <wsdl:part name="capacity03Request" element="tns:capacity03Request" />
    </wsdl:message>

    <wsdl:message name="responsecapacity03">
        <wsdl:part name="capacity03Response" element="tns:capacity03Response" />
    </wsdl:message>

    <wsdl:message name="requestcapacity04">
        <wsdl:part name="capacity04Request" element="tns:capacity04Request" />
    </wsdl:message>

    <wsdl:message name="responsecapacity04">
        <wsdl:part name="capacity04Response" element="tns:capacity04Response" />
    </wsdl:message>

    <wsdl:message name="AaaError">
        <wsdl:part name="AaaError" element="tns:AaaError" />
    </wsdl:message>

    <wsdl:portType name="eventoPortType">
        <wsdl:operation name="capacity01">
            <wsdl:input message="tns:requestcapacity01" />
            <wsdl:output message="tns:responsecapacity01" />
            <wsdl:fault name="error" message="tns:AaaError" />
        </wsdl:operation>

        <wsdl:operation name="capacity02">
            <wsdl:input message="tns:requestcapacity02" />
            <wsdl:output message="tns:responsecapacity02" />
            <wsdl:fault name="error" message="tns:AaaError" />
        </wsdl:operation>

        <wsdl:operation name="capacity03">
            <wsdl:input message="tns:requestcapacity03" />
            <wsdl:output message="tns:responsecapacity03" />
            <wsdl:fault name="error" message="tns:AaaError" />
        </wsdl:operation>

        <wsdl:operation name="capacity04">
            <wsdl:input message="tns:requestcapacity04" />
            <wsdl:output message="tns:responsecapacity04" />
            <wsdl:fault name="error" message="tns:AaaError" />
        </wsdl:operation>
    </wsdl:portType>

    <wsdl:binding name="eventoSOAP11Binding" type="tns:eventoPortType">
        <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />

        <wsdl:operation name="capacity01">
            <soap:operation style="document" soapAction="" />
            <wsdl:input>
                <soap:body use="literal" />
            </wsdl:input>
            <wsdl:output>
                <soap:body use="literal" />
            </wsdl:output>
            <wsdl:fault name="error">
                <soap:fault name="error" use="literal" />
            </wsdl:fault>
        </wsdl:operation>

        <wsdl:operation name="capacity02">
            <soap:operation style="document" soapAction="" />
            <wsdl:input>
                <soap:body use="literal" />
            </wsdl:input>
            <wsdl:output>
                <soap:body use="literal" />
            </wsdl:output>
            <wsdl:fault name="error">
                <soap:fault name="error" use="literal" />
            </wsdl:fault>
        </wsdl:operation>

        <wsdl:operation name="capacity03">
            <soap:operation style="document" soapAction="" />
            <wsdl:input>
                <soap:body use="literal" />
            </wsdl:input>
            <wsdl:output>
                <soap:body use="literal" />
            </wsdl:output>
            <wsdl:fault name="error">
                <soap:fault name="error" use="literal" />
            </wsdl:fault>
        </wsdl:operation>

        <wsdl:operation name="capacity04">
            <soap:operation style="document" soapAction="" />
            <wsdl:input>
                <soap:body use="literal" />
            </wsdl:input>
            <wsdl:output>
                <soap:body use="literal" />
            </wsdl:output>
            <wsdl:fault name="error">
                <soap:fault name="error" use="literal" />
            </wsdl:fault>
        </wsdl:operation>
    </wsdl:binding>

    <wsdl:service name="aaaService">
        <wsdl:port name="AaaPort" binding="tns:eventoSOAP11Binding">
            <soap:address location="http://localhost:8080/aaa-service/services/aaa" />
        </wsdl:port>
    </wsdl:service>
</wsdl:definitions>

【讨论】:

  • Thx @Karthik Prasad,我认为如果一个 XSD 导入另一个,一切都会好起来的。我改了,至少那个问题没有再出现
猜你喜欢
  • 2013-06-29
  • 1970-01-01
  • 2017-03-11
  • 1970-01-01
  • 1970-01-01
  • 2015-08-25
  • 2016-05-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多