首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在XSLT中,<xsl:if test=".[foo或@bar]">意味着什么?跨浏览器解决方案是什么?

在XSLT中,<xsl:if test=".[foo或@bar]">意味着什么?跨浏览器解决方案是什么?
EN

Stack Overflow用户
提问于 2012-04-06 08:53:52
回答 3查看 622关注 0票数 1

XSL:

代码语言:javascript
复制
<xsl:if test=".[foo or @bar]">
    something
</xsl:if>

  1. 测试的是,如果目标是带有'foo‘标签名,还是有'bar’属性?
  2. ,它只在IE中工作,我想知道是否有错误。什么是“cross-browser?

”中的等效句?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-04-06 12:22:08

XSLT1.0中的在语法上是无效的,并会产生一个错误

XSLT2.0中的--这相当于

代码语言:javascript
复制
 <xsl:if test="foo or @bar">     
   something 
 </xsl:if>

表达式

代码语言:javascript
复制
foo or @bar

当上下文节点(当前节点)具有名为true()的子元素或上下文节点具有名为bar的属性(或两者兼而有之)时,计算结果为bar

否则,此表达式的计算结果为false()

因此,上面的代码片段意味着:如果这些条件中的任何一个为真:当前节点有一个名为foo的子元素,或者当前节点有一个名为bar的属性--那么输出字符串“then”。

票数 0
EN

Stack Overflow用户

发布于 2012-04-06 18:12:11

XSLT1.0中不允许语法.[x]。XSLT1.0的早期草案允许使用它,我怀疑它没有出现在最终版本中,原因是疏忽,而不是经过深思熟虑的设计决定(正如前面提到的,它在XSLT2.0中已经恢复了)。因为IE在1.0规范定稿之前就首次发布了XSLT处理器,所以它们可能支持这种语法,以便与早期的草案进行向后兼容。

票数 2
EN

Stack Overflow用户

发布于 2012-04-06 10:08:31

它测试当前节点是否有名为foo的子元素,还是具有名为bar的属性。也就是说,如果你把它改为

代码语言:javascript
复制
<xsl:if test="foo or @bar">

您使用的语法在我的xsl解析器:Invalid XPath expression Unexpected token - "[foo or @bar]"中被拒绝。

我使用的应该跨浏览器工作。

如果希望选择具有名称foobar属性的节点,请使用以下命令:

代码语言:javascript
复制
<xsl:if test="name()='foo' or @bar">
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10041229

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档