在不影响转换输出的情况下缩进XSL

时间:2015-08-31 15:30:05

标签: xslt

是否可以缩进xsl样式表而不影响输出 plaintext 文件中的空格量。我有

<xsl:output method="text" omit-xml-declaration="yes"/>

等等

<xsl:template match="author">
    <xsl:value-of select="@surname" />
    <xsl:if test="count(g)&gt;1">, <xsl:for-each select="g">
        <xsl:value-of select="substring(.,1,1)" />.<xsl:if test="position()!=last()">\,</xsl:if></xsl:for-each>
    </xsl:if>
</xsl:template>

但我想将代码格式化为

<xsl:template match="author">
    <xsl:value-of select="@surname" />
    <xsl:if test="count(g)&gt;1">,
        <xsl:for-each select="g">
            <xsl:value-of select="substring(.,1,1)" />.
            <xsl:if test="position()!=last()">\,</xsl:if>
        </xsl:for-each>
    </xsl:if>
</xsl:template>

但是,这不起作用,因为保留了一些空格,并且这些中断会导致目标程序出现问题。

2 个答案:

答案 0 :(得分:2)

您可以使用xsl:text来包装要输出的纯文本。

<xsl:template match="author">
    <xsl:value-of select="@surname" />
    <xsl:if test="count(g)&gt;1">
        <xsl:text>,</xsl:text>
        <xsl:for-each select="g">
            <xsl:value-of select="substring(.,1,1)" />
            <xsl:text>.</xsl:text>
            <xsl:if test="position()!=last()">
                <xsl:text>\,<xsl:text>
            </xsl:if>
        </xsl:for-each>
    </xsl:if>
</xsl:template>

答案 1 :(得分:1)

只有在满足下列条件之一时,样式表中的空格才有意义:

  1. 它位于find_package(Boost...)元素
  2. 之内
  3. 它是与非空白字符相同的文本节点的一部分(如在您的示例中)
  4. 有一个xsl:text属性。