Я пытаюсь создать локализованные классы XBRL с помощью JAXB в Eclipse, но получаю сообщение об ошибке:
[ERROR] Property "Title" is already defined. Use <jaxb:property> to resolve this conflict.
line 145 of http://www.xbrl.org/2003/xl-2003-12-31.xsd
[ERROR] The following location is relevant to the above error
line 151 of http://www.xbrl.org/2003/xl-2003-12-31.xsd
Как следует из ошибки, элемент и имя атрибута конфликтуют. Это строки 145 и 151:
<element ref="xl:title" minOccurs="0" maxOccurs="unbounded" />
<attribute ref="xlink:title" use="optional" />
Поэтому мне нужно переименовать либо (или оба). Это то, что я пытался сделать - привязать заголовок элемента к titleElement:
<jxb:bindings version="1.0"
xmlns:jxb="http://java.sun.com/xml/ns/jaxb"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xl="http://www.xbrl.org/2003/XLink"
schemaLocation="http://www.xbrl.org/2003/xl-2003-12-31.xsd">
<jxb:bindings node="//element[@ref='xl:title']">
<jxb:property ref="xl:titleElement"/>
</jxb:bindings>
</jxb:bindings>
Это приводит к следующей ошибке, а также к исходным ошибкам «название уже определено»:
[ERROR] XPath evaluation of "//element[@ref='xl:title']" results in empty target node
line 6 of titleElementAttributeFixer.xjb
Предложения, чтобы заставить его работать?
РЕДАКТИРОВАТЬ: как предположил холдердароча, мое выражение было неправильным. Я новичок в XML и XPath, и это немного сбивает с толку, поскольку элемент не имеет пространства имен «xs:», введенного явно. После того, как я исправил эту ошибку, я получил еще одну:
[ERROR] XPath evaluation of "//xs:element[@ref='xl:title']" results in too many (3) target nodes
Поскольку все атрибуты «ref» необходимо обновить, я поместил тег «multiple='true'» в привязку. Теперь я получаю следующую ошибку и не могу понять, как ее решить:
[ERROR] cvc-complex-type.3.2.2: Attribute 'ref' is not allowed to appear in element 'jxb:property'.
Идеи для этого? Я хочу привязать содержимое атрибута ref для рассматриваемого элемента к другому имени.