2015-06-03 54 views
1

我想根據條件設置xsl變量。下面的xsl目前不適合我。我已經能夠製作兩個不同的匹配器(<xsl:template match="rule/condition"<xsl:template match="condition/condition"),這使我可以將;display:none僅作爲condition/condition匹配,但會導致模板被複制,除了;display:none的一部分。猜猜我的印象是,我應該能夠根據條件動態設置變量,但也許我的印象是錯誤的?基於條件的xslt變量集

<xsl:template match="condition"> 
    <xsl:variable name="display"> 
     <xsl:if test='name(..)=condition'>;display=none</xsl:if> 
    </xsl:variable> 
    <div style="{$divIndent}{$display}"> 
     <a href="javascript:void(0)" style="{$expandPosition}" onclick="expandContents(this)"> 
      <span class="glyphicon glyphicon-plus"></span> 
     </a> 
     &lt;condition type="<xsl:value-of select="@type"/>"&gt;<br /> 
     <xsl:apply-templates select="expression" /> 
     <xsl:apply-templates select="condition" /> 
     &lt;/condition&gt; 
    </div> 
</xsl:template> 
+1

「猜猜我的印象中,我應該能夠動態地設置基於一個條件變量下」你的印象是正確的。你有你正在使用的輸入文件和你現在得到的輸出文件嗎?或者至少是相關的片段? – user52889

回答

2
<xsl:if test='name(..)=condition'>;display=none</xsl:if> 

這問如果父母的名字等於其名稱爲條件的孩子的價值。你可能想知道,如果父母的名字是文本值「條件」:

<xsl:if test='name(..)="condition"'>;display=none</xsl:if> 

但是,它可能是更地道寫:

<xsl:if test='parent::condition'>;display=none</xsl:if> 

還要注意的是display:none是有效的CSS ,display=none可能不會工作。

+0

當我引用條件時仍然不適用於我 –

+0

'display = none'上的好結果以及'parent :: condition'上的好建議 –

0

試試下面的代碼通過添加屬性風格

<div><xsl:attribute name ="style"><xsl:if test='name(..)=condition'>display=none;</xsl:if></xsl:attribute></div>