我正在尝试使用 XSL/XML 创建一个表。我是 XSL 和 XML 的新手,所以请放轻松我在一些事情上遇到了一些麻烦。这是我的 XML 文件:
<List>
<Classification>
<Class>
<Label>Milk</Label>
<NumberZone>1</NumberZone>
<Zone>
<Label>Milk1</Label>
<Frontier>500</Frontier>
</Zone>
<Zone>
<Label>Milk2</Label>
<Frontier>600</Frontier>
</Zone>
<Zone>
<Label>Milk3</Label>
<Frontier>600</Frontier>
</Zone>
<Zone>
<Label>Milk4</Label>
<Frontier>700</Frontier>
</Zone>
<image>
<File>milk.jpg</File>
</image>
</Class>
<Class>
<Label>Water</Label>
<NumberZone>2</NumberZone>
<Zone>
<Label>Water1</Label>
<Frontier>800</Frontier>
</Zone>
<Zone>
<Label>Water2</Label>
<Frontier>900</Frontier>
</Zone>
<image>
<File>water.jpg</File>
</image>
</Class>
<Class>
<Label>Juice</Label>
<NumberZone>3</NumberZone>
<Zone>
<Label>Juice1</Label>
<Frontier>950</Frontier>
</Zone>
<Zone>
<Label>Juice2</Label>
<Frontier>990</Frontier>
</Zone>
<image>
<File>juice.jpg</File>
</image>
</Class>
</Classification>
</List>
它通常更长,但我剪掉了一些部分。
我希望我的桌子看起来像这样:
- 第一栏:牛奶、水、果汁……
- 第二栏:我想要图片。
- 第三列:Milk1、Water1、Juice1。
- 第四列:Milk2、Water2、Juice2。
- (等等)。
到目前为止,我有这个:
<table border="1">
<tr><th>Column 1</th><th>Image</th><th>Column 3</th></tr>
<xsl:for-each select="Classification/Class">
<tr>
<td><em><xsl:value-of select="Label" /></em></td>
<td>
<xsl:attribute name="src">
<xsl:value-of select="image/File"/>
</xsl:attribute>
</td>
<td><xsl:value-of select="Zone/Label"/></td>
<td colspan="1"><xsl:value-of select="Zone/Label"/></td>
<td colspan="1"><xsl:value-of select="Zone/Label"/></td>
</tr>
</xsl:for-each>
</table>
- 这完美地显示了第一列与牛奶、水和果汁。
- 第二列不起作用,它只是空白。该图像不会出现在表格中,您知道如何解决这个问题吗?*
- 第三列也可以完美地显示 Milk1、Water1、Juice1。
- 显然,第四列不起作用,因为我使用的 value-of 与第三列中的相同。我不知道如何让 Milk2、Water2 和 Juice2 显示在该列中,因为它使用相同的元素名称(即区域/标签)
所以我需要修复两件事:我需要修复第二列以实际显示每个框中的图像。我还需要修复第四列以显示 Milk2、Water2 和 Juice2。我现在的主要问题是让第四列工作,我真的不明白如何显示 Milk2、Water2 等。
我还想稍后在每个单元格中添加单选按钮或复选框,以便我可以在我的网页中使用 JavaScript。我觉得每个框都需要不同的 ID,所以我不确定如何使用 XSL 来实现,因为它只是通过 XML 文件进行“循环”,所以我不确定如何添加单选按钮,或每个单元格中的复选框。* 这目前不那么重要,我会在我希望对我之前提到的内容有所帮助之后继续努力,但这也会有所帮助。
编辑:
我有两个问题。我设法通过执行以下操作添加复选框:
<td colspan="1"><input type="checkbox" name="Zone1" id="Zone1" /><xsl:value-of select="Zone[1]/Label"/></td>
<td colspan="1"><input type="checkbox" name="Zone2" id="Zone1" /><xsl:value-of select="Zone[2]/Label"/></td>
<td colspan="1"><input type="checkbox" name="Zone3" id="Zone1"/> <xsl:value-of select="Zone[3]/Label"/></td>
<td colspan="1"><input type="checkbox" name="Zone4" id="Zone1" /><xsl:value-of select="Zone[4]/Label"/></td>
问题是,我认为每列中的每个元素都有相同的 ID,对吗?我如何更改它,以便他们都有不同的 ID?
此外,在我的问题中无法从 XML 文件中看到它,但稍后将只有例如 Milk4。这意味着我希望 Water4 和 Juice4 的单元格完全消失,但它仍然存在,并带有一个复选框。