Conversion KML -> fichier marqueur OSM

Le fichier KML étant au format XML, on utilise une transformation XSLT, ce qui permet de générer de façon très souple et avec très peu de rigidité de programmation le fichier TXT voulu:

La transformation en elle-même:

  $transform=
 '<?xml version="1.0" encoding=\'UTF-8\' ?>
  <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
                  xmlns:k ="'.<span style="color: #ff6600;">$namespaceuri</span>.'"&gt;
   &lt;xsl:output method="text" /&gt;
   &lt;xsl:template match="/"&gt;
    <span style="color: #808000;">&lt;xsl:text&gt;lat&amp;#9;lon&amp;#9;title&amp;#9;description&amp;#9;icon&amp;#9;iconSize&amp;#9;iconOffset&lt;/xsl:text&gt;</span>
    &lt;xsl:apply-templates /&gt;
   &lt;/xsl:template&gt;
   <span style="color: #008000;">&lt;xsl:template match="k:Document/k:name"&gt;&lt;/xsl:template&gt;</span>
<span style="color: #008000;">   &lt;xsl:template match="k:Style"&gt;&lt;/xsl:template&gt;</span>
<span style="color: #008000;">   &lt;xsl:template match="k:Folder/k:name"&gt;&lt;/xsl:template&gt;</span>
<span style="color: #008000;">   &lt;xsl:template match="k:Folder/k:Placemark[k:styleUrl=\'#lineStyle\']" &gt;&lt;/xsl:template&gt;</span>
<span style="color: #008000;">   &lt;xsl:template match="k:Folder/k:Placemark[k:styleUrl=\'#camera\']" &gt;</span>
    <span style="color: #0000ff;">&lt;xsl:value-of select="substring-before(substring-after(./k:Point/k:coordinates,\',\'),\',\')" /&gt;</span>
    <span style="color: #666699;">&lt;xsl:text&gt;&amp;#9;&lt;/xsl:text&gt;</span>
    <span style="color: #0000ff;">&lt;xsl:value-of select="substring-before(./k:Point/k:coordinates,\',\')" /&gt;</span>
    &lt;xsl:text&gt;&amp;#9;&lt;/xsl:text&gt;
    &lt;xsl:value-of select="./k:name" /&gt;
    &lt;xsl:text&gt;&amp;#9;&lt;/xsl:text&gt;

    <span style="color: #800000;">&lt;xsl:text&gt;&amp;lt;img src=&lt;/xsl:text&gt;</span>
<span style="color: #800000;">    &lt;xsl:value-of select="substring-before(substring-after(./k:description,\'href=\'), \' target\')" /&gt;</span>
<span style="color: #800000;">    &lt;xsl:text&gt; /&amp;gt;&amp;#9;&lt;/xsl:text&gt;</span>
<span style="color: #800000;">    &lt;xsl:value-of select="substring( substring-before( substring-after(./k:description,\'src=\'), \'/&gt;\') ,2,string-length( substring-before( substring-after(./k:description,\'src=\'), \'/&gt;\') )-2)" /&gt;</span>

    &lt;xsl:text&gt;&amp;#9;&lt;/xsl:text&gt;
    &lt;xsl:text&gt;'.<span style="color: #ff00ff;">$marker_dim</span>.'&lt;/xsl:text&gt;
    &lt;xsl:text&gt;&amp;#9;&lt;/xsl:text&gt;
    &lt;xsl:text&gt;'.<span style="color: #ff00ff;">$marker_offset</span>.'&lt;/xsl:text&gt;
   &lt;/xsl:template&gt;
  &lt;/xsl:stylesheet&gt;';

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *