XSL如果元素的计数为0,则向用户显示消息

时间:2014-10-18 00:28:04

标签: html xml xslt web xsd

我有一个名为channels的元素,它已在XML文件中给出了值。我想要做的是,当XML文件没有任何频道时,向用户显示一条消息。 这是我的代码。

    <h2>Channels Subscription:</h2>
    <xsl:template>
    <xsl:if test="  <xsl:value-of select="count(subscription/channels)"/>
 ==0)">
 <p>You have no channels</p>
    </xsl:if>

        </xsl:template>

上面的代码不起作用 在那之后,另一部分是桌子..当用户有一个或多个频道时,它会被显示

<xsl:for-each select="subscription/channels">

    <xsl:choose>
<xsl:when test="@favourite='true'">


                <h3 >Channel Name:</h3> <h3 style="color:green;"><xsl:value-of select="@name"/></h3>

                </xsl:when>
<xsl:otherwise>
    <h3 >Channel Name: </h3><h3 style="color:black; "><xsl:value-of select="@name"/></h3>
</xsl:otherwise>
</xsl:choose>
                    <p>ID: <xsl:value-of select="@id"/></p>
                    <h3>Programs:</h3>
                    <xsl:for-each select="programs">
    <table ID="gradient-style">
        <tbody>
            <tr>
                <th>Program Name:</th>
                <td><xsl:value-of select="name"/></td>
            </tr>
            <tr>
                <th>Broadcast Time:</th>
                <td>
                    <xsl:value-of select="@broadcastFrequency"/> at <xsl:value-of select="@broadcastTime"/> 
                </td>
            </tr>
            <tr>
                <th>Description:</th>
                <td><xsl:value-of select="description"/></td>
            </tr>
        </tbody>
    </table>    
        </xsl:for-each>

并且有效

1 个答案:

答案 0 :(得分:1)

您的xsl:if错了,应该是

<xsl:if test="count(subscription/channels) = 0">
   <p>You have no channels</p>
</xsl:if>

供参考:http://www.w3.org/TR/xslt#section-Conditional-Processing-with-xsl%3aif