Reputation: 2298
I would like to generate JAXB classes from this schema file: http://www.taxonx.org/schema/v1/taxonx1.xsd
I resolved a couple of naming collisions caused by the imported mods-3-1.xsd using customized bindings as follows:
<jxb:bindings xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:jxb="http://java.sun.com/xml/ns/jaxb" version="2.1">
<jxb:bindings schemaLocation="http://www.loc.gov/standards/mods/v3/mods-3-1.xsd">
<jxb:bindings
node="//xsd:complexType[@name='relatedItemType']/xsd:attribute[@name='type']">
<jxb:property name="type2" />
</jxb:bindings>
<jxb:bindings
node="//xsd:attributeGroup[@name='language']/xsd:attribute[@name='lang']">
<jxb:property name="lang2" />
</jxb:bindings>
<jxb:bindings
node="//xsd:complexType[@name='titleInfoType']/xsd:complexContent/xsd:extension/xsd:attribute[@name='type']">
<jxb:property name="type3" />
</jxb:bindings>
<jxb:bindings
node="//xsd:complexType[@name='nameType']/xsd:attribute[@name='type']">
<jxb:property name="type4" />
</jxb:bindings>
<jxb:bindings
node="//xsd:complexType[@name='unstructuredText']/xsd:simpleContent/xsd:extension/xsd:attribute[@name='type']">
<jxb:property name="type5" />
</jxb:bindings>
</jxb:bindings>
</jxb:bindings>
When I want to generate classes I still get the following error:
parsing a schema...
compiling a schema...
[ERROR] Two declarations cause a collision in the ObjectFactory class.
line 468 of http://digir.net/schema/conceptual/darwin/manis/1.21/darwin2.xsd
[ERROR] (Related to above error) This is the other declaration.
line 326 of http://digir.sourceforge.net/schema/protocol/2003/1.0/digir.xsd
Failed to produce code.
When I add another customized binding..
<jxb:bindings schemaLocation="http://digir.net/schema/conceptual/darwin/manis/1.21/darwin2.xsd">
<jxb:bindings
node="//xsd:element[@name='requiredList' and @substitutionGroup='digir:requiredList']">
<jxb:property name="requiredList2" />
</jxb:bindings>
</jxb:bindings>
I get another error:
parsing a schema...
[ERROR] compiler was unable to honor this property customization. It is attached to a
wrong place, or its inconsistent with other bindings.
line 34 of file:/C:/git/charaparser%20-%20Copy/resources/io/darwinCore/mods-3-1-
bindings.xml
[ERROR] (the above customization is attached to the following location in the schema)
line 468 of http://digir.net/schema/conceptual/darwin/manis/1.21/darwin2.xsd
Failed to parse a schema.
Any ideas how to solve this?
Upvotes: 4
Views: 11472
Reputation: 1341
We can use as below .I got the same error and resolved by using factoryMethod.
Command : xjc -d src -extension -b demo.xjb demo.xsd
demo.xjb
================
<jxb:bindings
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:jxb="http://java.sun.com/xml/ns/jaxb"
version="2.1">
<jxb:bindings schemaLocation="demo.xsd">
<jxb:bindings node="//xs:complexType[@name='itemType']">
<jxb:factoryMethod name="Item"/>
</jxb:bindings>
</jxb:bindings>
</jxb:bindings>
demo.xsd
===============
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
jaxb:version="2.1">
<xs:complexType name="itemType">
<xs:annotation>
<xs:appinfo>
<jaxb:class name="Item"/>
</xs:appinfo>
</xs:annotation>
<xs:attribute name="id" type="xs:string" use="required"/>
</xs:complexType>
</xs:schema>
Upvotes: 0
Reputation: 43651
A very good answer is here:
http://blog.lunatech.com/2008/10/17/generating-kml-restful-clients
In short, use <jaxb:factoryMethod name="RequiredList2"/>
customization.
Upvotes: 3