Как правильно написать адрес одного из родительских узлов ?

MoonCat

Старожил PHPCluba
Как правильно написать адрес одного из родительских узлов ?

очень критично ( как показывает практика ) для больших массивов информации всякие оптимально и неоптимально написаные выражения для XPath :)

есть какое то дерево , пусть такое :

<a n=1 />
<a n=2 >
<b atr="бла-бла">
<c .... >
...............
...............
<y> где то глубоко внизу возникает необходимость получить значение атрибута "atr" из ротительского тэга "a"
</y>
......
.......
</c>
</b>
</a>
<a n=3 />

тащить за собой это как параметр не очень удобно , так как атрибутов нужно использовать много :(

как же написать выражение для считывания атрибутов далекого родительского тэга ?

Спасибо за терпение к примитивным вопросам :)
 

MoonCat

Старожил PHPCluba
правильно ли я понимаю , что для этого лучше всего применима конструкция типа :

<xsl:value-of select="ancestor::b/@atr" /> ???

:)
 

chameleon

Новичок
<xsl:value-of select="ancestor::b/@atr" />
это если ты не знаешь какой именно предок тебе нужен и хочешь найти его по условию, если же ты точно знаешь, что тебе нужен атрибут пра-пра-дедушки :).. то лучше уровень точно указать (имхо, чем точнее указка, тем процессору легче):
PHP:
<xsl:value-of select="../../@atr"/>
 

MoonCat

Старожил PHPCluba
так то оно , конечно , так но в случае изменения структуры документа , придеться много всего править :/
 

chameleon

Новичок
в случае изменения структуры документа
а вот это менять надо в самом последнем случае, имхо, сначала утверждается структура, а потом преобразование пишется и никак не наоборот :)..
 

MoonCat

Старожил PHPCluba
это идеальные условия имеются ввиду ? :)
в реальности все более прозаично , часто и ТЗ пишется параллельно разработке продукта
 

chameleon

Новичок
часто и ТЗ пишется параллельно разработке продукта
некоторые уточнения я еще понимаю куда без них, но писать "продукт" который неизвестно что должен делать :)..это тоже неправильно ;)...но реально, согласен :)..
 
Сверху