生成的HTML页面包含有时在我的页面中不存在的引用链接。我应该将此链接显示为简单标签。 目前已完成:
<xsl:choose>
<xsl:when test="$nb_action != 0">
<a href="#action">Action (offensive, defensive, reconnaissance)</a>
</xsl:when>
<xsl:otherwise>
Action (offensive, defensive, reconnaissance)
</xsl:otherwise>
</xsl:choose>
我想知道如何简化我的代码,如何停用节点<a></a>
?
我的第一个想法是委托一个特殊的css类:
<a href="#action">
<xsl:if test="$nb_action = 0">
<xsl:attribute name="class">inactive</xsl:attribute>
</xsl:if>Action (offensive, defensive, reconnaissance)
</a>
但它仍然是一个链接...
以下解决方法:
<a><xsl:if test="$nb_action != 0">
<xsl:attribute name="href">#action</xsl:attribute>
</xsl:if>Action (offensive, defensive, reconnaissance)</a>
在没有<a>
的情况下编写html href
代码是正确的吗?
答案 0 :(得分:2)
您可以将该Action文本作为变量。这个变量仍然出现在3个地方。
<xsl:variable name="textval">
Action (offensive, defensive, reconnaissance)</xsl:variable>
<xsl:choose>
<xsl:when test="0">
<a href="#action"><xsl:copy-of select="$textval"/></a>
</xsl:when>
<xsl:otherwise>
<xsl:copy-of select="$textval"/>
</xsl:otherwise>
</xsl:choose>
编辑:或者,如果你不介意额外的,无用的span
标签,你可以使用
<xsl:variable name="condition" select="---condition-here---"/>
<xsl:variable name="tagname">
<xsl:choose>
<xsl:when test="$condition">a</xsl:when>
<xsl:otherwise>span</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:element name="{$tagname}">
<xsl:if test="$condition">
<xsl:attribute name="href">#action</xsl:attribute>
</xsl:if>
Action (offensive, defensive, reconnaissance)
</xsl:element>
(在Firefox中,如果我们将$tagname
设置为空字符串,则该元素根本不会应用。但处理器也可以raise an error,所以不要依赖它。 )
答案 1 :(得分:0)
什么不将字符串Action(..)存储到变量中并将其存储在代码中?