lösungsstrategie
ulli
- xsl
0 Thomas Meinike0 ulli
hallo euch allen
würde mal um einen kleinen gedankenaustausch bitten.
wie realisiere ich es am besten, dass mir das xsl-sheet eine reihe von bildern (meinetwegen sterne) ausgibt (zu finden zB bei bewertungen, hotelsternen, ...)?
die information, wieviele sterne (oder was auch immer) liegt in einem xml-dokument vor.
zum problem:
... es gibt ja soweit ich weiß keine möglichkeit eine schleife in xsl zu machen oder doch? (schleife aufgrund einer variablen, nicht von knoten oder vergleichbarem) ... somit stellt sich für mich die frage wie machen?
aus der anzahl (der sterne) einen dateinamen zu basteln und dort dann schon vorgefertigt, eine grafik mit der richtigen anzahl der symbole zu hinterlegen ist auch möglich aber doch sehr "unfein" oder?
cu
ulli
Hallo,
... es gibt ja soweit ich weiß keine möglichkeit eine schleife in xsl zu machen oder doch? (schleife aufgrund einer variablen, nicht von knoten oder vergleichbarem) ... somit stellt sich für mich die frage wie machen?
Man kann Templates mit xsl:call-template rekursiv aufrufen. Ich habe mal einen kleinen Testcase erstellt.
hotels.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="hotels.xsl"?>
<!-- Test by TM 07/03 -->
<wurzel>
<hotel sterne="1"><bla>...</bla></hotel>
<hotel sterne="2"><bla>...</bla></hotel>
<hotel sterne="3"><bla>...</bla></hotel>
<hotel sterne="4"><bla>...</bla></hotel>
<hotel sterne="5"><bla>...</bla></hotel>
</wurzel>
hotels.xsl
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<!-- Test by TM 07/03 -->
<xsl:output
method="html"
doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN"
doctype-system="http://www.w3.org/TR/html401/loose.dtd"
encoding="ISO-8859-1"
version="4.01"
indent="yes"
/>
<xsl:template match="/">
<html>
<head><title>Test</title></head>
<body>
<xsl:for-each select="wurzel/hotel">
Hotel <xsl:value-of select="position()" /> 
<xsl:call-template name="bilder">
<xsl:with-param name="to" select="@sterne" />
<xsl:with-param name="step" select="1" />
<xsl:with-param name="from" select="1" />
</xsl:call-template>
<br />
</xsl:for-each>
</body>
</html>
</xsl:template>
<xsl:template name="bilder">
<xsl:param name="from" />
<xsl:param name="to" />
<xsl:param name="step" />
<xsl:if test="$from <= $to">
<img src="stern.gif" alt="" />
<xsl:call-template name="bilder">
<xsl:with-param name="from" select="$from+$step" />
<xsl:with-param name="to" select="$to" />
<xsl:with-param name="step" select="$step" />
</xsl:call-template>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
Wenn stern.gif vorhanden ist, sollte die Ausgabe funktionieren. Ich hoffe mal, dass es dem Gesuchten nahekommt.
MfG, Thomas
Hallo,
hallo thomas
[...] <- viel viel quelltext, den ich gar nicht erwartet hätte :-)
danke für deine wirklich ausführliche erklärung/beispiel ... wie gesagt hätte ich nicht erwartet
... habs auch verstanden ...
... in der zwischenzeit hab ich dann doch die ganzen bilder gebastelt :-) aber ich werde dann doch auf deine version umsteigen ... ist einfach besser zu pflegen
MfG, Thomas
cu
ulli <- der gerade 36 bilder umsonst gemacht hat *grins