net - xsd to java jaxb
JAXB esquemas mĂșltiples con referencia de elemento (1)
Tengo dos esquemas que se procesan utilizando JAXB. El primer esquema está preprocesado y la información de este se utiliza mediante un archivo de episodio (siguiendo http://www.java.net/blog/2006/09/05/separate-compilation-jaxb-ri-21 ). El segundo esquema importa el primero, y nuevamente utilizando jaxb, se procesa. Todo esto funciona como se esperaba.
Pero ahora tengo un elemento en el primer esquema, que se usa en el segundo usando una referencia.
Esquema a:
<schema elementFormDefault="qualified" xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:test="http://www.example.org/Test/"
targetNamespace="http://www.example.org/Test/">
<element name="type" type="test:MyType"></element>
Esquema b:
<schema elementFormDefault="qualified"
xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:second="http://www.example.org/Second/"
xmlns:test="http://www.example.org/Test/"
targetNamespace="http://www.example.org/Second/">
<import namespace="http://www.example.org/Test/" />
<complexType name="SomeType">
<sequence>
<element ref="test:type" minOccurs="1" maxOccurs="unbounded" />
</sequence>
</complexType>
Durante el procesamiento, nada es incorrecto, pero el código generado para ambos esquemas proporciona el mismo método:
public JAXBElement<EventType> createType(TypeType value)
En tiempo de ejecución, esto produce el siguiente error:
com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException: 1 counts of
IllegalAnnotationExceptions
The element name {http://www.example.org/Type/}type has more than one mapping.
¿Cómo puedo evitar que JAXB cree los métodos duplicados de createType?
¡Gracias por adelantado!
Actualización: Hice esta misma pregunta en la lista de correo de JAXB, en esa lista también publiqué un ejemplo de trabajo. El hilo y el ejemplo se pueden encontrar en: http://java.net/projects/jaxb/lists/users/archive/2011-03/message/18
En esta lista, se me ha sugerido una solución alternativa, y ahora puedo usar los esquemas de la manera que me gusta. Pero sigo pensando que JAXB no debería crear el método adicional "crear", ya que ya debería estar en el archivo del episodio.
He escrito algunas definiciones de esquema en mi día. Está declarando su primer xsd en su segunda declaración de esquema y luego lo está importando.
Según MSDN, cuando importa un XSD no lo incluye en la Declaración de esquema. Aquí es donde está en su declaración de esquema.
xmlns: test = "http://www.example.org/Test/"
Elimine esto y simplemente haga la importación ... ( <xs:import namespace="http://www.example.com/IPO" />
)
consulte: http://msdn.microsoft.com/en-us/library/ms256480.aspx