XSLT中的IF语句是否允许OR条件?

8

如何测试我的条件是否为此:

<xsl:if test="node = '1' or node='2'">
<input name="list_{@id}" value="{@id}" type="checkbox"/>
</xsl:if>

IF语句可以使用OR条件吗?请提供建议。。
2个回答

7

IF语句允许使用OR条件吗?

不允许,但XPath有一个“or”运算符--请注意,XPath是区分大小写的语言。

所提供代码中的XPath表达式为:

node = '1' or node='2'

语法正确

或者是一个标准XPath运算符,可以用于组合两个子表达式

[33] OperatorName ::= 'and' | 'or' | 'mod' | 'div'

这是一个完整的XSLT转换示例:

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>
 <xsl:strip-space elements="*"/>

 <xsl:template match="node()|@*">
  <xsl:copy>
   <xsl:apply-templates select="node()|@*"/>
  </xsl:copy>
 </xsl:template>

 <xsl:template match="num[ . = 3 or . = 5]"/>
</xsl:stylesheet>

当这个转换应用于下面的XML文档时:
<nums>
  <num>01</num>
  <num>02</num>
  <num>03</num>
  <num>04</num>
  <num>05</num>
  <num>06</num>
  <num>07</num>
  <num>08</num>
  <num>09</num>
  <num>10</num>
</nums>

期望得到的正确结果是生成的(所有元素都复制,除了 <num>03</num><num>05</num>):

<nums>
   <num>01</num>
   <num>02</num>
   <num>04</num>
   <num>06</num>
   <num>07</num>
   <num>08</num>
   <num>09</num>
   <num>10</num>
</nums>

2
您可以像在您的示例中那样使用或。这里是XSLT支持的运算符。 点击这里查看。

Oleksi:XPath 语言的运算符在相应的 W3C 规范中。这是 XPath 唯一的规范性文件。引用 w3schools 是不恰当的,对 OP 来说实际上是错误的建议。请了解有关 w3schools 的可信度的更多信息,请访问:http://w3fools.com/。 - Dimitre Novatchev
1
链接现在已经失效了。 - dummy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接