esta es mi primera pregunta, por favor sea amable;)¿Solución JAXB para importar Cameleon XSD?
Tengo un problema extraño. Esencialmente me sale tres definiciones XSD como el siguiente:
PartA.xsd
targetNameSpace="PartA"
include="PartB.xsd"
PartB.xsd
<!-- no namespace definition!!! -->
PartC.xsd
targetNameSpace="PartC"
inlude="PartB.xsd"
import="PartA.xsd"
El error aparece, al enlazar Parte C a través de JAXB a las clases de Java:
- Una clase/interfaz con el mismo nombre "b. exampleType "ya está en uso. Use una personalización de clase para resolver este conflicto.
- Este error confuso se debe a que el esquema utiliza una técnica llamada "esquema de camaleón", que hace que una única definición se cargue varias veces en diferentes espacios de nombres. Consulte http://forums.java.net/jive/thread.jspa?threadID=18631 para obtener más información al respecto.
Siguiendo el enlace, me enteré, el error real se encuentra en PartB, que no tiene declaración de espacio de nombres! Este método se llama Chameleon Schema. Los tipos definidos en PartB adoptarán el espacio de nombres del importando XSD.
Así que en mi caso, hay dos espacios de nombres para el mismo tipo:
- "Parte A"
- "Parte C"
Y esto es, en el JAXB se rompe. No he encontrado una forma de vincular correctamente PartC. Y (para complicar las cosas) ¡tengo la oportunidad de cambiar las definiciones XSD originales!
¿Alguien ha encontrado este fenómeno o algo así antes y tiene una solución válida para ello?
Gracias por el enlace, pero tiene razón, no es realmente detallado. Y como no tengo acceso de escritura en el esquema, estoy atascado. ... Aunque, tal vez puedo discutir con el autor del esquema sobre "En algunos otros casos, el esquema de camaleón puede argumentarse como un mal diseño de esquema, ya que duplica las definiciones en muchos lugares". punto. – Gruber