Mercurial > dive4elements > gnv-client
view gnv-artifacts/contrib/palette2qgis.xsl @ 516:4f2a18abc780
Added little XSL tranformation to turn palette XML files into QGIS style definitions.
Useful to display "Horizontalschnitte" in correct colors.
gnv-artifacts/trunk@610 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Sat, 23 Jan 2010 14:03:26 +0000 |
parents | |
children | a8f6ca59b26e |
line wrap: on
line source
<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:html="http://www.w3.org/1999/xhtml" xmlns="http://www.w3.org/1999/xhtml" > <!-- palette2qgis.xsl ================ Transforms palette XML files into QGIS style files. Useful to display "Horizontalschnitte" with the right colors. Tested with Quantum GIS 1.4.0-Enceladus. usage: xsltproc palette2qgis.xsl palette.xml > style.qml Author: Sascha L. Teichmann (sascha.teichmann@intevation.de) --> <xsl:output method="xml" doctype-system="PUBLIC 'http://mrcc.com/qgis.dtd' 'SYSTEM'"/> <xsl:template name="hex"> <xsl:param name="value"/> <xsl:variable name="x" select="translate(substring($value, string-length($value), 1), 'ABCDEF', 'abcdef')"/> <xsl:variable name="result"> <xsl:choose> <xsl:when test="$x = 'a'">10</xsl:when> <xsl:when test="$x = 'b'">11</xsl:when> <xsl:when test="$x = 'c'">12</xsl:when> <xsl:when test="$x = 'd'">13</xsl:when> <xsl:when test="$x = 'e'">14</xsl:when> <xsl:when test="$x = 'f'">15</xsl:when> <xsl:otherwise><xsl:value-of select="$x"/></xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:variable name="rest"> <xsl:choose> <xsl:when test="string-length($value) > 1"> <xsl:call-template name="hex"> <xsl:with-param name="value" select="substring($value, 1, string-length($value)-1)"/> </xsl:call-template> </xsl:when> <xsl:otherwise><xsl:value-of select="0"/></xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:value-of select="number($result) + 16*$rest"/> </xsl:template> <xsl:template match="/ranges/range"> <symbol> <lowervalue><xsl:value-of select="@index"/></lowervalue> <uppervalue><xsl:value-of select="@index"/></uppervalue> <label><xsl:value-of select="@description"/></label> <pointsymbol>hard:circle</pointsymbol> <pointsize>2</pointsize> <pointsizeunits>pixels</pointsizeunits> <rotationclassificationfieldname></rotationclassificationfieldname> <scaleclassificationfieldname></scaleclassificationfieldname> <symbolfieldname></symbolfieldname> <outlinecolor red="0" blue="0" green="0" /> <outlinestyle>NoPen</outlinestyle> <outlinewidth>0.26</outlinewidth> <xsl:variable name="rgb"> <xsl:call-template name="hex"> <xsl:with-param name="value" select="substring(@rgb, 2)"/> </xsl:call-template> </xsl:variable> <xsl:variable name="red" select="floor(($rgb div (256*256)) mod 256)"/> <xsl:variable name="green" select="floor(($rgb div 256) mod 256)"/> <xsl:variable name="blue" select="floor($rgb mod 256)"/> <fillcolor red="{$red}" blue="{$blue}" green="{$green}"/> <fillpattern>SolidPattern</fillpattern> <texturepath null="1" ></texturepath> </symbol> </xsl:template> <xsl:template match="/"> <qgis version="1.4.0-Enceladus" minimumScale="1" maximumScale="1e+08" minLabelScale="1" maxLabelScale="1e+08" hasScaleBasedVisibilityFlag="0" scaleBasedLabelVisibilityFlag="0" > <transparencyLevelInt>255</transparencyLevelInt> <classificationattribute>CLASS</classificationattribute> <symbol> <lowervalue null="1" ></lowervalue> <uppervalue null="1" ></uppervalue> <label>Andere</label> <pointsymbol>hard:circle</pointsymbol> <pointsize>2</pointsize> <pointsizeunits>pixels</pointsizeunits> <rotationclassificationfieldname></rotationclassificationfieldname> <scaleclassificationfieldname></scaleclassificationfieldname> <symbolfieldname></symbolfieldname> <outlinecolor red="0" blue="0" green="0" /> <outlinestyle>DashDotDotLine</outlinestyle> <outlinewidth>0.26</outlinewidth> <fillcolor red="59" blue="81" green="179" /> <fillpattern>SolidPattern</fillpattern> <texturepath null="1" ></texturepath> </symbol> <uniquevalue> <classificationfield>CLASS</classificationfield> <xsl:apply-templates/> </uniquevalue> <edittypes> <edittype type="0" name="CLASS" /> <edittype type="0" name="DATE" /> <edittype type="0" name="LAYER" /> <edittype type="0" name="PARAMETER" /> </edittypes> <editform></editform> <editforminit></editforminit> <displayfield>PARAMETER</displayfield> <label>0</label> <attributeactions/> <labelattributes> <label fieldname="" text="Beschriftung" /> <family fieldname="" name="Sans Serif" /> <size fieldname="" units="pt" value="12" /> <bold fieldname="" on="0" /> <italic fieldname="" on="0" /> <underline fieldname="" on="0" /> <color fieldname="" red="0" blue="0" green="0" /> <x fieldname="" /> <y fieldname="" /> <offset x="0" y="0" units="pt" yfieldname="" xfieldname="" /> <angle fieldname="" value="0" auto="0" /> <alignment fieldname="" value="center" /> <buffercolor fieldname="" red="255" blue="255" green="255" /> <buffersize fieldname="" units="pt" value="1" /> <bufferenabled fieldname="" on="" /> <multilineenabled fieldname="" on="" /> </labelattributes> </qgis> </xsl:template> <xsl:template match="text()"/> </xsl:stylesheet>