处理 XSLT 中的空白

chr*_*chr 1 xml xslt

我有一个 xml lists.xml

<?xml version="1.0" encoding="UTF-8"?>
<data>
  <list>
    <item>Salt</item>
    <item>Sugar</item>
  </list>
  <list>
    <item>Eggs</item>
    <item>Butter</item>
  </list>
</data>
Run Code Online (Sandbox Code Playgroud)

和一个 XSLT 样式表 transform.xslt

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="3.0">
  <xsl:output method="text"/>
  <xsl:template match="//list/item">
    <xsl:text> - </xsl:text>
    <xsl:value-of select="." />
    <xsl:text>&#xa;</xsl:text><!--put a line-break between two list points--->
    <xsl:if test="position() = last()"><!--put another line-break at the end of a list-->
      <xsl:text>&#xa;</xsl:text>
    </xsl:if>
  </xsl:template>
</xsl:stylesheet>
Run Code Online (Sandbox Code Playgroud)

我的预期输出类似于以下内容:

 - Salt    
 - Sugar

 - Eggs
 - Butter
Run Code Online (Sandbox Code Playgroud)

但相反,当使用撒克逊(或其他处理器)进行转换时,我通过大量输出获得了上述内容。那么如何在 XSLT 中正确处理空白呢?

注意:我对 XSLT 完全陌生,我知道我上面发布的代码可能很糟糕——所以,除了问题之外,我感谢任何建议,使其更优雅/更好地阅读/更快/更短......

Par*_*ait 5

只需添加<xsl:strip-space elements="*"/>到样式表。