首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为XSD序列nodeName和choice/sequence nodeName指定JAXB外部绑定

为XSD序列nodeName和choice/sequence nodeName指定JAXB外部绑定
EN

Stack Overflow用户
提问于 2018-05-02 06:02:11
回答 1查看 121关注 0票数 0

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

我可以用以下代码修改XSD:

代码语言:javascript
复制
    <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>
    ...

要创建类型为链接和选择序列的序列linkElement,请执行以下操作:

代码语言:javascript
复制
    @XmlElement(name = "link")
protected List<Link> linkElement;
...
@XmlElements({
    @XmlElement(name = "link", type = Link.class),
    ...
})
protected List<Object> linkAndBookmarkAndCreditWords;

但是当我尝试使用JAXB外部绑定文件时:

代码语言:javascript
复制
<jxb:bindings node="//xs:complexType[@name='credit']//xs:sequence//xs:element[@name='link']" >
        <jxb:property name="linkElement" />
    </jxb:bindings>

我得到了错误:

代码语言:javascript
复制
[ERROR] XPath evaluation of "...[@name='link']" results in too many (2) target nodes

如何像在内部绑定中那样只区分第一个"link“节点?

EN

Stack Overflow用户

发布于 2018-05-02 16:54:38

XPath-expression不够精确。这些//的意思是“当前节点下的任何地方”。这包括您的两个link元素。

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

代码语言:javascript
复制
xs:complexType[@name='credit']/xs:sequence/xs:element[@name='link']
票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50124468

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档