Announcement

Collapse
No announcement yet.

position() liefert immer 1

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • position() liefert immer 1

    hallo,

    wenn ich für die Kinder eines Knotens das entsprechende Template aufrufe erhalte ich für position() immer den Wert 1, ich möchte jedoch die nummer jeden <kind> knotens relativ zum root erhalten.

    Problem Beispiel:

    <vater1>
    <kind>...</kind>
    <kind>...</kind>
    </vater1>

    <vater2>
    <kind>...</kind>
    <kind>...</kind>
    </vater2>

    <xsl:template match="vater1|vater2">
    <xsl:for-each select="children::*">
    <xsl:apply-templates select=".">
    </xsl:for-each>
    </xsl:template>

    <xsl:template match="kind">
    <xsl:element name="kind">
    <xsl:attribute name="knotenNr">
    <xsl:value-of select="position()"/>
    </xsl:attribute>
    </xsl:element>
    </xsl:template>

    Für Lösungsvorschläge vielen Dank im voraus!

  • #2
    Hier hilft das Zählen von Knoten über die Achsen, z. B. preceding:
    Code:
    <xsl:template match="/">
      <root>
        <xsl:apply-templates/>
      </root>
    </xsl:template>
    
    <xsl:template match="vater1|vater2">
      <xsl:apply-templates/>
    </xsl:template>
    
    <xsl:template match="kind">
      <kind knotenNr="{count(preceding::kind) + 1}"/>
    </xsl:template>
    Zuletzt editiert von Thomas Meinike; 30.09.2008, 13:47.

    Comment


    • #3
      ok, Danke!

      Comment

      Working...
      X