Announcement

Collapse
No announcement yet.

Position eines Elternelementes bestimmen

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

  • Position eines Elternelementes bestimmen

    Hallo!

    Kann man, wenn man sich aktuell in einem Kind-Element befindet, die Position des
    Elternelements bestimmen? Ich denke da an die Funktion position()

  • #2
    Das hängt vom Bezugspunkt ab. Zur Orientiertung hilft vielleicht meine Anwort in diesem Thread.

    Comment


    • #3
      Hilft nicht wirklich.
      Ich befinde mich in einer xsl:for-each Schleife in der zweiten Ebene. Nun will ich die Position des Elternelements wissen.

      Beispiel:
      <A>irgendwas</A>
      <B>
      <BX>irgendwas</BX>
      <BX>irgendwas</BX>
      <BX>irgendwas</Bv>
      </B>
      <B>
      <BX>irgendwas</BX>
      <BX>irgendwas</BX>
      <BX>irgendwas</BX>
      </B>
      <C>irgendwas</C>

      Ich befinde mich in einer xsl:for-each Schleife in der BX Ebene und möchte nun die Position des B Elementes wissen. Also sollte beim ersten B die Position 1 und beim zweiten B die Position 2 erhalten.

      Comment


      • #4
        Bei Wahl der passenden Achsen lässt sich das Ergebnis erreichen. Ansatz:

        Code:
        <xsl:template match="wurzel">
          <xsl:apply-templates select="B"/>
        </xsl:template>
        
        <xsl:template match="B">
          <xsl:apply-templates select="BX"/>
        </xsl:template>
        
        <xsl:template match="BX">
          <xsl:if test="position() = 1">
            <h1>Verarbeitung von BX unterhalb des
            <xsl:value-of select="count(preceding::B) + count(parent::B)"/>. B-Elements</h1>
          </xsl:if>
          <p><xsl:value-of select="."/></p>
        </xsl:template>
        Mit dem genannten XML-Code unter Hinzunahme des Wurzelelements (<wurzel>...</wurzel>) entsteht diese Ausgabe:

        Code:
        <h1>Verarbeitung von BX unterhalb des 1. B-Elements</h1>
        <p>irgendwas</p>
        <p>irgendwas</p>
        <p>irgendwas</p>
        <h1>Verarbeitung von BX unterhalb des 2. B-Elements</h1>
        <p>irgendwas</p>
        <p>irgendwas</p>
        <p>irgendwas</p>
        Mit xsl:for-each funktioniert es analog, ist aber oft unnötig. Strukturiere bevorzugt in der gezeigten Weise.

        Comment

        Working...
        X