2010-09-27 76 views
2

我有一个xslt文档,我想输出具有值取决于其他事物的一些属性的锚(a)标签。因此,我使用xsl:属性标签与选择/如果它下面(反之亦然)。所以,我的代码如下所示:如何不在xslt中输出具有属性的元素的空白

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

摆脱空间。在上面的代码中没有太大的交易,但是我的实际页面有更多的逻辑,这使得它非常难看。我能想到的唯一另外一件事就是将逻辑放在链接生成之外,但是我会重复更多的事情并且不得不创建更多的变量。这是合理的,但仍不完全理想。 这只是我想要这样做的一个例子,它发生在其他几次,所以我只是想知道是否有其他解决方法。

回答

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

这条空白从输入的元素。在这种情况下,我竟产生了一个标签我只是想在innerHTML的 – 2010-09-27 19:49:43

+0

我看这样做没有空间:用'XSL /尝试:文本就像在这个例子中一样。它的工作原理:) – 2010-09-27 19:54:25

+0

+1正确答案。 – 2010-09-27 20:06:48

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> 
相关问题