多个xsl选择条件

时间:2012-10-01 12:00:28

标签: xml xslt xslt-2.0

我有2个条件来检查是或否,并采取某种行动。

这是我的代码。

<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而不是我的手套,我不知道这是什么问题。

2 个答案:

答案 0 :(得分:1)

假设这是从XSLT直接复制/粘贴,你有几个错误,所以我很惊讶你实际上得到了任何东西。

所有四个<input>标记都缺少其关闭,因此请在每个标记上将最终部分从>更改为/> ...例如......

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

然后你有<xsl:when test1=...这是不正确的。它应该是<xsl:when test=...(请注意缺少1)...

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

答案 1 :(得分:1)

提供的XSLT代码有许多明显的错误,任何兼容的XSLT处理器(甚至是XML解析器)都应该引发错误而根本不产生任何输出:

  1. <input>元素未关闭 - 这会影响整个样式表格式不正确的XML文档。

  2. <xsl:when>指令不能包含名为"test1"的属性 - 只允许使用“test”属性。

  3. 当我纠正这两个错误时,转换现在是

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