dey: in for-each - erstes Element was gefunden wird ausgeben

Beitrag lesen

Hallo,

<xsl:when test="not (boolean(ort))">
        <xsl:for-each select="//descendant::*[contains(local-name(), 'Name')]/bgs:Daten[position()  &lt; ($anzahl_layer)-($positionsnummer)]">
         <xsl:if test="position() = last() ">
         <xsl:value-of select="ort"/>

</xsl:if>
         </xsl:for-each>
         </xsl:when>

Was außer dir wohl noch niemend verstanden hat ist, was das for-each soll. Am Anfang sagst du du willst einen Treffer (den ersten) Anzeigen, filterst aber mit position() <5 vier Treffer aus. Danach versuchst du es mit position() = last(), was immerhin nur einen Treffer bringen sollte, sofern es denn eine Übereinstimmung gibt, aber den letzten.
Warum nicht so
<xsl:value-of select="//descendant::*[contains(local-name(), 'Name')]/bgs:Daten[position()  &lt; ($anzahl_layer)-($positionsnummer)]/ort">
Dies sollte nur einen, den ertsen, Treffer anzeigen.
Wobei hier value-of select mglicherweise nicht zum Kind-Element Ort paßt. Dann mußt du den Pfad ein wenig anpassen. Ohne dein XML ist das aber für mich nicht genauer zu sehen.

bydey

--
-- bydey ist die Signatur und Verabschiedung, nicht der Nick --
-- Navigate all your PHP web projects with  PHP Project Browser--