Le mercredi 16 septembre 2009 à 05:30, Andrew Errington a écrit : > On Tue, September 15, 2009 16:00, Andrew Errington wrote: > > On Tue, September 15, 2009 14:55, Renaud MICHEL wrote: > >> You can make it a lot simpler with an xpath like I gave before: > >> > >> <xsl:template match="node[t...@k='amenity' and @v=$amenity]]"> > > I'm afraid I couldn't get this to work. xsltproc complained. :( > > I don't have the error message, but I could run it again and tell you if > you're interested.
Well, I can't help you if I don't know what was the problem. > Unfortunately my XSLT-fu is very weak. I haven't grasped how to make a > result set of lats and a result set of lons. If I could do that then I > could sum() them and count() them and calculate the average. If you want to do a sum you must have a node-set, which you can't have with key(), so you will need to reference the elements directly (which is a lot slower than key() ), like this (the way being the current node) <xsl:variable name="nodes" select="../no...@id=current()/nd/@ref]"/> <xsl:value-of select="sum($nodes/@lat) div count($nodes)"/> <xsl:value-of select="sum($nodes/@lon) div count($nodes)"/> The trick here is that the construct @id=current()/nd/@ref which compare one value (@id) with a node-set (current()/nd/@ref) is true if any of the selected @ref is equal to @id. (cf http://www.w3.org/TR/xpath#booleans) -- Renaud Michel _______________________________________________ newbies mailing list [email protected] http://lists.openstreetmap.org/listinfo/newbies

