几个小时后,我无法为几个xrbl XSD创建Java存根。遗留文件似乎存在问题。然后,每次尝试自定义xjc输出时:
[ERROR]" schema"的XPath评估导致空目标节点
文件的第4行:/ C:/Users/Carlos%20Conti/Desktop/ipp/2008/bindings.xml
在此之后,理论上说我必须以外部bindings.xml
文件的形式编写自定义,以解决冲突,但我无法克服这种情况。我目前陷入困境,XPath无法在自定义文件中的引用文件中找到最基本的节点。
这是自定义文件:
<jxb:bindings version="1.0" xmlns:jxb="http://java.sun.com/xml/ns/jaxb" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<jxb:bindings schemaLocation="http://www.xbrl.org/2003/xl-2003-12-31.xsd" node="schema">
<jxb:bindings node="//complexType[@name='locatorType']//sequence/element[@ref='xl:title']">
<jxb:property ref="xlink:title" />
</jxb:bindings>
</jxb:bindings>
</jxb:bindings>
当我将此作为外部自定义包含时,会输出另一个错误:
[ERROR]&#34; schema&#34;的XPath评估导致空目标节点
文件的第4行:/ C:/Users/Carlos%20Conti/Desktop/ipp/2008/bindings.xml
我试图从中构建java类的文件非常大。对不起,我也无法链接。主要问题来自该文件中导入的xsd(xl-2003-12-31.xsd),可以找到here:
所以这应该是解决问题的足够信息。
我很确定这是一个我忽略的细节,但我无法通过。
非常欢迎任何建议。
答案 0 :(得分:0)
在我看来,命名空间有问题。
XPath表达式:
//complexType[@name='locatorType']//sequence/element[@ref='xl:title']
到处都有空前缀,但似乎没有默认命名空间在范围内。因此,除非XJC提供并记录默认命名空间,否则这意味着上面的XPath表达式将返回一个空序列。实际上,XML Schema元素位于XML Schema名称空间中。您还可以在XBRL的XLink架构(提供的链接)中看到这一点,因为即使它不使用前缀,它也有默认的命名空间绑定:
xmlns="http://www.w3.org/2001/XMLSchema"
由于自定义文件中的根元素将此命名空间绑定到xsd
前缀,因此此XPath表达式可能会更好:
//xsd:complexType[@name='locatorType']//xsd:sequence/xsd:element[@ref='xl:title']
同样适用于上述行:node="schema"
应该替换为node="xsd:schema"
。
最重要的是要记住前缀(或缺少前缀)无关紧要,只有命名空间才重要: