我正在尝试制作一个允许用户输入搜索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。
相同的逻辑适用于其他元素。