删除xml文档中的所有前导和尾随空格
问题描述:
有没有办法可以使用xslt?删除xml文档中元素和属性中的所有前导空格和尾随空格?删除xml文档中的所有前导和尾随空格
<Root>
<a>string </a>
<b r="another ">second </b>
</Root>
预期输出
<Root>
<a>string</a>
<b r="another">second</b>
</Root>
注:这是一个示例XML,我有许多元素和我的源XML文档中的属性。
答
如果使用normalize-space()
函数,结果是字符串的所有前导和尾随空格字符被删除。
但是,它也用一个空格字符替换任何中间空白字符组。
如果你不想要最后提到的效果,那么一种解决方案是使用FXSL 1.x(FXSL完全写在XSLT 1.0中)的模板函数。
下面是使用trim
模板/功能的一个小例子:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:import href="trim.xsl"/>
<!-- to be applied on trim.xml -->
<xsl:output method="text"/>
<xsl:template match="/">
'<xsl:call-template name="trim">
<xsl:with-param name="pStr" select="string(/*)"/>
</xsl:call-template>'
</xsl:template>
</xsl:stylesheet>
当下面的XML文档应用这种转变:
<someText>
This is some text
</someText>
想要的,正确的结果产生:
'This is some text'