有没有一种方法可以使用 xslt 删除 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 的 trim
模板功能(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'
关于xml - 删除 xml 文档中的所有前导和尾随空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11950652/