2014-10-20 59 views
1

这是一个几年,因为我已经做任何编码,所以我希望你能和我一起承担使用XSL输出KML资料...在HTML表格

我有输出的应用程序(非标准)kml文件。

<?xml version="1.0" encoding="UTF-8"?> 
<kml xmlns="http://www.opengis.net/kml/2.2"> 
<Document> 
    <Style id="icon-503-BCA920"> 
     <IconStyle> 
      <color>FFBCA920</color> 
      <Icon><href>http://www.gstatic.com/mapspro/images/stock/503-wht-blank_maps.png</href></Icon> 
    </IconStyle> 
    </Style> 
    <Placemark> 
     <name><![CDATA[Deficiency 2]]></name> 
     <styleUrl>#icon-503-BCA920</styleUrl> 

     <ExtendedData> 
      <Data name="rating"><value>0</value></Data> 
      <Data name="images"><value>file:///storage/emulated/0/mapin/1411660694536.jpg||</value></Data> 
     </ExtendedData> 

     <description><![CDATA[<p dir="ltr">4001; Vegetation Control; Mowing; + 60 &lt; 2m</p> 
      <br/><img src="images/image_1.jpg"/> 
      <br/><img src="images/image_1.jpg"/> 
     ]]></description> 

     <Point> 
      <coordinates>-89.59504411, 48.0247752, 0</coordinates> 
     </Point> 
    </Placemark> 

我想用xsl将它转换/输出为html页面/表格。什么到目前为止,我还收集是我的代码想是这样的:

<html> 
<body> 

<?xml version="1.0" encoding="ISO-8859-1"?> 
<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:kml="http://www.opengis.net/kml/2.2" xmlns:gx="http://www.google.com/kml/ext/2.2"> 

<xsl:template match="/"> 

<h2>Audit Results</h2> 
    <table border="1"> 
     <tr bgcolor="#9acd32"> 
     <th style="text-align:center">Name</th> 
     <th style="text-align:center">Description</th> 
     <th style="text-align:center">Coordinates</th> 
     </tr> 
     <xsl:for-each select="kml:kml/dml:Document/kml:Placemark"> 
     <tr> 
     <td><xsl:value-of disable-output-escaping="yes" select="kml:name"/></td> 
     <td><xsl:value-of disable-output-escaping="yes" select="kml:description"/></td> 
     <td><xsl:value-of select="kml:Point/kml:coordinates"/></td> 
     </tr> 
     </xsl:for-each> 
    </table> 
</xsl:template> 
</xsl:stylesheet> 

</body> 
</html> 

读过的一切,我可以把我的手放在有关XSL或两个我在我的绳子结束了最后一天。我希望有人能告诉我的是: 1)我必须打电话给我想要显示的kml文件吗?它是一个本地文件。 2)我该怎么处理这个错误?你知道哪些文章可以帮助我吗?

我试图做的是使用xsl代码输出一个html文件,我可以打印每次我完成另一个“audit.kml”文件。有没有更好/更简单的方法,你会建议这样做?

我真诚地期待学习如何做到这一点我自己,不要在这里要求一块代码...所有的建议非常感谢!


谢谢菲尔。 所以,现在我有一个有效的xsl文件,我试图将它应用到我的本地使用浏览器的kml文件。有些读者指出我正朝着Javascript的方向努力。当我使用下面的脚本时,我想出了一个空白文档...有什么建议?

<html> 
<head> 
<script type="text/javascript"> 
function loadXMLDoc(filename) 
{ 
if (window.ActiveXObject) 
    { 
    xhttp = new ActiveXObject("Msxml2.XMLHTTP"); 
    } 
else 
    { 
    xhttp = new XMLHttpRequest(); 
    } 
xhttp.open("GET", filename, false); 
try {xhttp.responseType = "msxml-document"} catch(err) {} // Helping IE11 
xhttp.send(""); 
return xhttp.responseXML; 
} 

function displayResult() 
{ 
xml = loadXMLDoc("doc.kml"); 
xsl = loadXMLDoc("reportGen.xsl"); 
// code for IE 
if (window.ActiveXObject || xhttp.responseType == "msxml-document") 
    { 
    ex = xml.transformNode(xsl); 
    document.getElementById("example").innerHTML = ex; 
    } 
// code for Chrome, Firefox, Opera, etc. 
else if (document.implementation && document.implementation.createDocument) 
    { 
    xsltProcessor = new XSLTProcessor(); 
    xsltProcessor.importStylesheet(xsl); 
    resultDocument = xsltProcessor.transformToFragment(xml, document); 
    document.getElementById("example").appendChild(resultDocument); 
    } 
} 
</script> 
</head> 
<body onload="displayResult()"> 
<div id="example" /> 
</body> 
</html> 

回答

0

你就近了。你应该有xsl:stylesheet作为你的根。另外你有你的名字空间

<xsl:for-each select="kml:kml/dml:Document/kml:Placemark"> 

一个错字应

<xsl:for-each select="kml:kml/kml:Document/kml:Placemark"> 

你想是这样的:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:kml="http://www.opengis.net/kml/2.2" xmlns:gx="http://www.google.com/kml/ext/2.2"> 
    <xsl:template match="/"> 
     <html> 
      <head> 
       <title/> 
      </head> 
      <body> 
       <h2>Audit Results</h2> 
       <table border="1"> 
        <tr bgcolor="#9acd32"> 
         <th style="text-align:center">Name</th> 
         <th style="text-align:center">Description</th> 
         <th style="text-align:center">Coordinates</th> 
        </tr> 
        <xsl:for-each select="kml:kml/kml:Document/kml:Placemark"> 
         <tr> 
          <td> 
           <xsl:value-of disable-output-escaping="yes" select="kml:name"/> 
          </td> 
          <td> 
           <xsl:value-of disable-output-escaping="yes" select="kml:description"/> 
          </td> 
          <td> 
           <xsl:value-of select="kml:Point/kml:coordinates"/> 
          </td> 
         </tr> 
        </xsl:for-each> 
       </table> 
      </body> 
     </html> 
    </xsl:template> 
</xsl:stylesheet> 
+0

感谢菲尔。所以,现在我有一个有效的xsl文件,我试图通过浏览器将它应用到我的kml文件。有些读者指出我正朝着Javascript的方向努力。当我使用下面的脚本时,我想出了一个空白文档...有什么建议? – JGilpin 2014-10-21 15:41:52

+0

@JGilpin - 请参阅http://stackoverflow.com/questions/3466854/which-browser-can-show-xml-data-transformed-by-xslt – PhillyNJ 2014-10-21 15:46:21