在xsl中我们可以在循环中为每个“写入”两个条件。例如,而不是
<xsl:when test="/document/line[
(substring(field[@id='0'], 1,3)='MAR')
] and
/document/line[
contains(substring(field[@id='0'],123,4),'0010')
]">
我们可以写出来:
<xsl:for-each select="/document/line[
contains(substring(field[@id='0'], 1,3),'MAR')
] and
/document/line[
contains(substring(field[@id='0'],123,4),'0010')
]">
祝你好运
从评论中更新
<xsl:for-each select="/document/line[
contains(substring(field[@id='0'], 1,3),'MAR')
and contains(substring(field[@id='0'],123,4),'0010')
]">
答案 0 :(得分:8)
如果问题是“是否可以检查for-each的select属性中的2个条件”,答案是: NO 。 因为
表达式必须求值为节点集。 (来自ZVON)
因此,select的数据类型必须是节点集而不是布尔值。
但是,如果要在xsl:for-each
或xsl:template
(后者更好)等内选择两个节点集,则可以使用 union运算符( |):
<xsl:for-each select="/document/line[
contains(substring(field[@id='0'], 1,3),'MAR')
] |
/document/line[
contains(substring(field[@id='0'],123,4),'0010')
]">