Templates 如何在XSLT模板匹配的XPATH中添加或设置条件
我需要为XSLT的两个节点的字段选择两个值 我需要通过选择CAT和DOG来选择节点A1和A2 输入看起来像这样Templates 如何在XSLT模板匹配的XPATH中添加或设置条件,templates,xslt,match,Templates,Xslt,Match,我需要为XSLT的两个节点的字段选择两个值 我需要通过选择CAT和DOG来选择节点A1和A2 输入看起来像这样 <MAIN> <A1> <B1>CAT</B1> <B2>KITTEN</B2> </A1> <A2> <B1>DOG</B1> <B2>PUPPY</B2>
<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>
XPath中的
或
运算符写为|(垂直条)
若要引用包含某些文本值的元素,应使用
谓词,类似于[text()='…']
因此,您的模板可以写成:
<xsl:template match="A1/B1[text() = 'CAT'] | A2/B1[text() = 'DOG']"/>
请注意,对于空模板,您不必编写
任何单独的结束标记。写
正如我在上面所做的
补充说明
你可以写一个点来代替text()
XPath表达式A1[B1='CAT']
也正确,但其含义是
与上面不同。它是指:
- 整个
元素A1
- 其子元素
的内容为CATB1