for-each loop logik, eller manglen på samme!
Hejsa!Jeg har et XML-doc, der ser således ud i en stærkt beskåret udgave:
<?xml version="1.0" encoding="utf-8" ?>
<survey name="Online Survey">
<question title="How would you rate my website?">
<rowselect title="Site Design">
<option type="radio" name="dontknow" value="I don't know" />
<option type="radio" name="designbad" value="Bad" />
</rowselect>
<rowselect title="Site Navigation">
<option type="radio" name="navdontknow" value="I don't know" />
<option type="radio" name="navdif" value="Difficult to navigate" />
</rowselect>
</question>
</survey>
Jeg vil gerne have at outputtet af dette kommer til at stå således:
How would you rate my website:
Site Design
1. I Don't know
2. Bad
Navigation
1. I don't know
2. Difficult to navigate
Dette skal kunne gøres i ét loop. Derfor har jeg lavet et XSLT, som ser således ud (stærkt beskåret):
<xsl:for-each select="//question/rowselect">
<tr>
<td>
<table>
<tr>
<td>
<i><xsl:value-of select="@title" /></i>
</td>
</tr>
<tr>
<xsl:for-each select="//question/rowselect/option">
<td>
<xsl:if test="@type='text'">
<asp:TextBox id="{@name}" runat="server" />
</xsl:if>
<xsl:if test="@type='radio'">
<asp:RadioButtonList id="{@name}" runat="server">
<asp:ListItem Value="{@value}">
<xsl:value-of select="@value" />
</asp:ListItem>
</asp:RadioButtonList>
</xsl:if>
</td>
</xsl:for-each>
</tr>
</table>
</td>
</tr>
</xsl:for-each>
Problemet er, at denne looper igennem alle //question/rowselect/option (altså svarene) 2 gange, således, at outputtet ser således ud:
- How would you rate my website?
Site Design
I don't know
Bad
I don't know
Difficult to navigate
Site Navigation
I don't know
Bad
I don't know
Difficult to navigate
Altså svarene fra de 2 spørgsmål kommer med i begge spørgsmål! Jeg kan godt se hvorfor dette sker, men hvordan retter jeg det, således, at jeg 2. for-each loop kun henter data, som tilhører <ROWSELECT> nummer 2 ??
På forhånd tak for hjælpen. Jeg håber spørgsmålet er forstået! :)
Thomas Regin.