0

XML ファイルを含む Flash マップを使用しています。XSLT を使用して、XML からマップの Web ページ (フラッシュ マップの外側) にリストを作成しました。マップと対話する XML から (入力された) 要素を選択する XSL を介して、これに JS 関数を追加したいと考えています。

たとえば、私のリストは 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"')です。50 の異なる関数 (州ごとに 1 つずつ) を記述することなく、State をリストに取り込まれた同じ州に = しようとしています。たとえば、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}); }

しかし、うまくいきませんでしたし、うまくいくとは思いませんでした。しかし、それは本質的に私が何をしたいのかという考えです.

アイデア?

4

1 に答える 1

0

あなたはこれを行うことができるはずです:

<table border="0">
  <tr bgcolor="#9acd32">
     <th>State</th>
  </tr>
  <xsl:for-each select="map/layer/feature/attributes/STATENAME">
    <xsl:sort select="."/>
      <tr>
        <td>
          <a onMouseOver='highlight("{.}")' 
             onMouseOut='highlight_clear()'
             href='http://mysite.com/{.}.html'>
             <xsl:value-of select="." />
          </a>
        </td>
      </tr>
   </xsl:for-each>
</table>

次に、highlight()関数を次のように変更します。

function highlight(state) {
    theMap.features('State="' + state + '"')
          .highlight({visible: true, 
                      fillColor: "#FFFF00", 
                      fillAlpha: 1.0});          
}
于 2013-03-20T19:34:42.877 に答える