代码之家  ›  专栏  ›  技术社区  ›  Matt Wolfe

如何在xslt中不为具有属性的元素输出空白

  •  2
  • Matt Wolfe  · 技术社区  · 14 年前

    <a href="/somepage.html">
      <xsl:if test="current_page='this_page'">
       <xsl:attribute name='class'>active</xsl:attribute>
      </xsl:if>
    My Page
    </a>
    

    然而,问题是,在输出html中,所有的换行符/空格都在那里,这使得我的链接在它的左边有一个额外的空格(它加了下划线,使它变得明显)。 所以显而易见的解决办法是:

    <a href="/somepage.html"><xsl:if test="current_page='this_page'"><xsl:attribute name='class'>active</xsl:attribute></xsl:if>My Page</a>
    

    为了摆脱空间。上面的代码没什么大不了的,但我的实际页面有更多的逻辑,这真的很难看。我唯一能想到的另一件事就是把逻辑放在链接生成之外,但是我要重复更多的事情,并且必须创建更多的变量。这是合理的,但仍不完全理想。 这只是一个例子,我想这样做,它发生了几次,所以我只是想知道是否有任何其他方法来解决这个问题。

    2 回复  |  直到 8 年前
        1
  •  3
  •   Lasse Espeholt    14 年前

    也许您可以在XSLT文档的开头使用:

    <xsl:strip-space elements="a"/>
    

    更新, 这样做有效:

    <a href="/somepage.html">
      <xsl:if test="current_page='this_page'">
       <xsl:attribute name='class'>active</xsl:attribute>
      </xsl:if>
      <xsl:text>My Page</xsl:text>
    </a>
    
        2
  •  1
  •   Dirk Vollmar    14 年前

    xsl:strip-space 在你的样式表顶部就足够了吗?

    <?xml version="1.0" encoding="utf-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    
      <xsl:output method="html" indent="yes"/>
    
      <xsl:strip-space elements="*"/>
    
      ...
    
    </xsl:stylesheet>