我在选择属于特定命名空间的元素时遇到问题。我的 xpath 表达式在 XMLSpy 中工作,但在使用 Xalan 库时失败..
<item>
<media:content attrb="xyz">
<dcterms:valid>VALUE</dcterms:valid>
</media:content>
</item>
我的表情是
./item/media:content/dcterms:valid
.我已经将这两个 namespace 定义都添加到了我的 XSLT 中。同样,这会在 XMLSpy 中选择正确的值,但在通过 Xalan 库运行时会失败。有任何想法吗?
最佳答案
您需要实现 org.apache.xml.utils.PrefixResolver
将前缀映射到命名空间 URI,然后将实例传递给 XPath
您使用的实例。这将允许您在 XPath 表达式中使用与文档中不同的前缀(您可能无法控制)。
例如,您可以创建一个使用一对映射的实现(一个映射从前缀 -> 命名空间 URI,一个从 URI 映射到前缀)。
在 JAXP 中,要实现的等效接口(interface)是 javax.xml.namespace.NamespaceContext
.
关于xml - 如何选择特定命名空间中的元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/187231/