根据文本过滤节点()

时间:2011-01-14 17:13:15

标签: xml xslt

我有以下XML

<Categories>
<cat>Video</cat>
<cat>Audio</cat>
<cat>Hybrid</cat>
</Categories>

在我的XSL中,我想过滤'Audio'并将其余节点传递给调用模板,该模板将节点作为参数之一。如何实现这一点。

我试过以下,但没有运气。

尝试1:

<xsl:call-template name='xx'>
<xsl:with-param name='nodes' select="/Categories/cat[text()='Hybrid' or 'Video']"/>
</xsl:call-template>

尝试2:

<xsl:call-template name='xx'>
<xsl:with-param name='nodes' select="/Categories/cat[text()='Hybrid' or text()='Video']"/>
</xsl:call-template>

尝试3:

<xsl:call-template name='xx'>
<xsl:with-param name='nodes' select="/Categories/cat[contains(text(),'Hybrid,Video']"/>
</xsl:call-template>

如果我只有一个像下面这样的值

,它就有效
<xsl:call-template name='xx'>
<xsl:with-param name='nodes' select="/Categories/cat[text()='Video']"/>
</xsl:call-template>

提前致谢。

2 个答案:

答案 0 :(得分:1)

  

我想过滤'音频'和   将其余节点传递给调用   模板

你的第二个表达应该是:

/Categories/cat[text()='Hybrid' or text()='Video']

但是,我会用:

/Categories/cat[.!='Audio']

或者

/Categories/cat[not(.='Audio')]

答案 1 :(得分:0)

这种方法运作良好。

/Categories/cat[. ='Hybrid' or . ='Video']

感谢您的帮助。