2014-12-15 6 views
0

Скажут у вас есть документ, как это:удалить из Xsl множества узлов

<A> 
    <B> 
     <C>one</C> 
    </B> 
    <B> 
     <C>two</C> 
    </B>   
    <B> 
     <C>three</C> 
    </B> 
</A> 

Вы затем использовать XSL для создания набора узлов узлов B

<xsl:variable name="bSet" select="//A/B"/> 

Теперь у вас есть это:

<B> 
     <C>one</C> 
    </B> 
    <B> 
     <C>two</C> 
    </B>   
    <B> 
     <C>three</C> 
    </B> 

Что такое принятый метод удаления определенного набора узлов из этого набора узлов в xsl 1.0? Например, вы только хотите, чтобы B с C, который является либо «одним», либо «двумя», но не «тремя», как это?

<B> 
     <C>one</C> 
    </B> 
    <B> 
     <C>two</C> 
    </B> 

Как вы могли бы это сделать в XSL, с более exclusve селектора г вы можете удалить из множества узлов, после того, как вы объявили его (то есть, это динамическая ложь ява Список_массивов)?

+0

И как расширение, как это сделать, как бы вы выполняли эксклюзивный выбор, т. Е. Если узел для «одного» существует, не выбирайте узел «три», но если узел для «одного» не существует, три 'в наборе узлов? – user898465

ответ

1

Выражение:

$bSet[not(C='three')] 

выбирает:

<B> 
    <C>one</C> 
</B> 
<B> 
    <C>two</C> 
</B> 

Я боюсь, что я не понимаю ваш "внутренний" вопрос.

+0

Спасибо за ответ, я немного начинаю с xsl. То, что я имел в виду под вопросом расширения, заключалось в том, что можно делать более конкретные выборки. Например, из вышеперечисленного узла, если вы хотите проверить существование одного узла как условие выбора другого? Скажем, например, вы хотите, если один СУЩЕСТВУЕТ ТОГДА набор узлов должен содержать три и если не то он не должен – user898465

+0

я полагаю, есть несколько способов, чтобы выразить это, вот один: '$ Bset [не (C = 'три' и не (../ B/C = 'one'))]. –

+0

Обратите внимание, что вы отметили это как XSLT, но ваши вопросы касаются XPath. В XSLT вы можете «удалить» узел, соответствующим ему. –

Смежные вопросы