Wie wählen Sie die Großeltern eines Knotens unter Verwendung von xslt

Ich bin in einer situation, wo ich nur kann-test für die Kind-Knoten, aber ich habe tags angewendet, um die Großeltern des Kind-Knotens.

Habe ich versucht mit:

<xsl:call-template name="grandparent" select="parent::parent::node()"/>

und:

<xsl:call-template name="grandparent" select="ancestor::node [@nameofgrandparentnode]"/>

Aber klappt beides nicht.

Ebene der Großeltern Knoten ist nicht fest, so dass ich vermute, ich kann nicht mit [@level=#] entweder. Irgendwelche Ideen auf wie Sie wählen, es würde sehr geschätzt werden.

EDIT: -- Dieser Artikel wurde geschrieben, als eine neue Frage:

xslt-wählen Sie Großeltern Knoten in Abhängigkeit von einem Attributwert von seinem Enkel Knoten

Auswahl der Knoten mit Hilfe der Vorschläge von unten gearbeitet. Danke! Allerdings brauche ich auch, um zu testen, indem Sie das Attribut der Großeltern oder Enkel-Knoten.

Ich versucht habe:

<xsl:template name"one" match="grandparentnode">
 <Tag1>
  <xsl:apply-templates select="parentNode" />
 </Tag1>
</xsl:template>

<xsl:template name="two" match="grandparentnode[*/*/@grandchildattr='attrValue']">
 <Tag2>
     <xsl:apply-templates select="parentNode" />
 </Tag2>
</xsl:template>

Jedoch die Vorlage "zwei" immer aufgerufen wird, und "" wird immer eingefügt. Auch für die Enkel-Knoten, dessen Attribut-Wert ist nicht gleich "attrValue'.

Bin ich hier etwas fehlt?

  • Gute Frage (+1). Siehe meine Antwort für eine Anzahl von XPath-Ausdrücken, die Sie verwenden können <xsl:param> Unterricht.
  • Der bearbeitete Teil ist nicht klar. Bitte geben Sie eine vollständige (aber möglichst kurz) XML-Dokument und die vollständige XSLT-stylesheet (mal wieder, so kurz wie möglich), dass repro-Ihr problem. Optimalerweise Fragen Sie diese in eine neue Frage.
  • Auch Even for grandchild nodes whose attribute value is not equal to 'attrValue' kann nicht wahr sein mit diesem Muster grandparentnode[*/*/@grandchildattr='attrValue']
InformationsquelleAutor highlightall | 2010-09-09
Schreibe einen Kommentar