Hallo,
Die Anzahl der Elemente ist beliebig und ich benötige Minmal und Maximalwert für x und y. Also für jeweils für Werte vor und nach dem Leerzeichen.
Insgesamt also vier werte: dann wirst du um so was nicht herumkommen (analog dann für minimumY und maximumY mit substring-after()):
<xsl:template name="minimumX">
<xsl:param name="Knoten" />
<xsl:variable name="minimum">
<xsl:if test="$Knoten">
<xsl:for-each select="$Knoten">
<xsl:sort select="substring-before(.,' ')" data-type="number" />
<xsl:if test="position() = 1">
<xsl:value-of select="number(substring-before(.,' '))" />
</xsl:if>
</xsl:for-each>
</xsl:if>
</xsl:variable>
<xsl:value-of select="$minimum" />
</xsl:template>
<xsl:template name="maximumX">
<xsl:param name="Knoten" />
<xsl:variable name="maximum">
<xsl:if test="$Knoten">
<xsl:for-each select="$Knoten">
<xsl:sort select="substring-before(.,' ')" data-type="number" order="descending" />
<xsl:if test="position() = 1">
<xsl:value-of select="number(substring-before(.,' '))" />
</xsl:if>
</xsl:for-each>
</xsl:if>
</xsl:variable>
<xsl:value-of select="$maximum" />
</xsl:template>
Dann ob nun in einer Variable oder in einem xsl:attribut deas entsprechenden Tempalte aufrufen:
<xsl:call-template name="minimumX">
<xsl:with-param name="Knoten" select="xplan:BPlanAuszug//gml:pos"/>
</xsl:call-template>
Ein Wert soll herauskommen. Ich hatte gedacht, dass man immer einen Knoten nimmt und den mit dem nächsten oder ähnlich vergleicht, um so den Minimalwert zu bekommen. Das ist glaub eleganter als das Andere. Wobei mir damit auch schon sehr geholfen ist :-)
Nein das ist nicht wirklich eleganter und vor allem in diesem fall auch nicht nötig und wäre auch viel weniger performanter. Recursion sollte man nur anwenden, wenn es wirklich nötig ist ;-)
Grüße
Thomas