Hallo,
ich komme hier nicht weiter:
ich möchte innerhalb eines templates folgende Werte ermitteln: (die Elemente kann ich über absolute Pfade ermitteln)
- Liefere mir von einem Element mit einem bestimmten Attributwert (z.b. id=1) den Positionswert [position()] des Vaterelements.
- Liefere mir von einem Element mit einem bestimmten Attributwert (z.b. id=1) den Positionswert [position()] des Vaterelements des Vaterelements.
Meine bisherigen Versuchen scheiterten alle: z.B.: value-of select = [parent][Pfad des Elements mit Attribut] [position()]
Wie kann ich so etwas (Punkt 1 und 2) in XSLT schreiben?
Das könntest du nur erreichen, wenn du für die parent-Elemente die Position in einer Variable speicherst und diese dann später ausgibtst. Da ich aber dein XSL nicht kenne und so nicht weiss, ob und welche Templates du für die parent-Elemente hast, ist es schwer zu sagen was du machen sollst. Eventuell hilft dir ein: <xsl:template match="element"> <xsl:if test="@id = 1"> <xsl:for-each select="parent::*"> <xsl:value-of select="position()" /> </xsl:for-each> </xsl:if> </xsl:template>
Grüße Thomas
Danke mal - werde versuchen ob ich durch diesen Ansatz weiterkomme. Andere Lösungen sind aber auch willkommen. Kurz zur Problematik: Ich habe ein Element ohne Attributwerte. Dieses Element kann an unterschiedlichen Stellen und unterschiedlich oft im Baum vorkommen. Das Kindelement dieses Elements bzw. das Kindlement des Kindelements dieses Elements hat eine eindeutige ID als Attribut. Aus Gründen der Verlinkung benötigt nun dieses Element nun eine eindeutige ID. Dies habe ich über die Funktion position() erreicht. An einer anderen Stelle des Baumes gibt es nun ein Element - ich nenne es jetzt mal "Linkelement", welches diese eindeutige ID benötigt. Im Linkelement ist die Attribut-ID des Kindelements bzw. des Kindelements des Kindelements bekannt. Wie schaffe ich es nun diese (Positions-)-ID an das "Linkelement" zu übergeben?
Viele Grüsse Wolfgang