3つの列と動的な行を持つテーブルを作成するコード(HTMLとJavaScript)を入手しました。最初の列のエントリに基づいたドロップダウンメニューが欲しいのですが。したがって、テーブルが完成した後、ドロップダウンメニューに入力する必要があります。最初の列には、複数の同一のエントリを含めることができます。したがって、ドロップダウンメニューに一度だけ表示する必要があります。現時点では、静的なドロップダウンメニューしかありません。以下のコードを参照してください。プログラムは静的ドロップダウンメニューで非常にうまく機能しています。
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format">
<table id="myTable">
<colgroup>
<col width="150" style="background-color:red"></col>
<col width="165"></col>
</colgroup>
<tr style ="background-color:grey">
<th>plane
<select id="modelRangeDropdown" onchange="filterReports()">
<option selected="selected">All</option>
<option>number1</option>
<option>number2</option>
</select>
</th>
<th>Datum</th>
<th>Secret</th>
</tr>
<xsl:for-each select="logstore/plane/trigger">
<tr>
<td><xsl:value-of select="../Name"/></td>
<td><xsl:value-of select="date"/></td>
<td><xsl:value-of select="secret"/></td>
</tr>
</xsl:for-each>
</table>
<script type="text/javascript" src="/../../../filterReports.js"></script>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
あなたがXSLT 2.0を使用することができれば、あなたは使用することができますdistinct-values
と書きxsl:for-each
そうのように
<select id="modelRangeDropdown" onchange="filterReports()">
<option selected="selected">All</option>
<xsl:for-each select="distinct-values(logstore/plane/Name)">
<option value="{.}">
<xsl:value-of select="." />
</option>
</xsl:for-each>
</select>
一方、XSLT 1.0に制限されている場合は、MuenchianGroupingと呼ばれる手法を使用する必要があります。次のようにキーを定義します。
<xsl:key name="planes" match="plane/Name" use="." />
次に、個別の値を取得するには、これを実行します。
<select id="modelRangeDropdown" onchange="filterReports()">
<option selected="selected">All</option>
<xsl:for-each select="logstore/plane/Name[generate-id() = generate-id(key('planes', .)[1])]">
<option value="{.}">
<xsl:value-of select="." />
</option>
</xsl:for-each>
</select>
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加