我想在我的HTML頁面中使用XLS Transformations生成一個GoogleMap v3(一切正常,v2)。我的JS代碼來自this page。XSLT,Doctype和Google-Map v3不能正常工作
基本上,當所有東西都是純HTML格式時,該映射正常工作,但是當我嘗試將它包含在XSL樣式表中時,Firefox(v3.6)抱怨並且不想加載任何東西:
Error: uncaught exception: [Exception... "Operation is not supported" code: "9" nsresult: "0x80530009 (NS_ERROR_DOM_NOT_SUPPORTED_ERR)" location: " http://maps.google.com/maps/api/js?sensor=false Line: 9"]
Error: google.maps.LatLng is not a constructor Source File: file:///home/kevin/google/data.xml Line: 2
下面是一個簡化版本,我使用的XSL代碼:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE xsl:stylesheet >
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
<style type="text/css">
html { height: 100% }
body { height: 100%; margin: 0px; padding: 0px }
#map_canvas { height: 100% }
</style>
<title>Google Maps JavaScript API v3 Example: Map Simple</title>
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
<script type="text/javascript">
function initialize() {
var myLatlng = new google.maps.LatLng(-34.397, 150.644);
var myOptions = {
zoom: 8,
center: myLatlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
}
var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
}
</script>
</head>
<body onload="initialize()">
<div id="map_canvas"></div>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
和簡約的XML文檔來觸發轉換:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE xsl:stylesheet>
<?xml-stylesheet type="text/xsl" href="Display.xsl"?>
<root />
根據我的谷歌的調查,問題可能來自一個錯誤的文檔類型,但我真的不知道如何解決它,功能類似於
<xsl:output method="html"
indent="yes"
omit-xml-declaration="yes"
encoding="utf-8"
doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN"
doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" />
不會改變任何東西。
編輯:我的實際DOCTYPE稍微COMPLE,對XML:
<!DOCTYPE xsl:stylesheet [<!ENTITY auml "ä" ><!ENTITY ouml "ö" ><!ENTITY uuml "ü" ><!ENTITY szlig "ß" ><!ENTITY Auml "Ä" ><!ENTITY Ouml "Ö" ><!ENTITY Uuml "Ü" ><!ENTITY euml "ë" ><!ENTITY ocirc "ô" ><!ENTITY nbsp " " ><!ENTITY Agrave "À" ><!ENTITY Egrave "È" ><!ENTITY Eacute "É" ><!ENTITY Ecirc "Ê" ><!ENTITY egrave "è" ><!ENTITY eacute "é" ><!ENTITY ecirc "ê" ><!ENTITY agrave "à" ><!ENTITY iuml "ï" ><!ENTITY ugrave "ù" ><!ENTITY ucirc "û" ><!ENTITY uuml "ü" ><!ENTITY ccedil "ç" ><!ENTITY AElig "Æ" ><!ENTITY aelig "Ŋ" ><!ENTITY OElig "Œ" ><!ENTITY oelig "œ" ><!ENTITY euro "€"><!ENTITY laquo "«" ><!ENTITY raquo "»" >]>
和XSL:
<!DOCTYPE xsl:stylesheet [
<!ENTITY % xhtml-lat1 SYSTEM
"http://www.w3.org/TR/xhtml1/DTD/xhtml-lat1.ent">
<!ENTITY % xhtml-special SYSTEM
"http://www.w3.org/TR/xhtml1/DTD/xhtml-special.ent">
<!ENTITY % xhtml-symbol SYSTEM
"http://www.w3.org/TR/xhtml1/DTD/xhtml-symbol.ent">
%xhtml-lat1;
%xhtml-special;
%xhtml-symbol;
]>
正確處理所有的重音和特殊字符,所以我喜歡避免擺脫它,如果可能的話
編輯2:問題實際上是與我嘗試通過Mapstraction API加載OpenStreetMap完全一樣,不允許使用document.write
。
的另一件事情是,谷歌地圖V2正常工作,當我使用一個回調函數:
http://maps.google.com/maps?file=api&v=2.x&key={myKey}&c&async=2&callback={myInitFunct}
什麼可以是錯誤的任何線索?
(@Dimitre,我的xslt標記有什麼問題?) – Kevin 2010-08-24 12:52:38
這不是一個XSLT問題。這個問題提出的問題不是關於「如何使用XSLT解決這個特定問題」,而是關於如何使特定環境/ xslt處理器執行的問題。總結 - 這個問題是FF特有的,所以它屬於xsltprocessor標籤。 – 2010-08-24 13:10:28