6

在 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>除了将开始和结束标签折叠在一行中之外,还有其他方法可以实现吗?

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

4

1 回答 1

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 的评论,它把问题解释得淋漓尽致!

于 2013-09-28T21:50:43.467 回答