嗨,我正在尝试使用w3schools XSLT Tryit编辑器转换KML文件(保存为XML文件),但我似乎无法让它工作.这是我的XML文件的片段:
<?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>
Run Code Online (Sandbox Code Playgroud)
而我的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>
Run Code Online (Sandbox Code Playgroud)
如果我删除XML代码中的kml标签它工作正常,但我宁愿尝试自动化这个,而不必从众多的XML中删除代码.我已经尝试将"kml"添加到我的XSLT代码"/ kml/Document/Placemark">但是这不起作用.谢谢!
我希望我的转换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>
Run Code Online (Sandbox Code Playgroud)
我认为这对我的目的有用.
<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>
Run Code Online (Sandbox Code Playgroud)
但是每个名称和描述标签都包含这个:xmlns:kml ="http://www.opengis.net/kml/2.2"我可以将它与Access查询连接起来.我尝试导入Access时遇到错误.它说我需要一个根文件夹,因为我只有很多名称和描述标签.有没有办法使用XSL添加标签.非常感谢你.对不起我一直在编辑的杂乱问题.
Tim C 关于名称空间的说法是正确的,但我想补充一点,XSLT 是声明性语言,因此通常当我在样式表中看到 for-each 时,它可以被更适合该语言的内容替换。所以我会使用下面的代码。
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:kml="http://www.opengis.net/kml/2.2">
<xsl:output method="text"/>
<xsl:template match="/">
<xsl:apply-templates select="kml:kml/kml:Document/kml:Placemark"/>
</xsl:template>
<xsl:template match="kml:Placemark">
<xsl:value-of select="kml:name"/>
<xsl:value-of select="kml:description"/>
</xsl:template>
</xsl:stylesheet>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3958 次 |
| 最近记录: |