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

时间:2010-07-29 04:38:12

标签: xml xpath

考虑简单的XML文档:

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

使用XPath /html/body/table/tr/td/text()我们将获得

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

是否可以修剪空白区域,例如使用normalize-space()函数来获取此空间?

["Item 1", "Item 2"]

normalize-space(/html/body/table/tr/td/text())仅产生第一个td标记["Item 1"]

的修剪内容

2 个答案:

答案 0 :(得分:10)

  

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

     

是否可以修剪空白区域   使用normalize-space()的示例   得到[“第1项”,“第2项”]的函数?

不在XPath 1.0中

在Xpath 2.0中,这很简单

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

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

答案 1 :(得分:2)

如果您使用的是XPath 2.0,则可以使用/html/body/table/tr/td/normalize-space(.)

如果您遇到XPath 1.0,我不相信这是可能的。你只需要循环生成的字符串并将它们标准化。