如何将xsl:if条件整合到xsl:for-each的选择路径中?
XSLT路径筛选修正方案
你需要把两个筛选条件整合到XPath的谓词中,正确的选择路径如下:
$HistDB//AssignmentHistory/*/StudentItems/Item/Name[. = $strName and @Counsel]
错误原因说明
- 你之前尝试的
[$strName and @Counsel]逻辑错误:这里$strName是直接作为布尔值判断(仅变量非空时为真),没有和当前Name节点的文本值做相等比较,因此无法筛选出文本匹配的节点。 - 第二种写法
Name[@Counsel]=$strName不符合XPath语法,筛选条件必须放在节点的方括号谓词内部,不能在路径末尾直接添加等式判断。
完整示例代码
<xsl:for-each select="$HistDB//AssignmentHistory/*/StudentItems/Item/Name[. = $strName and @Counsel]"> <!-- 直接输出表格行,无需额外xsl:if判断 --> <tr> <!-- 此处编写表格单元格内容逻辑 --> </tr> </xsl:for-each>
内容的提问来源于stack exchange,提问作者Andrew Truckle
相关产品推荐
相关产品推荐

