如何在<xsl:attribute>标记内删除空格?</xsl:attribute>

时间:2013-09-28 21:40:47

标签: xml xslt

在XSLT样式表中,如何删除<xsl:attribute>标记内的前导和尾随空格?

例如,以下样式表:

<xsl:template match="/">
  <xsl:element name="myelement">
    <xsl:attribute name="myattribute">
      attribute value
    </xsl:attribute>
  </xsl:element>
</xsl:template>

输出:

<myelement myattribute="&#10;      attribute value&#10;    "/>

虽然我希望输出:

<myelement myattribute="attribute value"/>

除了在一行中折叠<xsl:attribute>开始和结束标记之外,还有什么办法可以实现吗?

因为如果属性值不是普通的文本行而是一些复杂计算的结果(例如使用或标记),那么将一行中的所有代码折叠以避免前导和尾随空格将导致可怕的丑陋的样式表。

1 个答案:

答案 0 :(得分:7)

您可以通过xsl:text或xsl:value-of:

包装文本
<xsl:template match="/">
    <xsl:element name="myelement">
        <xsl:attribute name="myattribute">
            <xsl:text>attribute value</xsl:text>
        </xsl:attribute>
    </xsl:element>
</xsl:template>

<xsl:template match="/">
    <xsl:element name="myelement">
        <xsl:attribute name="myattribute">
            <xsl:value-of select="'attribute value'"/>
        </xsl:attribute>
    </xsl:element>
</xsl:template>

这对你有用吗? 否则请用一行说明您的问题。

请注意Michael Kay的评论,它解释了问题!