Есть очень простая схема (не моя, потому менять схему не стоит) в xsd, в ней повторяется имя элемента node
<xs:element name="path">
<!-- type="path" -->
<xs:complexType>
<xs:sequence>
<xs:element name="node" maxOccurs="unbounded" minOccurs="0">
<xs:complexType>
<xs:sequence>
<!--...-->
<xs:element name="points">
<xs:complexType>
<xs:sequence>
<xs:element name="node" maxOccurs="unbounded" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="x" minOccurs="0" type="xs:string"/>
<xs:element name="y" minOccurs="0" type="xs:string"/>
<!-- ... -->
к ней есть еще более прямолинейный биндинг
<jxb:bindings
xmlns:jxb="http://java.sun.com/xml/ns/jaxb"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
jxb:version="2.1">
<jxb:bindings schemaLocation="test.xsd" node="/xs:schema">
<!-- Resolve Node class name conflict -->
<jxb:bindings node="//xs:element[@name='path']/xs:complexType/xs:sequence/xs:element[@name='node']">
<jxb:class name="pathNode"/>
</jxb:bindings>
<jxb:bindings node="//xs:element[@name='points']/xs:complexType/xs:sequence/xs:element[@name='node']">
<jxb:property name="point"/>
<jxb:class name="point"/>
</jxb:bindings>
</jxb:bindings>
</jxb:bindings>
при попытке сгенерить классы с этим биндингом xjc ругается что два класса имеют одно и то же имя Node, хотя, бл, ни один из них его уже иметь не должен.
если сделать autoNameResolution, то это чудо безусловно обрабатывает схему, и еще создает два указанных в биндинге класса, которые extend'ят созданные автоматом Node и Node2. Какого пса оно делает extend вместо замены имени хз.
Подскажите, где я туплю? Ну, помимо того что юзаю jaxb.
upd попытаюсь без мата... короче надо биндинг в этом случае прописывать не к элементу типа <jxb:bindings node="//xs:element[@name='points']/xs:complexType/xs:sequence/xs:element[@name='node']">
, а к complexType этого элемента, в виде <jxb:bindings node="//xs:element[@name='points']/xs:complexType/xs:sequence/xs:element[@name='node']/xs:complexType">
. И жеж не одна падла в документации на это не указала. Все ж очевидно, бл, спасибо... Допер после примера ниже. Видно что бинд идет к complexType, а почему - загадка века.
<xsd:element name="billingaddress">
<xsd:complexType>
<xsd:annotation>
<xsd:appinfo>
<jaxb:class name="PrimaryBillingAddress">
<jaxb:javadoc>
DOCUMENTATION
</jaxb:javadoc>
</jaxb:class>
</xsd:appinfo>
</xsd:annotation>