1

我有一个 XSD,它定义了一个 complexType(比如“FooType”),并且这种类型的几个命名实例分散在同一个 XSD 中,例如:

<sequence>
    <element name="A" type="tns:FooType"/>
    <element name="B" type="tns:FooType"/>
</sequence>

使用从 XSD 派生的 XML 文件时,我想找到类型为“tns:FooType”的所有元素节点。我认为使用带有 element(*, "FooType) 方法的 XPath 是可能的,但我找不到任何这样的例子,所以不知道语法是什么样的。我希望将它与 Java 一起使用dom4j selectNodes() 方法。

4

3 回答 3

1

您需要一个 XPath 2.0 实现。DOM4J 仅是 1.0,javax.xml.xpath 也是如此。Saxon 提供了 2.0,但我相信这个特定的功能不是开源版本的一部分。

于 2013-07-09T09:35:49.697 回答
0

如果您不知道可以substring-before()在名称上使用的前缀并检查是否有结果:

/sequence/element[substring-before(@type,":FooType")]
于 2013-07-09T12:45:37.830 回答
0

尝试这个:

List list = document.selectNodes( "/sequence/element[@type='tns:FooType']" );
于 2013-07-09T07:08:36.583 回答