使用FXSL(用于 XSLT 函数式编程的开源库,完全用 XSLT 编写)可以简单地编写:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:import href="trim.xsl"/>
<xsl:output method="text"/>
<xsl:template match="/*/description">
'<xsl:call-template name="trim">
<xsl:with-param name="pStr" select="."/>
</xsl:call-template>'
</xsl:template>
</xsl:stylesheet>
当此转换应用于提供的 XML 文档时:
<car>
<description> To get more information look at: www.example.com </description>
</car>
产生了想要的正确结果:
'To get more information look at: www.example.com'
trim
模板如何工作?
它修剪左前导空格,然后反转生成的字符串并修剪其前导空格,然后最终反转生成的字符串。
二、XPath 2.0 解决方案:
使用:
replace(replace(/*/description, '^\s*(.+?)\s*$', '$1'), '^ .*$', '')
这是一个基于 XSLT - 2.0 的验证:
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:template match="/">
"<xsl:sequence
select="replace(replace(/*/description, '^\s*(.+?)\s*$', '$1'), '^ .*$', '')"/>"
</xsl:template>
</xsl:stylesheet>
当此转换应用于提供的 XML 文档(上图)时,将评估 XPath 表达式并将此评估的结果复制到输出:
"To get more information look at: www.example.com"