1 |
4307
|
leinfelder
|
<?xml version="1.0" encoding="ISO-8859-1"?>
|
2 |
|
|
<!--
|
3 |
|
|
Description: parses a EBRIM response from a Catalog Query and returns
|
4 |
|
|
an OWS Context document.
|
5 |
|
|
This stylesheet assumes the Service node follows the
|
6 |
|
|
IntrinsicObject (Layer) node.
|
7 |
|
|
Author: camerons
|
8 |
|
|
Licence: LGPL as specified in http://www.gnu.org/copyleft/lesser.html .
|
9 |
|
|
|
10 |
|
|
$Id:$
|
11 |
|
|
$Name: $
|
12 |
|
|
-->
|
13 |
|
|
|
14 |
|
|
<xsl:stylesheet version="1.0"
|
15 |
|
|
xmlns:wmc="http://www.opengis.net/context"
|
16 |
|
|
xmlns:wms="http://www.opengis.net/wms"
|
17 |
|
|
xmlns:ogc="http://www.opengis.net/ogc"
|
18 |
|
|
xmlns:ows="http://www.opengis.net/ows"
|
19 |
|
|
xmlns:csw="http://www.opengis.net/cat/csw"
|
20 |
|
|
xmlns:gml="http://www.opengis.net/gml"
|
21 |
|
|
xmlns:rim="urn:oasis:names:tc:ebxml-regrep:rim:xsd:2.5"
|
22 |
|
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
23 |
|
|
xmlns:wfs="http://www.opengis.net/wfs"
|
24 |
|
|
xmlns:sld="http://www.opengis.net/sld"
|
25 |
|
|
xmlns:owscat="http://www.ec.gc.ca/owscat"
|
26 |
|
|
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
27 |
|
|
xmlns:xlink="http://www.w3.org/1999/xlink">
|
28 |
|
|
|
29 |
|
|
<xsl:output method="xml" encoding="utf-8" omit-xml-declaration="yes"/>
|
30 |
|
|
<xsl:strip-space elements="*"/>
|
31 |
|
|
|
32 |
|
|
<!-- The coordinates of the DHTML Layer on the HTML page -->
|
33 |
|
|
<xsl:param name="modelId"/>
|
34 |
|
|
<xsl:param name="widgetId"/>
|
35 |
|
|
<xsl:param name="id"></xsl:param>
|
36 |
|
|
|
37 |
|
|
<!-- Match Root -->
|
38 |
|
|
<xsl:template match="/">
|
39 |
|
|
<wmc:OWSContext>
|
40 |
|
|
<wmc:General>
|
41 |
|
|
<wmc:Window width="600" height="300"/>
|
42 |
|
|
<ows:BoundingBox crs="EPSG:4326">
|
43 |
|
|
<ows:LowerCorner>-180 -90</ows:LowerCorner>
|
44 |
|
|
<ows:UpperCorner>180 90</ows:UpperCorner>
|
45 |
|
|
</ows:BoundingBox>
|
46 |
|
|
<wmc:Title xml:lang="en">Mapbuilder Generated Context</wmc:Title>
|
47 |
|
|
</wmc:General>
|
48 |
|
|
<wmc:ResourceList>
|
49 |
|
|
<xsl:apply-templates/>
|
50 |
|
|
</wmc:ResourceList>
|
51 |
|
|
</wmc:OWSContext>
|
52 |
|
|
</xsl:template>
|
53 |
|
|
|
54 |
|
|
<!-- Match Layer (ExtrinsicObject -->
|
55 |
|
|
<xsl:template match="rim:ExtrinsicObject">
|
56 |
|
|
|
57 |
|
|
<!-- When layer is WFS: FeatureType -->
|
58 |
|
|
<!-- When layer is WMS: Layer -->
|
59 |
|
|
<!-- else (fallback) : Layer -->
|
60 |
|
|
<xsl:variable name="element_name">
|
61 |
|
|
<xsl:variable name="pos" select="position()"/>
|
62 |
|
|
<xsl:variable name="servicetype" select="../rim:Service[(($pos+1) div 2)]/rim:Slot[@name='Service Type']/rim:ValueList/rim:Value"/>
|
63 |
|
|
<xsl:choose>
|
64 |
|
|
<xsl:when test="($servicetype = 'WFS') or ($servicetype = 'OGC:WFS')">FeatureType</xsl:when>
|
65 |
|
|
<xsl:when test="($servicetype = 'WMS') or ($servicetype = 'OGC:WMS')">Layer</xsl:when>
|
66 |
|
|
<xsl:otherwise>Layer</xsl:otherwise>
|
67 |
|
|
</xsl:choose>
|
68 |
|
|
</xsl:variable>
|
69 |
|
|
|
70 |
|
|
<xsl:variable name="queryable" select="./rim:Slot[@name='Queryable']/rim:ValueList/rim:Value/text()"/>
|
71 |
|
|
|
72 |
|
|
<!-- If a layer is a 'Theme', then don't return anything, since it is'nt a queryable layer.
|
73 |
|
|
A theme is a meta layer for grouping (WMS) layers
|
74 |
|
|
-->
|
75 |
|
|
<xsl:if test="@objectType != 'Theme'">
|
76 |
|
|
<xsl:element name="wmc:{$element_name}">
|
77 |
|
|
<xsl:attribute name="queryable">1</xsl:attribute>
|
78 |
|
|
<xsl:attribute name="hidden">0</xsl:attribute>
|
79 |
|
|
<xsl:attribute name="id"><xsl:value-of select="@id"/></xsl:attribute>
|
80 |
|
|
<!-- insert service -->
|
81 |
|
|
<!--xsl:apply-templates select="//rim:Service[position()=(position()+1)]"/-->
|
82 |
|
|
<xsl:call-template name="Service">
|
83 |
|
|
<xsl:with-param name="pos" select="position()"/>
|
84 |
|
|
</xsl:call-template>
|
85 |
|
|
<wmc:Name>
|
86 |
|
|
<xsl:value-of select="rim:Name/rim:LocalizedString/@value"/>
|
87 |
|
|
</wmc:Name>
|
88 |
|
|
<wmc:Title>
|
89 |
|
|
<xsl:value-of select="rim:Slot[@name='Title']//rim:Value"/>
|
90 |
|
|
</wmc:Title>
|
91 |
|
|
<wmc:Abstract>
|
92 |
|
|
<xsl:value-of select="rim:Description/rim:LocalizedString/@value"/>
|
93 |
|
|
</wmc:Abstract>
|
94 |
|
|
</xsl:element>
|
95 |
|
|
</xsl:if>
|
96 |
|
|
</xsl:template>
|
97 |
|
|
|
98 |
|
|
<!-- Match Service -->
|
99 |
|
|
<!-- xsl:template match="rim:Service[position()={$pos}]"-->
|
100 |
|
|
<xsl:template name="Service">
|
101 |
|
|
<xsl:param name="pos"/>
|
102 |
|
|
|
103 |
|
|
<xsl:for-each select="../rim:Service[(($pos+1) div 2)]">
|
104 |
|
|
<wmc:Server>
|
105 |
|
|
<xsl:attribute name="id">
|
106 |
|
|
<xsl:value-of select="@id"/>
|
107 |
|
|
</xsl:attribute>
|
108 |
|
|
<xsl:attribute name="service">
|
109 |
|
|
<xsl:value-of select="rim:Slot[@name='Service Type']//rim:Value"/>
|
110 |
|
|
</xsl:attribute>
|
111 |
|
|
<xsl:attribute name="version">
|
112 |
|
|
<xsl:value-of select="@userVersion"/>
|
113 |
|
|
</xsl:attribute>
|
114 |
|
|
<xsl:attribute name="title">
|
115 |
|
|
<xsl:value-of select="rim:Slot[@name='Title']//rim:Value"/>
|
116 |
|
|
</xsl:attribute>
|
117 |
|
|
<!-- TBD: How do we extract method=POST/GET? -->
|
118 |
|
|
<wmc:OnlineResource method="POST" xlink:type="simple">
|
119 |
|
|
<xsl:attribute name="xlink:href">
|
120 |
|
|
<xsl:value-of select=".//@accessURI"/><!-- works for cubewerx -->
|
121 |
|
|
</xsl:attribute>
|
122 |
|
|
</wmc:OnlineResource>
|
123 |
|
|
</wmc:Server>
|
124 |
|
|
</xsl:for-each>
|
125 |
|
|
|
126 |
|
|
</xsl:template>
|
127 |
|
|
|
128 |
|
|
<xsl:template match="text()|@*"/>
|
129 |
|
|
|
130 |
|
|
</xsl:stylesheet>
|