указание внешней привязки JAXB для последовательности XSD имя_узла и выбор / последовательность имя_узла - PullRequest
0 голосов
/ 02 мая 2018

Я пытаюсь исключить "Элемент" ___ "отображается в нескольких свойствах" с внешними привязками jxb на xsd, который я не поддерживаю.

Я могу изменить 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>
    ...

для создания последовательности linkЭлемент типа Link и последовательность выбора:

    @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

Как я могу отличить только первый узел "ссылка", как я делаю во внутренних привязках?

1 Ответ

0 голосов
/ 02 мая 2018

Ваше XPath-выражение недостаточно точное. Эти // означают «где-нибудь ниже текущего узла». Это включает в себя оба ваших link элемента.

Попробуйте сделать ваше XPath-выражение более точным, примерно так:

xs:complexType[@name='credit']/xs:sequence/xs:element[@name='link']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...