2016-11-16 2 views
0

Мне нужно фильтровать узлы, если один из их детей следует за всеми условиями. Вот Exemple:XPath несколько условий на одном и том же дочернем узле

<root> 
    <grp pos="1"> 
     <test pos="1" id="2"/> 
     <test pos="2" id="1"/> 
     <test pos="3" id="1"/> 
     <test pos="4" id="2"/> 
     <test pos="5" id="1"/> 
    </grp> 
    <grp pos="2"> 
     <test pos="6" id="1"/> 
     <test pos="7" id="2"/> 
     <test pos="8" id="1"/> 
     <test pos="9" id="1"/> 
     <test pos="10" id="2"/> 
    </grp> 
</root> 

и XSL

<xsl:template match="/root"> 
    <xsl:value-of select="grp[test/@pos='1' and test/@id='1']/@pos"/> 
</xsl:template> 

Мне нужна test для обозначения того же узла для обоих условий. Я бы хотел, чтобы не было узла grp, чтобы передать условия, но первый из них делает, потому что у него есть ребенок, который передает первое условие, а второе - второе. Я хочу, чтобы предикат нуждался в ребенке, который передает оба.

ответ

0

Хорошо, я не знаю, но мне кажется, вы можете гнездовых предикаты:

<xsl:value-of select="grp[test[@pos='1' and @id='1']]/@pos"/>

Это делает то, что я хочу

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