代码之家  ›  专栏  ›  技术社区  ›  Victor Olex

是否可以对XPath表达式找到的所有节点应用规范化空间?

  •  10
  • Victor Olex  · 技术社区  · 16 年前

    考虑一下简单的XML文档:

    <html><body>
    <table>
    <tr><td>   Item 1</td></tr>
    <tr><td>  Item 2</td></tr>
    </table>
    </body></html>
    

    /html/body/table/tr/td/text() 我们会得到

    ["   Item 1", "  Item 2"]. 
    

    是否可以修剪空白,例如使用 normalize-space() 函数得到这个?

    ["Item 1", "Item 2"]
    

    normalize-space(/html/body/table/tr/td/text()) ["Item 1"]

    2 回复  |  直到 9 年前
        1
  •  10
  •   Dimitre Novatchev    16 年前

    使用XPath “/html/body/table/tr/td/text()”我们 将获得[“项目1”,“项目2”]。

    有没有可能为你的工作删去空白 函数获取[“项1”,“项2”]?

    不是在XPath 1.0中 .

    在XPath2.0中,这很简单

    /html/body/table/tr/td/text()/normalize-space(.) 
    

    在XPath2.0中,XPath表达式的位置步骤可能是函数引用。这在上面的表达式中用于生成 xs:string normalize-space() 在上下文节点上(由位于最后一个位置步骤之前的子表达式选择的任何节点)。

        2
  •  2
  •   porges    16 年前

    如果您使用的是XPath2.0,那么只需使用 /html/body/table/tr/td/normalize-space(.) .