On Saturday 23 August 2008 17:59:00 Hugh Barnes wrote:
> If such feeds were to be provided through the project's infrastructure, it
> shouldn't be too hard to do XSL transforms from a bounded area dataset
> download [citation needed]. All of the required metadata seems to be there.
> (Maybe not enough of history). I'll try to find some time tonight
> (Saturday) to do this and hopefuly get back either way tomorrow.
>
> I realise there would be questions of architecture before such a tool could
> be deployed on a server (load, caching, possible size limits, frequency
> limits), but it sounds like a fun exercise to start on.
>
> I'm not sure what the easiest way to query a user's activity would be,
> probably the API. (Again, wiki down). The bounded area dataset might also
> be best obtained through API calls.
>

I've been picking away at a transformation of a bounded XML dataset. Must … 
stop … tweaking. It seems usable locally at the moment, though I haven't been 
able to get a nice rendering from Gecko. The validator says it's valid with a 
few warnings.

I invoked the script with xsltproc on the sample URL in the wiki 
(http://api.openstreetmap.org/api/0.5/map?bbox=11.54,48.14,11.543,48.145, 
saved to api-sample.osm.xml), like so:

xsltproc --stringparam since.time 2008-06-02T20:28:47+01:00 osm2atom.xsl 
api-sample.osm.xml > change-sample.atom.xml

Unfortunately, you currently need to supply a comparison datetime as a 
parameter. I can use the exslt templates to solve this, but it makes bundling 
something I can simply attach a whole lot more difficult.

To get a local setup to continue checking changes for you, you'd need to 
string together some scripts doing wget and cron, or whatever.

I've attached the XSL transformation (osm2atom.xsl) and my output document 
(change-sample.atom.xml). I'll be happy to put this transform into svn if 
anyone thinks it's worth pursuing as a service on the server. I also don't 
mind moving this discussion to the dev list if it has legs.

Some miscellaneous notes, a.k.a. the devil in the detail:
- When the wiki came back, I looked at alternate datasources but didn't really 
come up with anything completely suitable. The live dataset at least 
shows "changes" (of unknown kinds) to OSM elements, so it's just workable as 
a watch. I would like for there to be a dataset a little more suited to the 
task. I don't think it's worth investing much more time transforming this 
dataset.
- A timestamp in the bounded XML would be a useful enhancement 
(/osm/@timestamp)
- The XML document has no namespace. This can cause problems for consumers.
- I only did bounded area changes, not user changes, as I couldn't find 
anything suitable at all.

On the need for this type of service, I believe demand will only increase for 
it, as Nick and François alluded, especially if vandalism and other 
maliciousness becomes a problem.

Apologise if this is incoherent. Sleepiness has loomed.

Cheers
<?xml version="1.0" encoding="UTF-8"?>
<!-- see global parameter $XSL.version for version number -->
<!-- 
About:
This transformation takes a bounded area XML download from the OpenStreetMap API, and creates an Atom feed showing changes made since a supplied time or in an interval of time. Started by Hugh Barnes.

References:
- http://wiki.openstreetmap.org/index.php/OSM_Protocol_Version_0.5
- http://atomenabled.org/developers/syndication/

Contact:

Rights:
Please modify as desired, but annotate this header accordingly if you do. Rather you didn't remove any attributions.
-->

<!-- changes:
Created 2008-08-23
- 
Last Mod: 2008-08-25
-->

<!-- TO DO:
- 
(~ = partial; - to do; / = done)
-->

<xsl:stylesheet
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
  xmlns:atom="http://www.w3.org/2005/Atom";
  xmlns:exslt="http://exslt.org/common";
  xmlns:date="http://exslt.org/dates-and-times";
  xmlns:msxsl="urn:schemas-microsoft-com:xslt"
  exclude-result-prefixes="exslt msxsl date"
  version="1.1">
  
<!-- <xsl:include href="../lib/foo.xsl" />  -->

<!-- assumptions:
  - source dataset in API v.0.5, with some forward-looking
  - date timezone is insignificant (set to GMT currently) - can fix by using datediff from exslt
  - source dataset is the most useful available
  - source document has no namespace, which kind of makes me have to wrestle with namespaces in the source vs result documents more than I want to
-->

<xsl:output method="xml" version="1.0" encoding="utf-8" omit-xml-declaration="no" indent="yes" />

<!-- This msxsl script extension fools msxsl into interpreting exslt extensions as msxsl ones, so
      we can write code using exslt extensions even though msxsl only recognises the msxsl extension
      namespace.  Thanks to David Carlisle for this: http://dpcarlisle.blogspot.com/2007/05/exslt-node-set-function.html -->
<msxsl:script language="JScript" implements-prefix="date">
  this['add'] =  function (x) {
  return x;
  }
</msxsl:script>
<msxsl:script language="JScript" implements-prefix="date">
  this['date-time'] =  function (x) {
  return x;
  }
</msxsl:script>

<xsl:param name="interval.minutes" select="30" /> <!-- FIXME: not implemented - would subtract from the current time -->
<xsl:param name="since.time" />
<xsl:variable name="since">
  <xsl:choose>
    <xsl:when test="$since.time">
      <xsl:value-of select="$since.time"/>
    </xsl:when>
    <xsl:otherwise>
      <!-- <xsl:value-of select="date:add(substring(date:date-time(),1,19),concat('-P',$interval.minutes,'M'))" /> -->
      <!-- FIXME: this seems not to be working, so I'm hard coding it -->
      <xsl:value-of select="'2008-05-05T12:16:04+00:00'" />
    </xsl:otherwise>
  </xsl:choose>
</xsl:variable>

<xsl:variable name="bound.north" select="/osm/bounds/@maxlat" />
<xsl:variable name="bound.south" select="/osm/bounds/@minlat" />
<xsl:variable name="bound.east" select="/osm/bounds/@maxlon" />
<xsl:variable name="bound.west" select="/osm/bounds/@minlon" />

<xsl:variable name="XSL.version">0.1</xsl:variable>
<xsl:variable name="XSL.name">osm2atom.xsl</xsl:variable>
<xsl:variable name="XSL.URI">http://example.com/osm2atom</xsl:variable>

<xsl:variable name="id-prefix">tag:openstreetmap.org,2008-08-23:Activity/<xsl:value-of select="$bound.south" />,<xsl:value-of select="$bound.west" />,<xsl:value-of select="$bound.north" />,<xsl:value-of select="$bound.east" /></xsl:variable> <!-- FIXME: would be better to use a real permanent URL here, not a tag URI -->
<xsl:variable name="server">http://openstreetmap.org</xsl:variable>
<xsl:variable name="user-prefix"><xsl:value-of select="$server" />/user/</xsl:variable>
<xsl:variable name="feature-prefix"><xsl:value-of select="$server" />/browse/</xsl:variable>

<xsl:variable name="meta.logo"><xsl:value-of select="$server" />/images/osm_logo.png</xsl:variable> <!-- TODO: check if this is the best URI -->
<xsl:variable name="meta.icon"><xsl:value-of select="$server" />/favicon.ico</xsl:variable> <!-- TODO: check if this is the best URI -->
<xsl:variable name="meta.rights">
  <atom:rights type="xhtml">
    <div xmlns="http://www.w3.org/1999/xhtml";>
      <a href="http://creativecommons.org/licenses/by-sa/2.0/";><img src="{concat($server,'/images/cc_button.png')}" alt="Creative Commons - Some rights reserved" /></a>
    </div>
  </atom:rights>
</xsl:variable>
<xsl:variable name="meta.author">
  <atom:author>
    <atom:name>OpenStreetMap</atom:name>
    <atom:uri>http://openstreetmap.org</atom:uri>
  </atom:author>
</xsl:variable>

<xsl:template match="/osm">
  <atom:feed>
    <!-- feed metadata -->
    <!-- id , title , updated are mandatory -->
    <atom:id><xsl:value-of select="$id-prefix" /></atom:id>
    <atom:title>OpenStreetMap changes to area bounded by (<xsl:value-of select="$bound.south" />,<xsl:value-of select="$bound.west" />),(<xsl:value-of select="$bound.north" />,<xsl:value-of select="$bound.east" />)</atom:title>
    <atom:updated><xsl:call-template name="get-global-datestamp" /></atom:updated>
	<!-- TODO: link rel="self" goes here -->
    <!-- author -->
    <!-- link -->
    <atom:icon><xsl:value-of select="$meta.icon" /></atom:icon>
    <atom:logo><xsl:value-of select="$meta.logo" /></atom:logo>
    <xsl:copy-of select="$meta.rights" />
    <xsl:copy-of select="$meta.author" />
    <!-- NB. datetime calculations ignore timezones, so we are assuming all is in GMT -->
    <atom:generator uri="{$XSL.URI}" version="{$XSL.version}"><xsl:value-of select="$XSL.name" /></atom:generator>
    <!-- FIXME: should probably use exslt date comparison now that we've imported it. This is the poor man's version. Update: failed attempt, still need this. -->
    <xsl:apply-templates select="*[tag][translate(substring(@timestamp,1,19),'-T:','') &gt;= translate(substring($since, 1,19),'-T:', '')]">
      <xsl:sort select="@timestamp" order="descending" />
    </xsl:apply-templates>
  </atom:feed>
</xsl:template>

<xsl:template match="node|way|relation">
  <atom:entry>
    <atom:link rel="alternate" type="text/html">
      <xsl:apply-templates select="@id" mode="history" />
    </atom:link>
    <atom:link rel="related" type="text/html">
        <xsl:attribute name="title">
          <xsl:text>Summary of </xsl:text><xsl:value-of select="local-name()" /> #<xsl:value-of select="@id" />
          <xsl:apply-templates select="[EMAIL PROTECTED]'name']" mode="value">
            <xsl:with-param name="prepend" select="string(' (')" />
            <xsl:with-param name="append" select="string(')')" />
          </xsl:apply-templates>
        </xsl:attribute>
      <xsl:apply-templates select="@id" mode="data" />
    </atom:link>
	<atom:id>
	  <xsl:value-of select="$id-prefix" />
	  <xsl:text>-</xsl:text>
	  <xsl:value-of select="@id" />
	  <xsl:text>@</xsl:text>
	  <xsl:value-of select="@timestamp" />
	</atom:id>
    <xsl:call-template name="makeTitle" />
    <atom:updated><xsl:apply-templates select="@timestamp" /></atom:updated>
    <atom:author>
      <atom:name><xsl:apply-templates select="@user" /></atom:name>
      <atom:uri>
	      <xsl:call-template name="get-user-uri">
		      <xsl:with-param name="username" select="@user" />
		    </xsl:call-template>
	    </atom:uri>
    </atom:author>
    <!-- is there way to get a thumbnail URI in here for embedding ?? -->
    <xsl:call-template name="makeContent" />
  </atom:entry>
</xsl:template>

<xsl:template name="makeTitle">
  <xsl:if test="local-name()='node' or local-name()='way' or local-name='relation'">
    <atom:title>
      <xsl:text>Change to </xsl:text>
      <xsl:value-of select="local-name()"/> #<xsl:value-of select="@id" />
      <xsl:apply-templates select="[EMAIL PROTECTED]'name']" mode="value">
        <xsl:with-param name="prepend" select="string(', ')" />
      </xsl:apply-templates>
      <xsl:text>, </xsl:text>made by <xsl:apply-templates select="@user" />
    </atom:title>
  </xsl:if>
</xsl:template>

<xsl:template name="makeContent">
  <xsl:if test="local-name()='node' or local-name()='way' or local-name='relation'">
    <atom:content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml";>
        <p>
          <xsl:text>OpenStreetMap </xsl:text>
          <a><xsl:apply-templates select="@id" mode="data" /><xsl:value-of select="local-name()"/> #<xsl:value-of select="@id" />
          <xsl:apply-templates select="[EMAIL PROTECTED]'name']" mode="value">
            <xsl:with-param name="prepend" select="string(', ')" />
            <xsl:with-param name="append" select="string(',')" />
          </xsl:apply-templates>
          </a>
          <xsl:text> has been edited by </xsl:text><xsl:apply-templates select="@user" mode="data" />. The current tags are:<xsl:text/>
        </p>
        <ul>
          <xsl:apply-templates select="tag" />
        </ul>
      </div>
    </atom:content>
  </xsl:if>
</xsl:template>

<xsl:template match="tag"> <!-- default mode, xhtml li elements, might need to create a named mode -->
  <li xmlns="http://www.w3.org/1999/xhtml";>
    <xsl:apply-templates select="@k" />
    <xsl:text>=</xsl:text>
    <xsl:apply-templates select="@v" />
  </li>
</xsl:template>

<xsl:template match="tag" mode="value">
  <xsl:param name="prepend" select="string('')" />
  <xsl:param name="append" select="string('')" />
  <xsl:value-of select="$prepend" />
  <xsl:text/>
  <xsl:apply-templates select="@v" />
  <xsl:value-of select="$append" />
</xsl:template>

<xsl:template match="@id[parent::node or parent::way or parent::relation]" mode="history">
  <xsl:attribute name="href">
    <xsl:value-of select="$feature-prefix" /><xsl:value-of select="local-name(..)" />/<xsl:apply-templates />/history<xsl:text/>
  </xsl:attribute>
</xsl:template>

<xsl:template match="@id[parent::node or parent::way or parent::relation]" mode="data">
  <xsl:attribute name="href">
    <xsl:value-of select="$feature-prefix" /><xsl:value-of select="local-name(..)" />/<xsl:apply-templates />
  </xsl:attribute>
</xsl:template>

<xsl:template match="@user" mode="data">
  <a xmlns="http://www.w3.org/1999/xhtml";>
    <xsl:attribute name="href">
  	  <xsl:call-template name="get-user-uri">
	    <xsl:with-param name="username" select="." />
	  </xsl:call-template>
	</xsl:attribute>
	<xsl:apply-templates />
  </a>
</xsl:template>

<xsl:template name="get-user-uri">
  <xsl:param name="username" />
  <xsl:value-of select="$user-prefix" />
  <xsl:call-template name="globalReplace">
    <xsl:with-param name="outputString" select="$username" />
    <xsl:with-param name="target" select="string(' ')" />
    <xsl:with-param name="replacement" select="string('%20')" />
  </xsl:call-template>
</xsl:template>

<xsl:template name="get-global-datestamp">
  <!--
   Ideally, the OSM bounded XML dump should include a global datestamp. This is worked around here, though maybe grabbing the current time isn't such a bad fallback to keep.
  -->
  <xsl:choose>
    <xsl:when test="@datestamp">
      <xsl:apply-templates select="@datestamp" />
    </xsl:when>
    <xsl:otherwise>
      <xsl:value-of select="date:date-time()" />
    </xsl:otherwise>
  </xsl:choose>
</xsl:template>

<!-- this is from Bob Du Charme: "XSLT Quickly", p.161 -->
<!-- should be put into an external ibrary - could also use the template str:replace from exslt -->
<xsl:template name="globalReplace">
  <xsl:param name="outputString"/>
  <xsl:param name="target"/>
  <xsl:param name="replacement"/>
  <xsl:choose>
    <xsl:when test="contains($outputString,$target)">
	  <xsl:value-of select="concat(substring-before($outputString,$target), $replacement)"/>
	  <xsl:call-template name="globalReplace">
	    <xsl:with-param name="outputString" select="substring-after($outputString,$target)"/>
	    <xsl:with-param name="target" select="$target"/>
	    <xsl:with-param name="replacement" select="$replacement"/>
	  </xsl:call-template>
    </xsl:when>
    <xsl:otherwise>
	  <xsl:value-of select="$outputString"/>
    </xsl:otherwise>
  </xsl:choose>
</xsl:template> 

</xsl:stylesheet>
<?xml version="1.0" encoding="utf-8"?>
<atom:feed xmlns:atom="http://www.w3.org/2005/Atom";>
  <atom:id>tag:openstreetmap.org,2008-08-23:Activity/48.14,11.54,48.145,11.543</atom:id>
  <atom:title>OpenStreetMap changes to area bounded by (48.14,11.54),(48.145,11.543)</atom:title>
  <atom:updated>2008-08-25T22:32:17+10:00</atom:updated>
  <atom:icon>http://openstreetmap.org/favicon.ico</atom:icon>
  <atom:logo>http://openstreetmap.org/images/osm_logo.png</atom:logo>
  <atom:rights type="xhtml">
    <div xmlns="http://www.w3.org/1999/xhtml";>
      <a href="http://creativecommons.org/licenses/by-sa/2.0/";>
        <img src="http://openstreetmap.org/images/cc_button.png"; alt="Creative Commons - Some rights reserved"/>
      </a>
    </div>
  </atom:rights>
  <atom:author>
    <atom:name>OpenStreetMap</atom:name>
    <atom:uri>http://openstreetmap.org</atom:uri>
  </atom:author>
  <atom:generator uri="http://example.com/osm2atom"; version="0.1">osm2atom.xsl</atom:generator>
  <atom:entry>
    <atom:link rel="alternate" type="text/html" href="http://openstreetmap.org/browse/way/25973173/history"/>
    <atom:link rel="related" type="text/html" title="Summary of way #25973173 (16,17)" href="http://openstreetmap.org/browse/way/25973173"/>
    <atom:id>tag:openstreetmap.org,2008-08-23:Activity/48.14,11.54,48.145,[EMAIL PROTECTED]:23:28+01:00</atom:id>
    <atom:title>Change to way #25973173, 16,17, made by user_4133</atom:title>
    <atom:updated>2008-08-04T15:23:28+01:00</atom:updated>
    <atom:author>
      <atom:name>user_4133</atom:name>
      <atom:uri>http://openstreetmap.org/user/user_4133</atom:uri>
    </atom:author>
    <atom:content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml";>
        <p>OpenStreetMap <a href="http://openstreetmap.org/browse/way/25973173";>way #25973173, 16,17,</a> has been edited by <a href="http://openstreetmap.org/user/user_4133";>user_4133</a>. The current tags are:</p>
        <ul>
          <li>railway=tram</li>
          <li>name=16,17</li>
        </ul>
      </div>
    </atom:content>
  </atom:entry>
  <atom:entry>
    <atom:link rel="alternate" type="text/html" href="http://openstreetmap.org/browse/way/4020916/history"/>
    <atom:link rel="related" type="text/html" title="Summary of way #4020916 (Arnulfstraße)" href="http://openstreetmap.org/browse/way/4020916"/>
    <atom:id>tag:openstreetmap.org,2008-08-23:Activity/48.14,11.54,48.145,[EMAIL PROTECTED]:13:48+01:00</atom:id>
    <atom:title>Change to way #4020916, Arnulfstraße, made by user_4133</atom:title>
    <atom:updated>2008-08-04T15:13:48+01:00</atom:updated>
    <atom:author>
      <atom:name>user_4133</atom:name>
      <atom:uri>http://openstreetmap.org/user/user_4133</atom:uri>
    </atom:author>
    <atom:content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml";>
        <p>OpenStreetMap <a href="http://openstreetmap.org/browse/way/4020916";>way #4020916, Arnulfstraße,</a> has been edited by <a href="http://openstreetmap.org/user/user_4133";>user_4133</a>. The current tags are:</p>
        <ul>
          <li>created_by=JOSM</li>
          <li>name=Arnulfstraße</li>
          <li>osmarender:renderName=no</li>
          <li>highway=secondary</li>
          <li>lanes=2</li>
          <li>railway=tram</li>
        </ul>
      </div>
    </atom:content>
  </atom:entry>
  <atom:entry>
    <atom:link rel="alternate" type="text/html" href="http://openstreetmap.org/browse/node/256554147/history"/>
    <atom:link rel="related" type="text/html" title="Summary of node #256554147" href="http://openstreetmap.org/browse/node/256554147"/>
    <atom:id>tag:openstreetmap.org,2008-08-23:Activity/48.14,11.54,48.145,[EMAIL PROTECTED]:10:40+01:00</atom:id>
    <atom:title>Change to node #256554147, made by VictorTerber</atom:title>
    <atom:updated>2008-07-14T12:10:40+01:00</atom:updated>
    <atom:author>
      <atom:name>VictorTerber</atom:name>
      <atom:uri>http://openstreetmap.org/user/VictorTerber</atom:uri>
    </atom:author>
    <atom:content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml";>
        <p>OpenStreetMap <a href="http://openstreetmap.org/browse/node/256554147";>node #256554147</a> has been edited by <a href="http://openstreetmap.org/user/VictorTerber";>VictorTerber</a>. The current tags are:</p>
        <ul>
          <li>created_by=JOSM</li>
        </ul>
      </div>
    </atom:content>
  </atom:entry>
  <atom:entry>
    <atom:link rel="alternate" type="text/html" href="http://openstreetmap.org/browse/way/23692591/history"/>
    <atom:link rel="related" type="text/html" title="Summary of way #23692591" href="http://openstreetmap.org/browse/way/23692591"/>
    <atom:id>tag:openstreetmap.org,2008-08-23:Activity/48.14,11.54,48.145,[EMAIL PROTECTED]:10:40+01:00</atom:id>
    <atom:title>Change to way #23692591, made by VictorTerber</atom:title>
    <atom:updated>2008-07-14T12:10:40+01:00</atom:updated>
    <atom:author>
      <atom:name>VictorTerber</atom:name>
      <atom:uri>http://openstreetmap.org/user/VictorTerber</atom:uri>
    </atom:author>
    <atom:content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml";>
        <p>OpenStreetMap <a href="http://openstreetmap.org/browse/way/23692591";>way #23692591</a> has been edited by <a href="http://openstreetmap.org/user/VictorTerber";>VictorTerber</a>. The current tags are:</p>
        <ul>
          <li>created_by=Potlatch 0.9c</li>
          <li>railway=rail</li>
        </ul>
      </div>
    </atom:content>
  </atom:entry>
  <atom:entry>
    <atom:link rel="alternate" type="text/html" href="http://openstreetmap.org/browse/way/24699690/history"/>
    <atom:link rel="related" type="text/html" title="Summary of way #24699690" href="http://openstreetmap.org/browse/way/24699690"/>
    <atom:id>tag:openstreetmap.org,2008-08-23:Activity/48.14,11.54,48.145,[EMAIL PROTECTED]:05:02+01:00</atom:id>
    <atom:title>Change to way #24699690, made by Gerd Badur</atom:title>
    <atom:updated>2008-06-04T19:05:02+01:00</atom:updated>
    <atom:author>
      <atom:name>Gerd Badur</atom:name>
      <atom:uri>http://openstreetmap.org/user/Gerd%20Badur</atom:uri>
    </atom:author>
    <atom:content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml";>
        <p>OpenStreetMap <a href="http://openstreetmap.org/browse/way/24699690";>way #24699690</a> has been edited by <a href="http://openstreetmap.org/user/Gerd%20Badur";>Gerd Badur</a>. The current tags are:</p>
        <ul>
          <li>highway=footway</li>
          <li>source=survey</li>
        </ul>
      </div>
    </atom:content>
  </atom:entry>
  <atom:entry>
    <atom:link rel="alternate" type="text/html" href="http://openstreetmap.org/browse/way/24665462/history"/>
    <atom:link rel="related" type="text/html" title="Summary of way #24665462" href="http://openstreetmap.org/browse/way/24665462"/>
    <atom:id>tag:openstreetmap.org,2008-08-23:Activity/48.14,11.54,48.145,[EMAIL PROTECTED]:34:19+01:00</atom:id>
    <atom:title>Change to way #24665462, made by Gerd Badur</atom:title>
    <atom:updated>2008-06-02T20:34:19+01:00</atom:updated>
    <atom:author>
      <atom:name>Gerd Badur</atom:name>
      <atom:uri>http://openstreetmap.org/user/Gerd%20Badur</atom:uri>
    </atom:author>
    <atom:content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml";>
        <p>OpenStreetMap <a href="http://openstreetmap.org/browse/way/24665462";>way #24665462</a> has been edited by <a href="http://openstreetmap.org/user/Gerd%20Badur";>Gerd Badur</a>. The current tags are:</p>
        <ul>
          <li>source=survey</li>
          <li>highway=footway</li>
        </ul>
      </div>
    </atom:content>
  </atom:entry>
  <atom:entry>
    <atom:link rel="alternate" type="text/html" href="http://openstreetmap.org/browse/way/4078868/history"/>
    <atom:link rel="related" type="text/html" title="Summary of way #4078868 (Marlene-Dietrich-Straße)" href="http://openstreetmap.org/browse/way/4078868"/>
    <atom:id>tag:openstreetmap.org,2008-08-23:Activity/48.14,11.54,48.145,[EMAIL PROTECTED]:28:47+01:00</atom:id>
    <atom:title>Change to way #4078868, Marlene-Dietrich-Straße, made by Gerd Badur</atom:title>
    <atom:updated>2008-06-02T20:28:47+01:00</atom:updated>
    <atom:author>
      <atom:name>Gerd Badur</atom:name>
      <atom:uri>http://openstreetmap.org/user/Gerd%20Badur</atom:uri>
    </atom:author>
    <atom:content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml";>
        <p>OpenStreetMap <a href="http://openstreetmap.org/browse/way/4078868";>way #4078868, Marlene-Dietrich-Straße,</a> has been edited by <a href="http://openstreetmap.org/user/Gerd%20Badur";>Gerd Badur</a>. The current tags are:</p>
        <ul>
          <li>highway=residential</li>
          <li>created_by=Potlatch alpha</li>
          <li>name=Marlene-Dietrich-Straße</li>
        </ul>
      </div>
    </atom:content>
  </atom:entry>
</atom:feed>
_______________________________________________
talk mailing list
talk@openstreetmap.org
http://lists.openstreetmap.org/listinfo/talk

Reply via email to