Фильтрация узлов по тексту () - PullRequest
1 голос
/ 14 января 2011

У меня есть следующий 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 ]

1 голос
/ 14 января 2011

Я бы хотел отфильтровать 'Аудио' и передать остальные узлы вызывающему шаблону

Ваше второе выражение должно быть:

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

Но,Я бы использовал:

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

Или

/Categories/cat[not(.='Audio')]
0 голосов
/ 14 января 2011

Этот подход работал нормально.

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

спасибо за помощь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...