在XSL中使用white-space的CSS问题很奇怪

时间:2014-04-23 14:00:49

标签: html css xml xslt

所以我试着将css类名称连在一起,这里是我的XSL片段:

<xsl:variable name="btnClass">
    <xsl:choose>
        <xsl:when test="$type = 'hello'">myClass</xsl:when>
        <xsl:when test="$type = 'world'">myOtherClass</xsl:when>
        <xsl:otherwise>stuff</xsl:otherwise>
    </xsl:choose>
    <xsl:if test="$additionalClass != ''">&#160l<xsl:value-of select="$additionalClass"/></xsl:if>
</xsl:variable>

它会给我,例如:

myClass extraClass

但是,在HTML中检查它实际上是:

myClass&nbsp;extraClass

由于这个原因,css从未踢过。如果我删除了&nbsp;并在其中放置了一个实际的空格,那么该类将按预期工作。

我尝试将我的XSL调整为(仅使用常规空间):

<xsl:if test="$additionalClass != ''"> <xsl:value-of select="$additionalClass"/></xsl:if>

但这只会给我:

myClassextraClass

如何在字符串中添加普通空格?洛尔

1 个答案:

答案 0 :(得分:1)

您可以使用xml:text填充额外的空格,如下所示:

  <xsl:if test="$additionalClass != ''">
     <xsl:text> </xsl:text><xsl:value-of select="$additionalClass"/>
  </xsl:if>

(显然你不希望&nbsp;直接出现在class='x y' html中

您还可以使用concat之类的函数:

<xsl:value-of select="concat(' ', $additionalClass)"/>