我需要验证XSLT中的多个条件,但没有找到关于此主题的确切问题。有人可以帮我举一些例子吗?我想在测试中添加测试以验证更多情况。我的例子不起作用。
<td align="center" style="font-size=8pt">
<xsl:choose>
<xsl:when test="esp:DocType[@v='T2']", test="esp:BusType[@v='44']">first</xsl:when>
<xsl:otherwise>
<xsl:value-of select="esp:AccPnt/@v"/>
</xsl:otherwise>
</xsl:choose>
</td>
<td align="center" style="font-size=8pt">
<xsl:choose>
<xsl:when test="esp:DocType[@v='T2'], esp:BusType[@v='44']">first</xsl:when>
<xsl:otherwise>
<xsl:value-of select="esp:AccPnt/@v"/>
</xsl:otherwise>
</xsl:choose>
</td>
答案 0 :(得分:0)
XPath具有布尔运算符。
<td align="center" style="font-size=8pt">
<xsl:choose>
<xsl:when test="esp:DocType[@v='T2'] and esp:BusType[@v='44']">first</xsl:when>
<xsl:otherwise>
<xsl:value-of select="esp:AccPnt/@v"/>
</xsl:otherwise>
</xsl:choose>
</td>
上面的方法有效,但起初可能不是很明显:它比较两个节点集的空度。空节点集在布尔上下文中计为false
,已填充节点集计为true
。因此左侧esp:DocType[@v='T2']
是否选择一个节点,即,仅在其esp:DocType
属性值等于{{1}时选择@v
}。当表达式的另一半也选择一个节点时,总结果将为'T2'
。
更明显的写同一件事的方法是:
true
答案 1 :(得分:0)
在阅读您的问题时,每个还是任何都不清楚
这些xsl:when
说明中应满足您的条件。
在第一种情况下,应将和放在这些条件之间, 而在第二种情况下为或。
很明显, Tomalak 考虑了“每件”案件,因此他写道 condition_1 和 condition_2 ,但是我对此不太确定。