Hallo,
ich arbeite gerade an einem Datenbankverwaltungstool in PHP5 mit XML/XSLT. Soll heissen: will man einen Tabelleneintrag bearbeiten, so holt PHP den Eintrag aus der Datenbank, macht ein XML-Dokument daraus und jagt dieses durch einen XSLT-Prozessor, um das XHTML zu erzeugen, welches letztlich das Eingabeformular für den User darstellt.
Probleme machen mir nun vorselektierte Auswahllisten: Beispielsweise sowas hier soll mittels XSLT automatisch erzeugt werden:
<select name="_xy_month">
<option>1</option>
<option>2</option>
...
<option selected="selected">12</option>
...
<option>30</option>
<option>31</option>
</select>Dafür benötige ich eine Schleife, wie man sie aus der imperativen Programmierung kennt:
for (i=1; i<32; i++) { ... }Geht sowas auch in XSLT? Also entweder eine Variable hochzählen oder aber eine XPATH-Funktion, die ein Interval oder eine Menge ausgibt, so dass eine Code wie dieser resultieren würde:
<xsl:for-each select="Interval(1,31)/*" >
Hä??? Wie biette?
Was ist jetzt "Interval"? Und was sollen nun "1" bzw. "31" denn darstellen? Ich kann deine Fragestellung damit nicht nachvollziehen.
<option><xsl:for-each select="."></option>
Das wäre so oder so falsch.
Und dafür was du laut deiner Fragestellung möchtest, zumindest so verstehe ich das, brauchst du keine besondere "Schleifen":
<xsl:template match="select">
<select>
<xsl:for-each select="option">
<option>
<xsl:if test="@selected">
<xsl:attribute name="selected">selected</xsl:attribute>
</xsl:if>
<xsl:value-of select="." />
<option>
</xsl:for-each>
</select>
</xsl:template>
Grüße
Thomas