Rolf: for-each Schleife (erstes Element)

Beitrag lesen

Hallo!

Also die XML-Struktur haut so hin:

<Schicht1>
<Schicht2>
               <Schichtnummer>123</Schichtnummer>

»»

<Schicht3>
                  <Schicht4>
         <Schichtnummer>20</Schichtnummer>

<Schicht5>

<Schichtnummer>2</Schichtnummer>
</Schicht5>
</Schicht4>
</Schicht3>
</Schicht2>
</Schicht1>

Das heißt Schicht 1 hat keine Schichtnummer.
Schicht2 hat eine Schichtnummer
Schicht3 hat keine Schichtnummer
Schicht4 hat eine Schichtnummer
Schicht 5 hat auch eine Schichtnummer!

Nun zum XSL:

Über ein Dropdown-Menü kann die Schicht ausgewählt werden.
Wenn in dieser Schicht eine Schichtnummer exitier soll sie ausgegeben werden. SIehe hier:

<xsl:for-each select="//child::*[contains(local-name(), 'Schicht')]">
<xsl:if test="position()  = $positionsnummer">

xsl:choose

<xsl:when test="boolean(Schichtnummer)">

<xsl:for-each select="//child::*[contains(local-name(), 'Schicht')]">

<xsl:if test="position()  = $positionsnummer">

<xsl:value-of select="Schichtnummer"></xsl:value-of>
</xsl:if>
</xsl:for-each>
</xsl:when>

und nun zum fall wenn die Schichtnummer nicht in der aktuellen Schicht ist. Dann wird geprüft ob die Schichtnummer in den darunter liegenden Schichten existiert.

<xsl:when test="not (boolean(Schichtnummer))">

<xsl:for-each select="//child::*[contains(local-name(), 'Schicht')]">

<xsl:if test="position()  &gt; ($positionsnummer">

das geht auch alles, nun soll aber die erste Schichtnummer ausgegeben werde die gefunden wird, da ich nur die Schichtnummer haben will, die   in der am nächsten darunterliegenden Schicht haben will.
Ich bekomme aber immer alle. Ich kann aber an der for-each nichts ändern, da dann das Prinzip mit meiner Positionsnummer nicht mehr geht!

danke