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&hl=ca&v=2&sensor=false&key=myKey" type="text/javascript"/>
そして、私が言ったように、それは Chrome と IE でうまく動作します
JavaScript を静的 HTML に配置する場合は、Google API Web ページで説明されているように、この行を変更して sensor=false を移動する必要があります。
<script src="http://maps.google.com/maps?file=api&v=2&key=myKey&sensor=false" type="text/javascript">
これらの変更により、コードはすべてのブラウザーで適切に動作しますが、この変更は XSLT によって認められていません。このバージョンの行を XSLT に追加すると、すべてのブラウザで次のエラーが返されます。
XML 解析エラー: sensor=false の位置を指している形式が正しくありません。