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 而不是我的手套,我不知道问题出在哪里。

4

2 回答 2

1

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

所有四个<input>标签都缺少它们的关闭,因此将最后一部分从每个更改>/>...例如...

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

那么你有<xsl:when test1=...哪个是不正确的。它应该是<xsl:when test=...(注意缺少1)...

 <xsl:when test="$glo1= 'false'">
于 2012-10-01T12:16:45.957 回答
1

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

  1. 元素没有关闭——这<input>会影响整个样式表的非格式良好的 XML 文档。

  2. <xsl:when>指令不能有一个名为的属性"test1"——只允许“测试”属性。

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

<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"/>
于 2012-10-01T12:17:44.537 回答