从XSD架构生成Java,两个属性具有相同的名称但名称空间不同

时间:2015-07-14 00:27:25

标签: xml xpath jaxb xjc

尝试从XSD架构生成Java代码,其中complexType包含两个名称相同但名称空间不同的属性。

<xsd:complexType name="CT_ImageData">
  <xsd:attribute ref="o:href"/>
  <xsd:attribute ref="r:href"/>
</xsd:complexType>

xjc说:[ERROR] Property "Href" is already defined. Use <jaxb:property> to resolve this conflict.

尝试自定义绑定:

    <bindings node="//xs:complexType[@name='CT_ImageData']">
        <bindings node=".//xs:attribute[@name='href']">
            <property name="originalHref"/>
        </bindings>
    </bindings>

但是我的绑定没有选择属性:[ERROR] XPath evaluation of ".//xs:attribute[@name='href']" results in empty target node

如何仅定位o中的bindings命名空间href属性?

1 个答案:

答案 0 :(得分:1)

尝试.//xs:attribute[@ref='o:href']
它只是XPath,它背后没有架构解释。因此,请确保您的XPath实际指向现有节点。