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>
通常はもっと長いのですが、一部カットしています。
テーブルを次のように表示します。
- 最初の列: 牛乳、水、ジュース...
- 2 番目の列: 画像が必要です。
- 3 列目: Milk1、Water1、Juice1。
- 4 列目: 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>
- これにより、最初の列がミルク、水、ジュースで完全に表示されます。
- 2 番目の列は機能しません。空白です。画像がテーブルに表示されません。これを修正する方法はありますか?*
- 3 番目の列も完璧に機能し、Milk1、Water1、Juice1 を示しています。
- 4 列目は明らかに機能しません。3 列目と同じ value-of を使用しているためです。同じ要素名 (Zone/Label) を使用しているため、Milk2、Water2、および Juice2 をその列に表示する方法がわかりません。
したがって、修正する必要があることが 2 つあります。各ボックスに実際に画像を表示するには、2 番目の列を修正する必要があります。また、4 番目の列を修正して、Milk2、Water2、および Juice2 を表示する必要があります。今のところ私の主な問題は、4 番目の列を機能させることです。Milk2、Water2 などを表示する方法が本当にわかりません。
また、Web ページで JavaScript を使用できるように、後で各セルにラジオ ボタンまたはチェック ボックスを追加したいと考えています。ボックスごとに異なる ID が必要になると思うので、XSL を使用してそれを実現する方法がわかりません。XML ファイルを「ループ」するだけなので、ラジオ ボタンを追加する方法がわかりません。 、または各セルのチェック ボックス。* これは今のところそれほど重要ではありません。前に述べたことについて助けが必要な場合は後で作業しますが、これも役に立ちます。
編集:
2 つの問題があります。次のようにして、チェックボックスを追加することができました。
<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 のセルを完全に非表示にしたいのですが、まだそこにあり、チェック ボックスが空になっています。