我试图用我不维护的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>
...要创建类型为链接和选择序列的序列linkElement,请执行以下操作:
@XmlElement(name = "link")
protected List<Link> linkElement;
...
@XmlElements({
@XmlElement(name = "link", type = Link.class),
...
})
protected List<Object> linkAndBookmarkAndCreditWords;但是当我尝试使用JAXB外部绑定文件时:
<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如何像在内部绑定中那样只区分第一个"link“节点?
发布于 2018-05-02 16:54:38
XPath-expression不够精确。这些//的意思是“当前节点下的任何地方”。这包括您的两个link元素。
尝试使您的XPath表达式更精确,大致如下:
xs:complexType[@name='credit']/xs:sequence/xs:element[@name='link']https://stackoverflow.com/questions/50124468
复制相似问题