XSLT - finden-position (), wenn innerhalb einer geschachtelten for-each

Ich bin mit XSLT zur transformation auf einige ziemlich komplexe XML. Um zu erreichen, die Ausgabe, die ich brauche, habe ich zum erstellen einer verschachtelten for-Schleife so etwas wie die folgenden:

Quell-XML -

<root>
  <element1>
    <child>
      <aaa></aaa>
      <bbb></bbb>
    </child>
  </element1>
  <element2/>
  <element3/>
  <element3/>
  <element3/>
</root>

XSLT

<xsl:for-each select="element3">
  <!-- Do some stuff -->

  <xsl:for-each select="../element1/child/*">
    <!-- Do some more stuff -->
  </xsl:for-each>
</xsl:for-each>

Problem

Was ich versuche zu tun ist, während in meinem geschachtelte Schleife (auf ../element1/child/*) - ich würde gern herausfinden:

  1. Die position des Elements, ich bin derzeit auf der looping - wenn ich zum Beispiel wurde der Fokus derzeit auf <bbb> dann diese position (glaube ich) wäre '1'
  2. Die position der übergeordneten Schleife (auf element3) - also, wenn, zum Beispiel, war ich auf die Dritte Instanz des <element3> und dann die Schleife durch ../element1/child/* und konzentrierte sich auf <aaa> - die beiden Werte würde ich nach wäre '2' und '0'.

Im Idealfall würde ich mag in der Lage sein, um die Zuordnung dieser Werte zu einer Variablen. Ich habe versucht, mit der position() notation wie unten, aber das scheint nicht zu funktionieren.

<xsl:for-each select="../element1/child/*">
  <xsl:variable name="postion_current_loop" select="position()"/>
  <xsl:variable name="postion_parent_loop" select="??????"/>
  <!-- Do some more stuff -->
</xsl:for-each>

Wenn jemand irgendwelche Ideen, wie ich das erreichen kann, dies würde sehr geschätzt werden! Ich bin mit XSLT 2.0, bin aber offen für Lösungen, die anhand von XSLT 1.0-wenn es sein muss. Vielen Dank im Voraus.

Gibt es einen Grund, dass Sie mit for-each anstelle von separaten Vorlagen. Ich kann sehen, dass mindestens eine anständige Lösung wenn Sie die Vorlagen korrekt.
Ich bin derzeit nur über eine einzige Vorlage - ich bin offen für eine Lösung mit mehreren, da bin ich noch herausfinden, wie dies zu erreichen. Ich bin ziemlich neu in XSLT so nicht verstanden das Konzept von mehreren Vorlagen noch.
OK. Diese Art der Sache ist viel einfacher, mit mehrere templates (XSLT-im Allgemeinen - es lohnt sich, ein gutes Verständnis für das Konzept).
Danke, ich werde auf jeden Fall erkunden! Jetzt die Antwort von @michael.hor257k hat mir auch ein Ausgangspunkt für eine Lösung.

InformationsquelleAutor danw | 2014-07-15

Schreibe einen Kommentar