1
<?xml version="1.0" encoding="UTF-8"?>
3
Version 0.2 by Stefan Keller, http://geoconverter.hsr.ch
4
Original version by Schuyler Erle.
5
Based on OSM REST API 0.5.
7
<xsl:stylesheet xmlns="http://osm.maptools.org/"
8
xmlns:osm="http://www.openstreetmap.org/gml/"
9
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
10
xmlns:gml="http://www.opengis.net/gml" version="1.0">
11
<xsl:output method="xml"/>
12
<xsl:output indent="yes"/>
14
<xsl:template match="/">
17
<osm:FeatureCollection>
18
<xsl:for-each select="/osm/way">
19
<xsl:call-template name="way"/>
24
</osm:FeatureCollection>
27
<xsl:template match="/osm/way" name="way">
33
<osm:id><xsl:value-of select="@id"/></osm:id>
34
<osm:timestamp><xsl:value-of select="@timestamp"/></osm:timestamp>
35
<osm:user><xsl:value-of select="@user"/></osm:user>
36
<osm:geometryProperty>
38
<gml:coordinates><xsl:apply-templates select="nd"/></gml:coordinates>
40
</osm:geometryProperty>
41
<xsl:apply-templates select="tag"/>
46
<xsl:key name='nodeById' match='/osm/node' use='@id'/>
48
<xsl:template match="/osm/way/nd">
49
<xsl:variable name='ref' select="@ref"/>
50
<xsl:variable name='node' select='key("nodeById",$ref)'/>
51
<xsl:value-of select="$node/@lon"/>,<xsl:value-of select="$node/@lat"/>
52
<xsl:text> </xsl:text>
55
<xsl:template match="/osm/way/tag">
56
<xsl:variable name="osm_element" select="translate(@k, translate(@k, 'aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ_-.0123456789', ''), '_')"/>
57
<!-- xsl:variable name="osm_element" select="@k"/ -->
58
<xsl:if test="string($osm_element)">
59
<xsl:element name="osm:{$osm_element}">
60
<xsl:value-of select="@v"/>