Получение атрибутов родительского узла в XSL
В моем XML у меня есть следующее:
<a>
<b>
<c something="false">
<d>
<e>
<f>someResult</f>
</e>
</d>
</c>
</b>
</a>
Теперь в XSL внутри цикла я могу сделать следующее:
<xsl:value-of select="f"></xsl:value-of>
Но как я могу получить атрибут в с?
Я пытался сделать следующее
<xsl:value-of select="////@something"></xsl:value-of>
Так же, как пытается родитель и ничего, кажется, не работает. Можете ли вы получить родительские узлы, как это?
Кроме того, я не могу просто сделать:
<xsl:value-of select="/a/b/c/@something"></xsl:value-of>
Как может быть несколько c.
2 ответа
Решение
Для перемещения вверх по дереву вы используете ".." на уровень, т.е. в этом случае, вероятно,
select="../../../@something"
Вы также можете выбрать узел предка по имени (приблизительно)
select="ancestor::c[1]/@something"
См. /questions/45989339/kak-vyibrat-praroditelya-uzla-s-pomoschyu-xslt для дальнейших примеров
Используйте:
ancestor::c[1]/@something
Это выбирает атрибут с именем something
первого (от текущего узла и выше) предка по имени c
,