默认情况下使用 xsl:when test 返回所有元素



我正在尝试制作一个允许用户输入搜索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>

如果用户尚未指定值来筛选名称、日期或评级,并且您正在尝试确定哪个表达式将选择任何/全部,则可以使用:

xsl:when test="date"

这将"通过"测试,只要xsl:for-each中正在评估的record元素中有date元素。

或者,您可以使用:

xsl:when test="true()"

无论是否存在日期元素,都将评估为 true。

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

最新更新