自从我做了任何编码已经有几年了,所以我希望你能忍受我......
我有一个应用程序可以输出下面的(非标准)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 < 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 :(得分: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>