删除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'