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

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

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

File size: 3.4 KB
Line 
1<!--
2        Description: Generates a set of optimized GML files with duplicated features. Each feature is assigned a unique id. The number of duplicates is based on the stylesheet duplicates parameter.
3                     Optimizations include: WS stripping, default gml:coordinates attribute cs,ts, and decimal removal.
4                     Future optimizations: Reduce coordinate value decimal digits.
5                                                 
6-->
7<?xml version="1.0" encoding="UTF-8"?>
8<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fps="http://www.galdosinc.com/fps" xmlns:gml="http://www.opengis.net/gml" xmlns:ogc="http://www.opengis.net/ogc" xmlns:van="http://www.galdosinc.com/vancouver" xmlns:wfs="http://www.opengis.net/wfs" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
9    <xsl:output indent="no" 
10                        encoding="UTF-8" 
11                        method="xml" 
12                        omit-xml-declaration="yes" 
13                        version="1.0"/>
14    <xsl:strip-space elements="*"/>
15    <xsl:param name="duplicates">1</xsl:param>
16   
17    <xsl:template match="/">
18      <xsl:element name="wfs:FeatureCollection">
19        <xsl:namespace name="fps">http://www.galdosinc.com/fps</xsl:namespace>
20        <xsl:namespace name="gml">http://www.opengis.net/gml</xsl:namespace>
21        <xsl:namespace name="ogc">http://www.opengis.net/ogc</xsl:namespace>
22        <xsl:namespace name="van">http://www.galdosinc.com/vancouver</xsl:namespace>
23        <xsl:namespace name="wfs">http://www.opengis.net/wfs</xsl:namespace>
24        <xsl:namespace name="xlink">http://www.w3.org/1999/xlink</xsl:namespace>       
25        <xsl:namespace name="xsi">http://www.w3.org/2001/XMLSchema-instance</xsl:namespace>       
26        <xsl:copy-of select="wfs:FeatureCollection/gml:boundedBy" copy-namespaces="no"/>
27        <xsl:apply-templates select="wfs:FeatureCollection/gml:featureMember"/>
28      </xsl:element>     
29    </xsl:template>
30
31    <xsl:template match="wfs:FeatureCollection/gml:featureMember">
32      <xsl:call-template name="duplicate">
33        <xsl:with-param name="count" select="number($duplicates)"/>
34      </xsl:call-template>
35    </xsl:template>
36
37    <xsl:template name="duplicate">
38      <xsl:param name="count"/>
39      <xsl:if test="$count > 0">
40        <xsl:element name="gml:featureMember" namespace="http://www.opengis.net/gml">
41          <xsl:element name="{name(child::*[1])}">
42            <xsl:attribute name="gml:id" select="concat(child::*[1]/@gml:id,'-',$count)"/>
43              <!-- do not copy empty child nodes  -->
44              <xsl:apply-templates select="child::*[1]/child::*[text()|@*]"/>
45          </xsl:element>
46        </xsl:element>
47        <xsl:call-template name="duplicate">
48          <xsl:with-param name="count" select="$count - 1"/>
49        </xsl:call-template>
50      </xsl:if>
51    </xsl:template>
52
53    <xsl:template match="gml:coordinates">
54      <xsl:copy>
55        <!-- do not copy default gml:coordinates attributes -->
56        <xsl:copy-of select="attribute::cs[.!=',']"/>
57        <xsl:copy-of select="attribute::decimal[.!='.']"/>
58        <xsl:copy-of select="attribute::ts[.!=' ']"/>       
59        <xsl:apply-templates/>
60      </xsl:copy>
61    </xsl:template>
62
63    <xsl:template match="@*|*">
64      <xsl:copy>
65        <xsl:apply-templates select="@*|*"/>
66      </xsl:copy>
67    </xsl:template>
68   
69</xsl:stylesheet>
Note: See TracBrowser for help on using the repository browser.