我需要选择XSLT的2个节点的字段的两个值。
我需要选择CAT和DOG来选择节点A1和A2。
输入看起来像这样。
<MAIN>
<A1>
<B1>CAT</B1>
<B2>KITTEN</B2>
</A1>
<A2>
<B1>DOG</B1>
<B2>PUPPY</B2>
</A2>
<A3>
<B1>LION</B1>
<B2>CUB</B2>
</A3>
</MAIN>
我正在使用以下表达式:
<xsl:template match="MAIN[(A1/B1='CAT') or (A2/B1='DOG')]">
</xsl:template>
这是在运行时给出XPATH表达式错误。
也在下面使用,并没有提取价值。
<xsl:template match="MAIN[A1/B1='CAT' or A2/B1='DOG']">
</xsl:template>
答案 0 :(得分:1)
Or
运算符写为|
(垂直条)。
要引用包含某些文本值的元素,您应该使用它
一个谓词,类似于[text() = '...']
。
因此,您的模板可以写成:
<xsl:template match="A1/B1[text() = 'CAT'] | A2/B1[text() = 'DOG']"/>
请注意,如果是空模板,则不必编写
任何单独的结束标记。写<xsl:template .../>
就足够了
正如我上面所做的那样。
您可以写text()
一个点来代替.
。
XPath 表达式A1[B1 = 'CAT']
也是正确的,但其含义是
不同于以上。它指的是:
A1
元素,B1
元素。