默认情况下使用xsl返回所有元素:何时测试?

时间:2017-03-26 19:29:31

标签: javascript html xml xslt

我试图创建一个允许用户输入搜索xml文件的网页。有多个输入,但在提交搜索时我无法容纳空输入。

var date = rDateSearch.value;   
if (date === "") {          
  var datein = "date=*";
} 
else {
  var datein = "date=" + date";
}

' date'然后将变量发送到xsl:when测试。我希望xsl:when返回所有日期值。

有办法做到这一点吗?我目前的想法并不奏效。

这是我的xml示例:

<record>
    <name>John Smith</name>
    <date>1972</date>
    <rating>0.5</rating>
</record>

这是我的xsl。我不确定此代码的适用性。

<xsl:for-each select="records/record">
    <xsl:choose>
        <xsl:when test ="name=*">
            <xsl:choose>
                <xsl:when test ="date=*">
                    <xsl:choose>
                        <xsl:when test ="rating=*">
                            <tr>
                                <td><xsl:value-of select="name"/></td>
                                <td><xsl:value-of select="date"/></td>
                                <td><xsl:value-of select="rating"/></td>
                            </tr>
                        </xsl:when>
                    </xsl:choose>
                </xsl:when>
            </xsl:choose>
        </xsl:when>
    </xsl:choose>
</xsl:for-each>

1 个答案:

答案 0 :(得分:2)

如果用户未指定值来过滤名称,日期或评级,并且您试图找出将选择任何/所有的表达式,您可以使用:

xsl:when test="date"

将&#34;通过&#34;测试,只要在date中评估的record元素中有xsl:for-each个元素。

或者,您可以使用:

xsl:when test="true()"
无论是否有日期元素,

都会评估为真。

同样的逻辑适用于其他元素。