我有一個名稱和電話號碼以及與其關聯的城市(可能是多個城市)的XML文件。我想要做的是生成一個唯一的城市列表,然後讓用戶選擇其中一個城市。當他們做一個與該城市相關的所有名字的列表被顯示時。XSL:使用動態選擇列表生成過濾列表
我可以生成唯一的城市列表。我可以生成與硬編碼城市相關的名稱。當城市被選中時,我可以使名稱/電話列表可見或不可見。我不能做的是弄清楚如何使用選擇列表「selected」值來過濾名稱。我意識到這可能是微不足道的,但對一個新手要好,並告訴我它是如何完成的!
這裏是我的代碼:
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<head>
<script type="text/javascript">
var showList = function() {
document.getElementById("swarms").style.visibility = "visible";
<xsl:variable name="thisOne" select="'document.allCities.select.options[document.allCities.select.selectedIndex].value'" />
}
</script>
</head>
<body>
<!-- Display list of cities -->
<div id="city_list">
<xsl:variable name="unique-list" select="swarmlist/member/cities/city[not(.=following::city)]" />
<form name="allCities">
<strong>Select A City and Click the Button to Display the List: </strong>
<select name="select">
<option value="all">All</option>
<xsl:for-each select="$unique-list">
<xsl:sort select="."/>
<option>
<xsl:attribute name="value"><xsl:value-of select="."/></xsl:attribute>
<xsl:value-of select="."/>
</option>
</xsl:for-each>
</select>
<input name="submit" type="button" value="Display" onclick="showList();" />
</form>
</div>
<!-- End of City list -->
<!-- Display list of volunteers -->
<table border="1" id="swarms" style="visibility:hidden">
<tr bgcolor="#9acd32">
<th>Name</th>
<th>Phone</th>
</tr>
<xsl:for-each select="swarmlist/member">
<xsl:choose>
<xsl:when test="cities/city = $thisOne">
<tr>
<td><xsl:value-of select="name"/></td>
<td><xsl:value-of select="phone"/></td>
</tr>
</xsl:when>
</xsl:choose>
</xsl:for-each>
</table>
<!-- End of volunteer list -->
</body>
</html>
</xsl:template>
</xsl:stylesheet>