我正在使用具有 XML 文件的 Flash 地图。我已经使用 XSLT 从 XML 填充了地图网页上的列表(在 Flash 地图之外)。我想通过 XSL 添加一个 JS 函数,该函数从 XML 中选择(填充的)元素,该元素将与地图交互。
例如,我的列表是 50 个州。这是 XML 的一小部分:
<attributes>
<col name="State">Kentucky</col>
<STATENAME>Kentucky</STATENAME>
</attributes>
等等...所有 50 个状态都包含在上述 XML 中
这是我填充列表的方式:
<table border="0">
<tr bgcolor="#9acd32">
<th>State</th>
</tr>
<xsl:for-each select="map/layer/feature/attributes">
<xsl:sort select="STATENAME"/>
<tr>
<td><a onMouseOver='highlight()' onMouseOut='highlight_clear()'><xsl:attribute name="href">http://mysite.com/<xsl:value-of select="STATENAME"/>.html</xsl:attribute><xsl:value-of select="STATENAME" /></a></td>
</tr>
</xsl:for-each>
</table>
所有 50 个州都以这种方式提供了指向其各自页面的链接:http: //mysite.com/statename.html
这是Javascript:
function highlight() {
theMap.features('State="Kentucky"').highlight({visible: true, fillColor: "#FFFF00", fillAlpha: 1.0});
}
这里的关键是('State="Kentucky"')我试图让 State to = 填充在列表中的 SAME 状态,而不必编写 50 个不同的函数 - 每个状态一个。例如,当所有 50 个州都被填充时,如果鼠标移到德克萨斯上空,它会自动调出 theMap.features('State="Texas"'),如果移过内布拉斯加州,就会调出内布拉斯加州。
我试过这样做:
function highlight() {
var sn='<xsl:value-of select="STATENAME"/>';
theMap.features('State="sn"').highlight({visible: true, fillColor: "#FFFF00", fillAlpha: 1.0}); }
但它没有用,我也不认为它会。但是,它本质上是我想要发生的事情的想法。
想法?