【问题标题】:Using XSL to output KML information in an HTML table使用 XSL 在 HTML 表格中输出 KML 信息
【发布时间】:2014-10-20 20:30:58
【问题描述】:

我已经好几年没写代码了,希望大家多多包涵……

我有一个应用程序可以输出下面的(非标准)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>

【问题讨论】:

    标签: javascript html xslt kml


    【解决方案1】:

    你很接近。您应该将 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>
    

    【讨论】:

    • 谢谢菲尔。所以现在我有了一个有效的 xsl 文件,我正在尝试使用浏览器将它应用到本地的 kml 文件中。一些阅读使我认为 Javascript 是最好的方法。当我使用下面的脚本时,我想出了一个空白文档......有什么建议吗?
    猜你喜欢
    • 1970-01-01
    • 2019-06-02
    • 2017-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多