2012-10-01 74 views
2

我有2個條件來檢查真或假,並採取一定的行動。多個xsl選擇條件

這是我的代碼。

<xsl:variable name="hac" select="Hac1"/> 



<xsl:choose> 
    <xsl:when test="$hac= 'false'"> 
    <p style="display:inline">Hac1: </p><input type="checkbox" disabled="disabled" > 
</xsl:when> 
<xsl:otherwise> 
    <p>HACCP: </p><input type="checkbox" disabled="disabled" checked="checked"> 
</xsl:otherwise> 
</xsl:choose> 

<xsl:variable name="glo1" select="Gloves"/> 
    <xsl:choose> 
    <xsl:when test1="$glo1= 'false'"> 
    <p style="display:inline">Gloves: </p><input type="checkbox" disabled="disabled" > 
</xsl:when> 
<xsl:otherwise> 
    <p>Gloves: </p><input type="checkbox" disabled="disabled" checked="checked"> 
</xsl:otherwise> 
</xsl:choose> 

這隻顯示我的Hac1,而不是我的手套,我不知道什麼似乎是問題。

回答

1

假設這是從您的XSLT直接複製/粘貼,您有幾個錯誤,所以我很驚訝你實際上得到任何東西。

所有四個<input>標籤缺少其關閉,所以從>改變最後的部分/>每一個...例如...

<input type="checkbox" disabled="disabled" /> 

然後,你必須<xsl:when test1=...這是不正確。它應該是<xsl:when test=...(注意缺乏1的)...

<xsl:when test="$glo1= 'false'"> 
+0

我發現關閉問題我自己,但沒見過test1的名字,非常感謝你,我會浪費這麼多時間來處理這些瑣碎的事情。 – Aleks

+0

不客氣,@Aleks,但我必須問你用什麼來解析XSLT?因爲(正如Dimitre所指出的那樣),任何兼容的XSLT處理器都不能用你提供的XSLT產生任何**。 – freefaller

+0

http://www.w3schools.com/xsl/tryxslt.asp?xmlfile=cdcatalog&xsltfile=cdcatalog:D – Aleks

1

所提供的XSLT代碼有許多明顯的錯誤任何符合標準的XSLT處理器(甚至XML解析器)應引發錯誤,而不是產生任何輸出:

  1. <input>元件不關閉 - 這男性整個樣式表非良好的XML文檔。

  2. <xsl:when>指令不能有一個名爲"test1"的屬性 - 只允許「test」屬性。

當我糾正這兩種錯誤,改造現在

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output omit-xml-declaration="yes" indent="yes"/> 
<xsl:strip-space elements="*"/> 

<xsl:template match="/*"> 
    <xsl:variable name="hac" select="Hac1"/> 

    <xsl:choose> 
     <xsl:when test="$hac= 'false'"> 
     <p style="display:inline">Hac1: </p><input type="checkbox" disabled="disabled" /> 
    </xsl:when> 
    <xsl:otherwise> 
     <p>HACCP: </p><input type="checkbox" disabled="disabled" checked="checked"/> 
    </xsl:otherwise> 
    </xsl:choose> 

    <xsl:variable name="glo1" select="Gloves"/> 
    <xsl:choose> 
     <xsl:when test="$glo1= 'false'"> 
     <p style="display:inline">Gloves: </p><input type="checkbox" disabled="disabled" /> 
     </xsl:when> 
     <xsl:otherwise> 
      <p>Gloves: </p><input type="checkbox" disabled="disabled" checked="checked"/> 
     </xsl:otherwise> 
    </xsl:choose> 
</xsl:template> 
</xsl:stylesheet> 

和它產生正常的拍攝效果

當這個XML文檔施加(原先沒有的!):

<t> 
<Hac1>true</Hac1> 
<Floves>false</Floves> 
</t> 

結果是

<p>HACCP: </p> 
<input type="checkbox" disabled="disabled" checked="checked"/> 
<p>Gloves: </p> 
<input type="checkbox" disabled="disabled" checked="checked"/> 
+0

也謝謝你,我解決了問題 – Aleks

+1

@Aleks,不客氣。 –