我有一个定义complexType的XSD(比如说'FooType'),这个类型的几个命名实例分散在同一个XSD中,如:
<sequence>
<element name="A" type="tns:FooType"/>
<element name="B" type="tns:FooType"/>
</sequence>
使用从XSD派生的XML文件时,我想找到类型为“tns:FooType”的所有元素节点。我认为这可以使用带有元素(*,“FooType)方法的XPath,但我找不到任何这样的例子,所以不知道语法是什么样的。我希望将它与Java一起使用dom4j selectNodes()方法。
答案 0 :(得分:1)
您需要XPath 2.0实施。 DOM4J仅为1.0,javax.xml.xpath也是如此。 Saxon提供2.0,但我相信这个特定的功能不是开源版本的一部分。
答案 1 :(得分:0)
试试这个:
List list = document.selectNodes( "/sequence/element[@type='tns:FooType']" );
答案 2 :(得分:0)
如果您不知道前缀,可以在名称上使用substring-before()
并检查是否有结果:
/sequence/element[substring-before(@type,":FooType")]