I have a small issue with outputting elements inside an element in a for-each.
Basically, I want to output a selectbox with languages and for that selectbox I want to output 3 input fields, based on elements in a model.
The model look like this:
<Languages>
<Language name="ar" selected="false">Arabic
<Skills>
<Skill id="1" selected="false">Speak</Skill>
<Skill id="2" selected="false">Read</Skill>
<Skill id="4" selected="false">Write</Skill>
</Skills>
</Language>
<Language name="bg" selected="false">Bulgarian
<Skills>
<Skill id="1" selected="false">Speak</Skill>
<Skill id="2" selected="false">Read</Skill>
<Skill id="4" selected="false">Write</Skill>
</Skills>
</Language>
<Language name="ca" selected="false">Catalan
<Skills>
<Skill id="1" selected="false">Speak</Skill>
<Skill id="2" selected="false">Read</Skill>
<Skill id="4" selected="false">Write</Skill>
</Skills>
</Language>
</Languages>
What I want is to output the some HTML to like like this
<ul>
<li class="language">
<select>
<option value="ar">Arabic</option>
<option value="bg">Bulgarian</option>
<option value="ca">Bulgarian</option>
</select>
<input type="checkbox" value="speak" />
<input type="checkbox" value="read" />
<input type="checkbox" value="write" />
</li>
</ul>
My current XSLT is this:
<xsl:variable name="languages" select="$model/descendant::Languages" />
<select name="lang[]">
<xsl:for-each select="$languages/Language">
<option><xsl:value-of select="text()" /></option>
</xsl:for-each>
</select>
I somehow have to get into each language and do a foreach on Skills
<xsl:for-each select="./Skills/Skill"></xsl:for-each>
I just can't quite figure out how.
The idea is that the user can dynamically add new languages, the user speaks, reads or writes, and upon reentering the form, the selected inputs and selections will be marked and filled out.
No comments:
Post a Comment