Navigation Menu

Skip to content

Instantly share code, notes, and snippets.

@michaelmhoffman
Forked from lindenb/README.md
Created December 29, 2015 22:58
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save michaelmhoffman/d83083048733f8d14581 to your computer and use it in GitHub Desktop.
Save michaelmhoffman/d83083048733f8d14581 to your computer and use it in GitHub Desktop.
sort KML for @michaelhoffman https://twitter.com/michaelhoffman/status/681959184573661185 sort each Placemark inside each Folder on key=styleUrl

##Usage:

xsltproc transform.xsl doc.kml

Test

$ xsltproc transform.xsl doc.kml |grep -E '(Folder|styleUrl)' | head
		<Folder><name>Good Food</name><Placemark>
				<styleUrl>#icon-503-DB4436</styleUrl>
				<styleUrl>#icon-503-DB4436-nodesc</styleUrl>
				<styleUrl>#icon-959-3F5BA9</styleUrl>
				<styleUrl>#icon-959-3F5BA9</styleUrl>
				<styleUrl>#icon-959-3F5BA9</styleUrl>
				<styleUrl>#icon-959-3F5BA9</styleUrl>
				<styleUrl>#icon-959-3F5BA9</styleUrl>
				<styleUrl>#icon-959-3F5BA9</styleUrl>
				<styleUrl>#icon-959-3F5BA9</styleUrl>
<?xml version="1.0"?>
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:k="http://www.opengis.net/kml/2.2"
xmlns="http://www.opengis.net/kml/2.2"
exclude-result-prefixes="k"
version="1.0">
<xsl:output method="xml" encoding="UTF-8" indent="yes"/>
<xsl:template match="/">
<xsl:apply-templates select="*"/>
</xsl:template>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()" />
</xsl:copy>
</xsl:template>
<xsl:template match="k:Folder">
<Folder>
<xsl:copy-of select="k:name"/>
<xsl:for-each select="k:Placemark">
<xsl:sort select="k:styleUrl/text()" />
<xsl:copy-of select="."/>
</xsl:for-each>
</Folder>
</xsl:template>
</xsl:stylesheet>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment