使用:
normalize-space(/)
当计算此 XPath 表达式时,首先生成文档节点 () 的字符串值,并将/
其作为参数提供给标准 XPath 函数normalize-space()
。
根据定义,normalize-space()
返回其参数,消除了前导和尾随的相邻空白字符,并且任何中间的此类相邻空白字符组 - 替换为单个空格字符。
对上述 XPath 表达式的求值结果为:
“我喜欢出去吃饭。” “这是我最喜欢的餐厅。” “我一定会回来”
为了消除引号,我们另外使用了translate()
函数:
normalize-space(translate(/,'"', ''))
评估此表达式的结果是:
I love eating out. This is my favorite restaurant. I will definitely be back
最后,为了让这个结果用引号括起来,我们使用concat()
函数:
concat('"',
normalize-space(translate(/,'"', '')),
'"'
)
这个 XPath 表达式的评估产生了想要的结果:
"I love eating out. This is my favorite restaurant. I will definitely be back"
基于 XSLT 的验证:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:template match="/">
<xsl:value-of select=
"concat('"',
normalize-space(translate(/,'"', '')),
'"'
)"/>
</xsl:template>
</xsl:stylesheet>
当此转换应用于提供的 XML 文档时(更正为格式正确):
<p>
"I love eating out."
<br />
<br />
"This is my favorite restaurant."
<br />
"I will definitely be back"
</p>
对 XPath 表达式求值,并将该求值的结果复制到输出中:
"I love eating out. This is my favorite restaurant. I will definitely be back"