Tengo un archivo WSDL que importa varios esquemas XML, cada uno de ellos con el mismo espacio de nombres (llamémoslo A). Estoy tratando de usar un archivo de enlace externo JAXB para cambiar el nombre del paquete generado (por ejemplo, B) para esos esquemas. Aquí hay un ejemplo:CXF: ¿Cómo cambiar el paquete del esquema XML importado WSDL utilizando el archivo de enlace externo JAXB?
Tengo un archivo POM que contiene la configuración para la generación de código a partir de WSDL (usando el complemento cxf-codegen-plugin).
Mi WSDL:
<definitions ...>
<types>
<xsd:schema elementFormDefault="qualified" targetNamespace="C">
<xsd:import namespace="A" schemaLocation="SCHEMA_REF"/>
<xsd:import namespace="A" schemaLocation="SCHEMA_REF"/>
...
</xsd:schema>
</types>
...
</definitions>
Aquí está mi archivo de enlace real que no funciona en absoluto, parece que no se aplica en absoluto (no mensaje de error ...).
<jaxws:bindings wsdlLocation="WSDL_LOCATION" xmlns:jaxws="http://java.sun.com/xml/ns/jaxws" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" jaxb:version="2.0">
<jaxws:bindings node="wsdl:definitions/wsdl:types/xs:schema[@targetNamespace='C']/xs:import[@namespace='A']">.
<jaxb:schemaBindings>
<jaxb:package name="B" />
</jaxb:schemaBindings>
</jaxws:bindings>
</jaxws:bindings>
Como no tengo ningún mensaje de error en la generación tal vez es debido a que la expresión XPath se utiliza para el acceso al esquema importado no es bueno ...
¿Ustedes tienen alguna idea? Estoy algo atrapado aquí ...
¡Gracias de antemano por sus entradas!
Gracias por su respuesta, no estoy trabajando en este tema en este momento, así que no puedo probar esta solución. ¡Lo haré tan pronto como pueda! – reef
Una adición: tendrá que usar el espacio de nombres "jaxb" puro para los archivos XSD, "jaxws" no funcionará con ellos. – Stas