【问题标题】:Select Element in a Namespace with XPath使用 XPath 在命名空间中选择元素
【发布时间】:2010-09-11 20:57:53
【问题描述】:

我想选择文档中具有给定命名空间(前缀)的最顶层元素。

更具体地说:我有以 /html/body(在 XHTML 命名空间中)或以特定命名空间中的几个元素之一开头的 XML 文档。我实际上想去掉 /html/body 并返回正文内容或整个根命名空间元素。

【问题讨论】:

  • 在写我的帖子的过程中,我偶然发现了一个可行的解决方案,所以我在社区拥有这个问题,然后发布了答案。享受吧!

标签: xml xpath namespaces


【解决方案1】:

在 XPath 2.0 和 XQuery 1.0 中,您可以在谓词中使用 in-scope-prefixes() 函数针对命名空间前缀进行测试。 例如

//*[in-scope-prefixes(.)='html']

如果您不能使用 v2,在 XPath 1.0 中,您可以使用 namespace-uri() 函数来测试命名空间本身。 例如

//*[namespace-uri()='http://www.w3c.org/1999/xhtml']

【讨论】:

    【解决方案2】:

    我想要的 XPath 表达式是:

    /html:html/html:body/node()|/foo:*
    

    “html”前缀映射到 XHTML 命名空间,“foo”前缀映射到我的目标命名空间。

    【讨论】:

      猜你喜欢
      • 2010-10-16
      • 1970-01-01
      • 2011-08-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-22
      • 1970-01-01
      相关资源
      最近更新 更多