Как получить элемент родительского узла текущей переменной узла? - PullRequest
4 голосов
/ 20 января 2012

ниже мой xslt:

 <xsl:template match="/">
            <xsl:call-template name="generateLinks">
        <xsl:with-param name="currentPageBranchVariable" select="//Item[@CurrentPageBranch='true']"></xsl:with-param>
      </xsl:call-template>

  </xsl:template>

И

  <xsl:template name="generateLinks">
    <xsl:param name="currentPageBranchVariable"></xsl:param>

    <xsl:value-of select="$currentPageBranchVariable/@FullName"/>

    // how to get the parent node of $currentPageBranchVariable?

  </xsl:template>

Как видно, переменная $ currentPageBranchVariable является переменной для второго шаблона, который содержит узел Item.

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

Я попробовал следующее, но не сработало:

<xsl:value-of select="../$currentPageBranchVariable/@FullName"/>
<xsl:value-of select="parent::node()/$currentPageBranchVariable/@FullName"/>
<xsl:value-of select="parent($currentPageBranchVariable)/@FullName"/>

Надеюсь, вопрос ясен.

Может быть, то, что я пытаюсь сделать, невозможно?

Спасибо

Ответы [ 2 ]

5 голосов
/ 20 января 2012

$currentPageBranchVariable - переменная для второго шаблона который содержит Item узел.

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

Просто используйте :

$currentPageBranchVariable/..

это выбирает набор родителей (по одному на каждый) из всех узлов (в данном случае только один), содержащихся в $currentPageBranchVariable.

2 голосов
/ 20 января 2012

Вы поместили ось в неправильном месте.

Ваши выражения выбирали родительский элемент узла контекста, а не $currentPageBranchVariable.Так как вы вызвали шаблон из совпадения на /, нет родительского элемента для выбора @FullName из.

Вам необходимо выбрать родительский элемент из $currentPageBranchVariable, используя родительскую ось, следующую за этой переменной,не раньше, чем.

Любой из них будет работать.

    <xsl:value-of select="$currentPageBranchVariable/../@FullName" />
    <xsl:value-of select="$currentPageBranchVariable/parent::*/@FullName" />
...