Получение атрибутов родительского узла в 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,

Другие вопросы по тегам