Hallo,
<xsl:when test="not (boolean(ort))">
<xsl:for-each select="//descendant::*[contains(local-name(), 'Name')]/bgs:Daten[position() < ($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() < ($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--