Dave: Arrays in XSL

Beitrag lesen

Hi,

ich generiere mittels XSLT aus einem XML ein Formular für eine HTML-Seite.
Nun habe ich ein Problem mit den Labels und der ID des inputs.

Es gibt den Fall das zuerst mehrere Labels nebeneinander stehen sollen und dann erst die Input-Felder, zur Verdeutlichung:

Als ID für die Inputs verwende ich die XSL Funktion "generate-id()", da ich jetzt aber zuerst alle Labels ausgebe muss ich für jedes Label die generierte ID irgendwo Zwischenspeichern, damit ich bei der Ausgabe der inputs die entsprechende wieder habe.

Ich dachte da an etwas wie:

<xsl:for-each select="./input[@type='text']">  
	<xsl:variable name="inputID[position()]" select="generate-id()" />					  
	<label>  
		<xsl:attribute name="for">  
			<xsl:value-of select="$inputID[position()]" />  
		</xsl:attribute>  
		  
		<xsl:value-of select="@label"/>  
	</label>  
	<xsl:if test="position()!=last()">, </xsl:if>  
</xsl:for-each>  
<xsl:for-each select="./input[@type='text']">  
	<input type="text">  
		<xsl:attribute name="id">  
			<xsl:value-of select="$inputID[position()]" />  
		</xsl:attribute>  
	</input>  
</xsl:for-each>

Allerdings kann man so offensichtlich kein Array erzeugen/verwenden.
Meine Suche nach XSL-Arrays blieb bis jetzt erfolglos, enttäuschenderweise habe ich nicht mal einen Workaround gefunden.

Hat jemand eine Idee wie ich das lösen könnte?

Hier noch ein Beispiel des Aufbaus des betroffenen XML:

<fieldset>  
	<input type="text" name="PLZ" label="PLZ" class="w70px">  
		[...]  
	</input>  
	<input type="text" name="Ort" label="Ort" class="w220px" />  
</fieldset>

~Dave