Comment trouver ancestor-or-self qui est un enfant d'un élément avec un attribut particulier?

Je travaille avec un très générique XML de la structure, où tout est un article (bien tout ce qui est pertinent à cette question de toute façon).

Basée sur la connaissance de l'élément de l'élément actuellement, je suis sur et l'élément de l'élément qui est le parent du nœud, je suis à la recherche d', j'ai besoin de trouver un article. J'ai un travail xpath, mais il est assez gourmand en ressource et je suis à la recherche de quelque chose de plus élégant et moins cher.

L'élément clé=un nœud est le parent de l'élément, je suis à la recherche d' (si ce n'est pas vraiment un enfant de la racine du document)

XML:

<root>
    <item key="a">
        <item key="b">
            <item key="c">
                <item key="d"/>
            </item>
        </item>
        <item key="e">
            <item key="f">
                <item key="g"/>
            </item>
        </item>
    </item>
</root>

Le code XML est beaucoup plus profonde et beaucoup plus de ramification.

Ainsi, par exemple, si je suis sur l'élément avec la clé=g, e ou f j'ai besoin de retourner l'élément avec la clé=e. Si je suis sur le point avec la touche b,c ou d, j'ai besoin de retourner l'élément avec la clé=b.

Je suis en utilisant ce xpath, qui est au travail, mais monter puis redescendre l'ancêtre-descendant de l'axe semble un beaucoup plus long voyage que j'ai besoin.

current()
   /ancestor-or-self::item[@key='a']
      /item[descendant-or-self::* = current()]

Est-il un moyen plus simple de le faire, en gardant à l'esprit que je ne connais que 1) le nœud, je suis sur et 2) l'attribut clé de la parent du nœud, je suis à la recherche d'?

Juste pour l'amour du détail: Le XML est Sitecore généré, je ne suis pas réellement en vous servant de la fonction de (), je suis en utilisant le sc_currentitem paramètre pour définir le nœud de départ j'ai besoin de commencer le traitement.

Merci d'avance.

Semble assez simple, déjà (à mes yeux). J'ai vu beaucoup plus effrayant des requêtes Xpath.
Ce n'est pas la complexité, c'est la profondeur du XML, c'est le traitement qui fait peur. Le parent du nœud, je suis à la recherche pourrait avoir un grand nombre de point d'enfants ou de descendants, je ne veux vraiment pas aller en bas de chaque branche.

OriginalL'auteur James Walford | 2010-12-02