2012-02-28 2 views
11

В моей XML я следующее:Получение родительского узла атрибутов в XSL

<a> 
    <b> 
    <c something="false"> 
     <d> 
     <e> 
      <f>someResult</f> 
     </e> 
     </d> 
    </c> 
    </b> 
</a> 

Теперь в XSL внутри цикла я могу сделать следующее:

<xsl:value-of select="f"></xsl:value-of> 

Но как я могу получить атрибут в c?

Я пытался делать следующий

<xsl:value-of select="////@something"></xsl:value-of> 

Как и пытаются родителями и ничего не кажется, работает. Можете ли вы получить такие родительские узлы?

Кроме того, я не могу просто сделать:

<xsl:value-of select="https://stackoverflow.com/a/b/c/@something"></xsl:value-of> 

Как может быть кратно с.

ответ

29

Для перемещения вверх по дереву вы используете «..» на уровне, т.е. в данном случае, вероятно,

select="../../../@something" 

Вы также можете выбрать узел предка по имени (приблизительно)

select="ancestor::c[1]/@something" 

См http://www.stackoverflow.com/questions/3672992 для дальнейших примеров

8

Используйте:

ancestor::c[1]/@something 

Это выбирает атрибут с именем something первого (от текущего узла вверх) предка с именем c.

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

  • Нет связанных вопросов^_^