2

我有一个 xslt 文档,我想输出一个带有一些属性的锚 (a) 标记,这些属性的值取决于其他事物。因此,我使用 xsl:attribute 标记,其下方有一个选择/如果(反之亦然)。所以我的代码如下所示:

<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>

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

4

2 回答 2

3

也许您可以在 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>
于 2010-09-27T19:45:54.833 回答
1

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>
于 2010-09-27T19:47:04.800 回答