paso - wsimport java ejemplo
¿Se pueden utilizar las afirmaciones de XSD al especificar un archivo WSDL? (1)
Parece que las aserciones se introdujeron con XML Schema v1.1 cuando la definición de XMLSchema pasó a w3.org .
Encabezado de muestra:
<wsdl:description
targetNamespace="http://www.w3.org/2002/ws/sawsdl/spec/wsdl/order#"
xmlns="http://www.w3.org/2002/ws/sawsdl/spec/wsdl/order#"
xmlns:wsdl="http://www.w3.org/ns/wsdl"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:sawsdl="http://www.w3.org/ns/sawsdl">
Tengo un archivo WSDL que también contiene todos los tipos utilizados (a través de la etiqueta <wsdl:types>
). Al definir los tipos, tengo algo como esto:
<wsdl:definitions name="service"
targetNamespace="http://www.xxx.yyy/reg/definitions" xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:tax="http://www.xxx.yyy/reg/definitions" xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
.............
<xs:complexType name="CompanyName">
<xs:sequence>
<xs:element name="Name" type="xs:string" />
<xs:element name="ShortName" type="xs:string" minOccurs="0" />
</xs:sequence>
<xs:attribute name="Language" type="tax:LanguageType" use="required"/>
<xs:assert test="ShortName or @Language != ''Language1''"/>
</xs:complexType>
.............
</wsdl:definitions>
Lamentablemente, no funciona con la siguiente excepción cuando intento iniciar la aplicación en Tomcat:
javax.xml.ws.WebServiceException: org.xml.sax.SAXParseException; s4s-elt-invalid-content.1: The content of ''CompanyName'' is invalid. Element ''assert'' is invalid, misplaced, or occurs too often.
La versión WSDL es 1.2 y no sé qué versión de xsd usa cuando se describen los tipos en ella, así que no sé si es una versión xsd (1.0 contra 1.1) o algo más.
¿Alguien puede ayudarme a encontrar el verdadero problema?
EDITAR: He agregado el encabezado del wsdl. He agregado el atributo de versión ( version="1.1"
) a <xs:schema>
definición de <xs:schema>
pero eso tampoco ayudó:
<xs:schema targetNamespace="http://www.xxx.yyy/reg/definitions" elementFormDefault="qualified" version="1.1">