XSL:
<xsl:if test=".[foo or @bar]">
something
</xsl:if>”中的等效句?
发布于 2012-04-06 12:22:08
XSLT1.0中的在语法上是无效的,并会产生一个错误。
XSLT2.0中的--这相当于
<xsl:if test="foo or @bar">
something
</xsl:if>表达式
foo or @bar当上下文节点(当前节点)具有名为true()的子元素或上下文节点具有名为bar的属性(或两者兼而有之)时,计算结果为bar。
否则,此表达式的计算结果为false()。
因此,上面的代码片段意味着:如果这些条件中的任何一个为真:当前节点有一个名为foo的子元素,或者当前节点有一个名为bar的属性--那么输出字符串“then”。
发布于 2012-04-06 18:12:11
XSLT1.0中不允许语法.[x]。XSLT1.0的早期草案允许使用它,我怀疑它没有出现在最终版本中,原因是疏忽,而不是经过深思熟虑的设计决定(正如前面提到的,它在XSLT2.0中已经恢复了)。因为IE在1.0规范定稿之前就首次发布了XSLT处理器,所以它们可能支持这种语法,以便与早期的草案进行向后兼容。
发布于 2012-04-06 10:08:31
它测试当前节点是否有名为foo的子元素,还是具有名为bar的属性。也就是说,如果你把它改为
<xsl:if test="foo or @bar">您使用的语法在我的xsl解析器:Invalid XPath expression Unexpected token - "[foo or @bar]"中被拒绝。
我使用的应该跨浏览器工作。
如果希望选择具有名称foo或bar属性的节点,请使用以下命令:
<xsl:if test="name()='foo' or @bar">https://stackoverflow.com/questions/10041229
复制相似问题