嗨我试图使用w3schools XSLT Tryit编辑器来转换KML文件(保存为XML文件),但似乎无法使其工作。下面是我的XML文件中的一个片段:使用XSLT转换XML(以前称为KML)
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2" xmlns:kml="http://www.opengis.net/kml/2.2" xmlns:gx="http://www.google.com/kml/ext/2.2">
<Document>
<name>Bnsf RR cut</name>
<open>1</open>
<Style>
<ListStyle>
<ItemIcon>
<href>kmzicon.png</href>
</ItemIcon>
</ListStyle>
</Style>
<Folder>
<name>11/10/11 8:17:20 AM</name>
<Placemark>
<name>Track</name>
</Placemark>
</Folder>
<Placemark>
<name>Gray Mesa</name>
<description><![CDATA[<img width="800" src="1.jpg"/>]]></description>
<Point>
<coordinates>-106.493097,34.446357,1692.000000</coordinates>
</Point>
</Placemark>
</Document>
</kml>
我的XSLT:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- Edited by XMLSpy® -->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<xsl:for-each select="Document/Placemark">
<xsl:value-of select="name"/>
<xsl:value-of select="description"/>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
如果我删除了KML标签在正常工作的XML代码,但我宁愿尝试和自动化这一点,不必从许多XML中删除代码。我已经尝试在我的XSLT代码“/ kml/Document/Placemark”中添加“kml”>,但这不起作用。谢谢!
我想我的转换XML是什么样子:
<Document>
<Placemark>
<name>Gray Mesa</name>
<description><![CDATA[<img width="800" src="1.jpg"/>]]></description>
<Point>
<coordinates>-106.493097,34.446357,1692.000000</coordinates>
</Point>
</Placemark>
</Document>
,我认为这会为我的目的工作。
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:kml="http://www.opengis.net/kml/2.2">
<xsl:template match="/">
<xsl:for-each select="kml:kml/kml:Document/kml:Placemark">
<name><xsl:value-of disable-output-escaping="yes" select="kml:name"/></name>
<description><xsl:value-of disable-output-escaping="yes" select="kml:description"/></description>
</xsl:for-each>
</xsl:template>
每个名称和描述标签包括这不过领域:xmlns:KML =“http://www.opengis.net/kml/2.2” 我正好连接与接入查询虽然。虽然我尝试导入到Access时出现错误。它说我需要一个根文件夹,因为我只有很多名称和描述标签。有什么方法可以使用XSL添加标签。非常感谢你。对不起,我一直在编辑这个杂乱的问题。
我认为这个问题是与命名空间声明。我还没有针对此问题的解决方案,但有趣的是,如果将环路更改为“kml/Document/Placemark”,并从元素中删除名称空间声明,它就会起作用。 –
2012-04-17 17:11:33