можно ли найти нод который находится неизвестно на сколько выше по иерархии

Ell

Guest
можно ли найти нод который находится неизвестно на сколько выше по иерархии

Ну в общем сижу я в ноде item, который может сидеть в ноде type, который в ссвою очередь сидит в ноде list, а может и не сидеть, и мне надо получить инфу из list!

<list name="лист2">
<item id="1"/>
<item id="2"/>
</list>

<list name="лист1">
<type>
<item id="1"/>
<item id="2"/>
</type>
<type>
<item id="3"/>
<item id="4"/>
</type>
</list>

или даже так

<list name="лист1">
<section>
<type>
<item id="3"/>
<item id="4"/>
</type>
</section>
</list>

как находясь в item с помощью xpath выдрать name из list

<xsl:for-each select="child::item">
<xsl:value-of select="parent::list@name" />
</xsl:for-each>
 

chameleon

Новичок
вот вроде слово xpath знаем, а почему-то из axis знаем только child::(ака "по-умолчанию") и parent:: (ака "..")
<xsl:template match="item">
<xsl:value-of select="ancestor::list[1]/@name"/>
</xsl:template>
имхо в топике "Ссылки на XSLT" тоже самое.
 

Ell

Guest
я что-то так и не понял что делает ancestor
мне нужно универсальное выражение с помощью которого можно было из любой глубины достигнуть верхнего нода list

т.е. нужно чтоб парсер шёл вверх по иерархии до тех пор пока не встретит list
 

chameleon

Новичок
чего конкретно надо?

любой глубины достигнуть верхнего нода list
это самый верхний (т.е. последний по оси ancestor элемент list)
xpath="ancestor::list[last()]"

чтоб парсер шёл вверх по иерархии до тех пор пока не встретит list
это самый первый по оси ancestor элемент list
xpath="ancestor::list[1]"
я что-то так и не понял что делает ancestor
а я и не объяснял :).. RTFM.
 
Сверху