为XSD序列节点名和choice/sequence节点名指定JAXB外部绑定

为XSD序列节点名和choice/sequence节点名指定JAXB外部绑定,jaxb,Jaxb,我正试图在我不维护的xsd上使用jxb外部绑定来消除“元素”__;“出现在多个属性中” 我可以通过以下方法修改XSD: <xs:complexType name="credit"> <xs:sequence> <xs:element .../> <xs:element name="link" type="link" minOccurs="0" maxOccurs="unbounded">

我正试图在我不维护的xsd上使用jxb外部绑定来消除“元素”__;“出现在多个属性中”

我可以通过以下方法修改XSD:

    <xs:complexType name="credit">
    <xs:sequence>
        <xs:element .../>
        <xs:element name="link" type="link" minOccurs="0" maxOccurs="unbounded">
            <xs:annotation> <xs:appinfo> <jxb:property name="linkElement"/> </xs:appinfo> </xs:annotation> 
        </xs:element>
        <xs:choice>
            <xs:sequence>
                ...
                <xs:sequence minOccurs="0" maxOccurs="unbounded">
                    <xs:element name="link" type="link" minOccurs="0" maxOccurs="unbounded"/>
                    ...
                </xs:sequence>
            </xs:sequence>
        </xs:choice>
    </xs:sequence>
    ...

如何像在内部绑定中那样仅区分第一个“链接”节点?

您的XPath表达式不够精确。这些
/
表示“当前节点下方的任何位置”。这包括
链接
元素

尝试使XPath表达式更精确,大致如下:

xs:complexType[@name='credit']/xs:sequence/xs:element[@name='link']
<jxb:bindings node="//xs:complexType[@name='credit']//xs:sequence//xs:element[@name='link']" >
        <jxb:property name="linkElement" />
    </jxb:bindings>
[ERROR] XPath evaluation of "...[@name='link']" results in too many (2) target nodes
xs:complexType[@name='credit']/xs:sequence/xs:element[@name='link']