我正在尝试在 Eclipse 中使用 JAXB 生成本地化的 XBRL 类,但出现错误:
[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
建议让它工作?
编辑:正如helderdarocha 建议的那样,我的表达是错误的。我是 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”中的内容绑定到另一个名称。