我想对匹配名称"A"或"B"的元素执行一系列操作.我正在考虑下面这样的事情,但它不起作用.
<xsl:template match= " 'A' or 'B'" >
<!-- whatever I want to do here -->
</xsl:template>
Run Code Online (Sandbox Code Playgroud)
无法找到适当的XSLT语言参考.请帮忙!谢谢!!
Rob*_*ney 27
一般来说,这A | B是正确的方法.但是管道字符基本上是两个完整的XPath表达式的联合.在这样的情况下使用它可能很烦人:
/red/yellow/blue/green/gold | red/orange/blue/green/gold
Run Code Online (Sandbox Code Playgroud)
因为你正在重复整个表达式,除了它的一小段内容正在发生变化.
在这种情况下,使用谓词和name()函数通常是有意义的:
/red/*[name() = 'yellow' or name()='orange']/blue/green/gold
Run Code Online (Sandbox Code Playgroud)
此技术使您可以访问更广泛的逻辑操作.它(也可以)更快,因为XPath导航器只需要遍历它测试一次的节点.
小智 12
我认为使用这个XPath更方便
/red/(yellow | orange)/blue/green/gold
Run Code Online (Sandbox Code Playgroud)
而不是
/red/*[name() = 'yellow' or name()='orange']/blue/green/gold
Run Code Online (Sandbox Code Playgroud)
<xsl:template match= " 'A' or 'B'" >
这种匹配模式存在一些问题:
模板匹配节点,而不是字符串.因此,不应将要匹配的元素的名称指定为带引号的字符串.
该XPath的运算符"或"两个布尔值的行为,而不是节点.这里需要的是另一个XPath运算符 - union运算符"|" .
考虑到上述情况,可以正确地将模板规则指定为:
<xsl:template match= "A | B" >
<!-- whatever I want to do here -->
</xsl:template>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19924 次 |
| 最近记录: |