source: proto/gml2svg/Java/gml2svg/res/sld2optxslt_world2screen.xslt @ 1730

Last change on this file since 1730 was 1730, checked in by ksherdy, 8 years ago

Consolidated SAX and XSLT gml2svg source into a single directory 'gml2svg'.

File size: 17.8 KB
Line 
1<!--
2        Description: Generates a set of optimized GML2SVG XSLT stylesheets with explicit parameter data type conversion required for use with the Intel XSLT extension function mechanism.
3        Usage: java -cp . -jar /home/ksherdy/Development/Eclipse/Workspace/gml2svgJ/lib/saxon9.jar -s:/home/ksherdy/Development/Eclipse/Workspace/XSLTJ/res/StyleConfigurationOpt.xml -xsl:/home/ksherdy/Development/Eclipse/Workspace/XSLTJ/res/sld2optxslt_world2screen.xslt
4-->
5<?xml version="1.0" encoding="UTF-8"?>
6<xsl:stylesheet xmlns="http://www.w3.org/2000/svg" xmlns:fs="http://www.galdosinc.com/fps"
7    xmlns:sld="http://www.opengis.net/sld" xmlns:gml="http://www.opengis.net/gml"
8    xmlns:ogc="http://www.opengis.net/ogc" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
9    version="2.0">
10    <xsl:output indent="yes" method="xml" encoding="UTF-8" omit-xml-declaration="no"/>
11    <xsl:template match="/">
12        <xsl:for-each select="fs:StyleConfiguration/fs:StyleDefinition">
13            <xsl:variable name="feartureTypeName"
14                select="sld:FeatureTypeStyle/sld:FeatureTypeName/text()"/>
15            <xsl:variable name="geometryPropertyName"
16            select="sld:FeatureTypeStyle/sld:Rule//sld:Geometry/ogc:PropertyName/text()"/>
17            <xsl:variable name="name" select="sld:Name/text()"/>
18            <xsl:result-document href="{$name}.xslt" encoding="UTF-8">
19            <xsl:element name="xsl:transform" namespace="http://www.w3.org/1999/XSL/Transform">
20                <xsl:attribute name="version">2.0</xsl:attribute>
21                <xsl:attribute name="exclude-result-prefixes">van gml ogc sld xsi xsl Extfun</xsl:attribute>
22                <xsl:namespace name="">http://www.w3.org/2000/svg</xsl:namespace>
23                <xsl:namespace name="van">http://www.galdosinc.com/vancouver</xsl:namespace>
24                <xsl:namespace name="gml">http://www.opengis.net/gml</xsl:namespace>
25                <xsl:namespace name="ogc">http://www.opengis.net/ogc</xsl:namespace>
26                <xsl:namespace name="sld">http://www.opengis.net/sld</xsl:namespace>
27                <xsl:namespace name="xsi">http://www.w3.org/2001/XMLSchema-instance</xsl:namespace>
28                <xsl:namespace name="xsl">http://www.w3.org/1999/XSL/Transform</xsl:namespace>
29                <xsl:namespace name="Extfun">/org.opengis.gml.StyleExt</xsl:namespace>
30
31                <!-- output -->
32                <xsl:element name="xsl:output">
33                    <xsl:attribute name="indent">no</xsl:attribute>
34                    <xsl:attribute name="method">xml</xsl:attribute>
35                    <xsl:attribute name="encoding">UTF-8</xsl:attribute>
36                    <xsl:attribute name="omit-xml-declaration">yes</xsl:attribute>
37                </xsl:element>
38
39                <!-- strip space -->
40                <xsl:element name="strip-space">
41                    <xsl:attribute name="elements">*</xsl:attribute>
42                 </xsl:element>
43
44                <!-- params -->
45                <xsl:element name="xsl:param">
46                    <xsl:attribute name="name">height</xsl:attribute>
47                    <xsl:attribute name="select">800</xsl:attribute>
48                </xsl:element>
49                <xsl:element name="xsl:param">
50                    <xsl:attribute name="name">width</xsl:attribute>
51                    <xsl:attribute name="select">800</xsl:attribute>
52                </xsl:element>
53                <xsl:element name="xsl:param">
54                    <xsl:attribute name="name">bbox</xsl:attribute>
55                </xsl:element>
56
57    <xsl:comment>Root Node  ==================================================================</xsl:comment>
58    <xsl:text>
59    </xsl:text>
60    <xsl:element name="xsl:template">
61        <xsl:attribute name="match">/</xsl:attribute>
62        <xsl:element name="svg">
63        <xsl:namespace name="">http://www.w3.org/2000/svg</xsl:namespace>
64        <xsl:attribute name="width">{$width}</xsl:attribute>
65        <xsl:attribute name="height">{$height}</xsl:attribute>
66            <xsl:element name="g">
67            <!--
68                <xsl:attribute name="transform">scale({format-number($scaleX,"#.#################")},{format-number(-1 * $scaleY,"#.#################")}) translate({format-number(-1*$x1,"######.000000")},{format-number(-1*$y2,"######.000000")})</xsl:attribute>
69                        -->               
70                <xsl:variable name="style-string">
71                    <xsl:for-each select="sld:FeatureTypeStyle/sld:Rule//sld:CssParameter">
72                        <xsl:value-of select="concat(@name,':',ogc:Literal/text(),';')"/>
73                    </xsl:for-each>
74                </xsl:variable>
75                <xsl:attribute name="style" select="$style-string"/>
76                <xsl:element name="xsl:apply-templates">
77                    <xsl:attribute name="select" select="concat('//',$feartureTypeName,'/',$geometryPropertyName)"/>
78                </xsl:element>
79            </xsl:element>
80        </xsl:element>
81    </xsl:element>
82    <xsl:comment>Layer  ==================================================================</xsl:comment>
83    <xsl:text>
84    </xsl:text>
85                <xsl:element name="xsl:template">
86                    <xsl:attribute name="match" select="concat($feartureTypeName,'/',$geometryPropertyName)"/>
87                            <xsl:element name="xsl:call-template">
88                                <xsl:choose>
89                                    <xsl:when
90                                        test="sld:FeatureTypeStyle/sld:Rule/sld:PolygonSymbolizer">
91                                        <xsl:attribute name="name">Polygon</xsl:attribute>
92                                    </xsl:when>
93                                    <xsl:when
94                                        test="sld:FeatureTypeStyle/sld:Rule/sld:LineSymbolizer">
95                                        <xsl:attribute name="name">Line</xsl:attribute>
96                                    </xsl:when>
97                                    <xsl:when
98                                        test="sld:FeatureTypeStyle/sld:Rule/sld:PointSymbolizer">
99                                        <xsl:attribute name="name">Point</xsl:attribute>
100                                    </xsl:when>
101                                </xsl:choose>
102                            </xsl:element>
103                </xsl:element>
104    <xsl:comment>Polygon ==================================================================</xsl:comment>
105    <xsl:text>
106    </xsl:text>
107                <xsl:element name="xsl:template">
108                    <xsl:attribute name="name">Polygon</xsl:attribute>
109                    <xsl:element name="xsl:variable">
110                        <xsl:attribute name="name">id</xsl:attribute>
111                        <xsl:attribute name="select">../@gml:id</xsl:attribute>
112                    </xsl:element>
113                    <xsl:element name="xsl:variable">
114                        <xsl:attribute name="name">d</xsl:attribute>
115                        <xsl:element name="xsl:choose">
116                            <xsl:element name="xsl:when">
117                                <xsl:attribute name="test">.//gml:posList</xsl:attribute>
118                                <xsl:element name="xsl:apply-templates">
119                                    <xsl:attribute name="mode">Path</xsl:attribute>
120                                    <xsl:attribute name="select">.//gml:posList</xsl:attribute>
121                                </xsl:element>
122                            </xsl:element>
123                            <xsl:element name="xsl:otherwise">
124                                <xsl:element name="xsl:apply-templates">
125                                    <xsl:attribute name="mode">Path</xsl:attribute>
126                                    <xsl:attribute name="select">.//gml:coordinates</xsl:attribute>
127                                </xsl:element>
128                            </xsl:element>
129                        </xsl:element>
130                    </xsl:element>
131                    <xsl:element name="path" namespace="http://www.w3.org/2000/svg">
132                        <xsl:attribute name="id">{$id}</xsl:attribute>
133                        <xsl:attribute name="d">{$d}</xsl:attribute>
134                        <xsl:attribute name="onmouseover">showTooltip(evt)</xsl:attribute>
135                        <xsl:attribute name="onmouseout">hideTooltip(evt)</xsl:attribute>
136                    </xsl:element>
137                </xsl:element>
138    <xsl:comment>Line ==================================================================</xsl:comment>
139    <xsl:text>
140    </xsl:text>
141                <xsl:element name="xsl:template">
142                    <xsl:attribute name="name">Line</xsl:attribute>
143                    <xsl:element name="xsl:variable">
144                        <xsl:attribute name="name">id</xsl:attribute>
145                        <xsl:attribute name="select">../@gml:id</xsl:attribute>
146                    </xsl:element>
147                    <xsl:element name="xsl:variable">
148                        <xsl:attribute name="name">d</xsl:attribute>
149                        <xsl:element name="xsl:choose">
150                            <xsl:element name="xsl:when">
151                                <xsl:attribute name="test">.//gml:posList</xsl:attribute>
152                                <xsl:element name="xsl:apply-templates">
153                                    <xsl:attribute name="mode">Path</xsl:attribute>
154                                    <xsl:attribute name="select">.//gml:posList</xsl:attribute>
155                                </xsl:element>
156                            </xsl:element>
157                            <xsl:element name="xsl:otherwise">
158                                <xsl:element name="xsl:apply-templates">
159                                    <xsl:attribute name="mode">Path</xsl:attribute>
160                                    <xsl:attribute name="select">.//gml:coordinates</xsl:attribute>
161                                </xsl:element>
162                            </xsl:element>
163                        </xsl:element>
164                    </xsl:element>
165                    <xsl:element name="path" namespace="http://www.w3.org/2000/svg">
166                        <xsl:attribute name="id">{$id}</xsl:attribute>
167                        <xsl:attribute name="d">{$d}</xsl:attribute>
168                        <xsl:attribute name="onmouseover">showTooltip(evt)</xsl:attribute>
169                        <xsl:attribute name="onmouseout">hideTooltip(evt)</xsl:attribute>
170                    </xsl:element>
171                </xsl:element>
172    <xsl:comment>Point ==================================================================</xsl:comment>
173    <xsl:text>
174    </xsl:text>
175                <xsl:element name="xsl:template">
176                    <xsl:attribute name="name">Point</xsl:attribute>
177                    <xsl:comment>TODO - Implement Optimized Point geometry types.</xsl:comment>
178                </xsl:element>
179    <xsl:comment>Variable Definitions ==================================================================</xsl:comment>
180    <xsl:text>
181    </xsl:text>
182                <xsl:element name="xsl:variable">
183                    <xsl:attribute name="name">boundingBox</xsl:attribute>
184                    <xsl:element name="xsl:value-of">
185                        <xsl:attribute name="select">string($bbox)</xsl:attribute>
186                    </xsl:element>
187                </xsl:element>
188    <xsl:comment>==================================================================</xsl:comment>
189    <xsl:text>
190    </xsl:text>
191                <xsl:element name="xsl:variable">
192                    <xsl:attribute name="name">sumY</xsl:attribute>
193                    <xsl:element name="xsl:value-of">
194                        <xsl:attribute name="select">Extfun:getSumY(string($boundingBox), string(@decimal), string(@cs), string(@ts))</xsl:attribute>
195                    </xsl:element>
196                </xsl:element>
197    <xsl:comment>==================================================================</xsl:comment>
198    <xsl:text>
199    </xsl:text>
200                <xsl:element name="xsl:variable">
201                    <xsl:attribute name="name">scaleX</xsl:attribute>
202                    <xsl:element name="xsl:value-of">
203                        <xsl:attribute name="select">Extfun:getScaleX(string($width), string($boundingBox), string(@decimal), string(@cs), string(@ts))</xsl:attribute>
204                    </xsl:element>
205                </xsl:element>
206    <xsl:comment>==================================================================</xsl:comment>
207    <xsl:text>
208    </xsl:text>
209                <xsl:element name="xsl:variable">
210                    <xsl:attribute name="name">scaleY</xsl:attribute>
211                    <xsl:element name="xsl:value-of">
212                        <xsl:attribute name="select">Extfun:getScaleY(string($width), string($boundingBox), string(@decimal), string(@cs), string(@ts))</xsl:attribute>
213                    </xsl:element>
214                </xsl:element>
215    <xsl:comment>==================================================================</xsl:comment>
216    <xsl:text>
217    </xsl:text>
218                <xsl:element name="xsl:variable">
219                    <xsl:attribute name="name">x1</xsl:attribute>
220                    <xsl:element name="xsl:value-of">
221                        <xsl:attribute name="select">Extfun:getX1(string($boundingBox), string(@decimal), string(@cs), string(@ts))</xsl:attribute>
222                    </xsl:element>
223                </xsl:element>
224    <xsl:comment>==================================================================</xsl:comment>
225    <xsl:text>
226    </xsl:text>
227                <xsl:element name="xsl:variable">
228                    <xsl:attribute name="name">y1</xsl:attribute>
229                    <xsl:element name="xsl:value-of">
230                        <xsl:attribute name="select">Extfun:getY1(string($boundingBox), string(@decimal), string(@cs), string(@ts))</xsl:attribute>
231                    </xsl:element>
232                </xsl:element>
233    <xsl:comment>==================================================================</xsl:comment>
234    <xsl:text>
235    </xsl:text>
236                <xsl:element name="xsl:variable">
237                    <xsl:attribute name="name">y2</xsl:attribute>
238                    <xsl:element name="xsl:value-of">
239                        <xsl:attribute name="select">Extfun:getY2(string($boundingBox), string(@decimal), string(@cs),  string(@ts))</xsl:attribute>
240                    </xsl:element>
241                </xsl:element>
242    <xsl:comment>==================================================================</xsl:comment>
243    <xsl:text>
244    </xsl:text>
245                <xsl:element name="xsl:template">
246                    <xsl:attribute name="match">gml:pos</xsl:attribute>
247                    <xsl:attribute name="mode">PointX</xsl:attribute>
248                    <xsl:element name="xsl:value-of">
249                        <xsl:attribute name="select"
250                            >Extfun:getPointX(string($scaleX), string($x1), string(text()), string(@decimal), ' ')</xsl:attribute>
251                    </xsl:element>
252                </xsl:element>
253    <xsl:comment>==================================================================</xsl:comment>
254    <xsl:text>
255    </xsl:text>
256                <xsl:element name="xsl:template">
257                    <xsl:attribute name="match">gml:pos</xsl:attribute>
258                    <xsl:attribute name="mode">PointY</xsl:attribute>
259                    <xsl:element name="xsl:value-of">
260                        <xsl:attribute name="select">Extfun:getPointY(string($sumY), string($scaleY), string($y1), string(text()), string(@decimal), ' ')</xsl:attribute>
261                    </xsl:element>
262                </xsl:element>
263    <xsl:comment>==================================================================</xsl:comment>
264    <xsl:text>
265    </xsl:text>
266                <xsl:element name="xsl:template">
267                    <xsl:attribute name="match">gml:posList</xsl:attribute>
268                    <xsl:attribute name="mode">Path</xsl:attribute>
269                    <xsl:comment>TODO</xsl:comment>
270                </xsl:element>
271    <xsl:comment>==================================================================</xsl:comment>
272    <xsl:text>
273    </xsl:text>
274                <xsl:element name="xsl:template">
275                    <xsl:attribute name="match">gml:coordinates</xsl:attribute>
276                    <xsl:attribute name="mode">PointX</xsl:attribute>
277                    <xsl:element name="xsl:value-of">
278                        <xsl:attribute name="select">Extfun:getPointX(string($scaleX), string($x1), string(text()), string(@decimal), string(@cs))</xsl:attribute>
279                    </xsl:element>
280                </xsl:element>
281    <xsl:comment>==================================================================</xsl:comment>
282    <xsl:text>
283    </xsl:text>
284                <xsl:element name="xsl:template">
285                    <xsl:attribute name="match">gml:coordinates</xsl:attribute>
286                    <xsl:attribute name="mode">PointY</xsl:attribute>
287                    <xsl:element name="xsl:value-of">
288                        <xsl:attribute name="select">Extfun:getPointY(string($sumY), string($scaleY), string($y1), string(text()), string(@decimal), string(@cs))</xsl:attribute>
289                    </xsl:element>
290                </xsl:element>
291    <xsl:comment>==================================================================</xsl:comment>
292    <xsl:text>
293    </xsl:text>
294                <xsl:element name="xsl:template">
295                    <xsl:attribute name="match">gml:coordinates</xsl:attribute>
296                    <xsl:attribute name="mode">Path</xsl:attribute>
297                    <xsl:element name="xsl:value-of">
298                        <xsl:attribute name="select">Extfun:convertCoordinatesToPath(string($sumY), $scaleX, $scaleY, $x1, $y1,string(text()),string(@decimal),string(@cs),string(@ts))</xsl:attribute>
299                    </xsl:element>
300                </xsl:element>
301            </xsl:element>
302            </xsl:result-document>
303        </xsl:for-each>
304    </xsl:template>
305</xsl:stylesheet>
Note: See TracBrowser for help on using the repository browser.