0

XSLT を使用して XML ファイルを HTML に変換しています。

XML ファイルには空間座標に関する情報が含まれているため、それらを使用して、Google Maps API を使用してマップを生成したいと考えています。

これを行うために、JavaScript を成文化し、それを XSLT に組み込みました。このコードは Internet Explorer と Google Chrome では問題なく動作しますが、Mozilla Firefox では動作せず、理由がわかりません...

Javascriptはこれです:

<script><![CDATA[ 
    function LoadMap(div_map, szminx, szmaxx, szminy, szmaxy) {
        var minx, maxx, miny, maxy;

        minx=parseFloat(szminx);
        maxx=parseFloat(szmaxx);
        miny=parseFloat(szminy);
        maxy=parseFloat(szmaxy);

        if (GBrowserIsCompatible() && !isNaN(minx) && !isNaN(maxx) && !isNaN(miny) && !isNaN(maxy)) {
            var d;
            var zoomLevel;              
            var mapSize = new google.maps.Size(250,250, "px", "px");

            var centreX = minx+(maxx-minx)/2;
            var centreY = miny+(maxy-miny)/2;

            var map = new google.maps.Map (document.getElementById(div_map), {draggableCursor:"crosshair", size:mapSize});
            map.setCenter(new google.maps.LatLng(centreY,centreX));
            map.addControl(new google.maps.SmallMapControl());

            d=maxx-minx;
            if (d<maxy-miny) {d=maxy-miny;}

            if (d<0.0000001) {d=360;}

            zoomLevel=parseInt(-Math.log(d)/Math.log(2)+8);     

            map.setZoom(zoomLevel);
        }
    }
]]></script>

そして、次の行を使用して XSLT で呼び出しています。

...
<td width="250px">
    <div id="map" style="width:250px; height:250px; display:block;">
    </div>
    <script type="text/javascript"> LoadMap("map", 
        <xsl:value-of select="west/coord"/>, 
        <xsl:value-of select="east/coord"/>, 
        <xsl:value-of select="south/coord"/>,
        <xsl:value-of select="north/coord"/>);
    </script>
</td>
...

アイデア?

編集

問題は Google API が追加された XSLT の部分にあるようです。私の XSLT では、次のように埋め込まれています。

 <script src="http://maps.google.com/maps?file=api&amp;hl=ca&amp;v=2&amp;sensor=false&amp;key=myKey" type="text/javascript"/>

そして、私が言ったように、それは Chrome と IE でうまく動作します

JavaScript を静的 HTML に配置する場合は、Google API Web ページで説明されているように、この行を変更して sensor=false を移動する必要があります。

<script src="http://maps.google.com/maps?file=api&amp;v=2&amp;key=myKey&sensor=false" type="text/javascript">

これらの変更により、コードはすべてのブラウザーで適切に動作しますが、この変更は XSLT によって認められていません。このバージョンの行を XSLT に追加すると、すべてのブラウザで次のエラーが返されます。

XML 解析エラー: sensor=false の位置を指している形式が正しくありません。

4

1 に答える 1

0

以前に最後のアンパサンドをエスケープするのを忘れていたようですsensor=true- &sensorは次のように&sensorにする必要があります:

<script src="http://maps.google.com/maps?file=api&amp;v=2&amp;key=myKey&amp;sensor=false" type="text/javascript">

そのエラーにも意味があります。

于 2013-04-26T20:08:21.117 に答える