xml - 删除 xml 文档中的所有前导和尾随空格

标签 xml xslt xslt-1.0

有没有一种方法可以使用 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/

相关文章:

css - 使用 XSLT 格式化表格内的虚线

java - 使用JAVA从XML文件读取数据

xslt - 关于 XSLT 的问题,以消除子节点位于 CDATA 部分的父节点

php - XPath 节点到字符串

xml - 除 for-each 之外,哪些 XSLT 指令会更改当前节点?

java - 带有 xml 节点(键)的 XSL 转换以数字开头失败

iphone - 将 pkcs12 插入到 mobileconfig 文件

xml - 根据属性值 XSLT 更改元素名称

xml - xslt 1.0 使用复合键分组(在不同级别)