2013-03-26 10 views
5

のNodeList祖先-または自己内の最も近い祖先を見つけるために、XPathを使用する方法:私はこのような定期的な要素を持つ構造を有する

<a> 
    <b> 
    <a> 
    </a> 
    </b> 
    <a> 
    <b> 
     <a> 
     <c att="val" /> 
     </a> 
    </b> 
    </a> 
</a> 

私が使用している場合、$ currentNodeのは、C-ノードをAsumingをXPath

<xsl:value-of select="($currentNode/ancestor-or-self::a)" /> 

この式に一致するノードのリストの順序は無秩序です。私が必要とするのは、ツリーの最上位にあるノードを、ブランチや最上位のレベルのように、常に最寄りのノードにすることです。

私はこの残念なようにXPathの2 MAX-機能を使用することはできません。

<xsl:value-of select="($currentNode/ancestor-or-self::a)[max(@level)]" /> 

お知らせその最も近いノードではない常に正確文脈上で、どこかそこまで...

どれでも提案は高く評価されました!

よろしく アレックス

答えて

6

私はあなたが親からの祖先に、順序付けられたノードのセットを取得だと思います。

$currentNode/ancestor-or-self::a[1]を試して、c att = "val"の親を取得してください。

+0

このアプローチを試しました。最初のもの、2番目のものなどをリストします。そして、最も近いノードが2番目の場所にあるとわかります。:( – Alex

+0

$ currentNode = element c? – Istao

+0

はい、実際のXPathは "ancestor (私はものをクリアするために簡略化しました) – Alex

関連する問題