我正在使用 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 中,我必须修改这一行来移动 sensor=false,如 google API 网页中所述:
<script src="http://maps.google.com/maps?file=api&v=2&key=myKey&sensor=false" type="text/javascript">
通过这些修改,代码在所有浏览器中运行良好,但 XSLT 不承认这种更改。如果我在 XSLT 中添加此版本的行,所有浏览器都会返回此错误:
XML 解析错误:指向 sensor=false 位置的格式不正确。