source: cows/trunk/cows/pylons/templates/wfs_capabilities_1_1_0.xml @ 4284

Subversion URL: http://proj.badc.rl.ac.uk/svn/ndg/cows/trunk/cows/pylons/templates/wfs_capabilities_1_1_0.xml@4284
Revision 4284, 5.1 KB checked in by domlowe, 12 years ago (diff)

adding keywords, outputformats to WFS

Line 
1<?xml version="1.0"?>
2
3<?python
4
5from cows.pylons.genshi_util import RenameElementFilter
6from genshi import QName
7import webhelpers as h
8
9?>
10
11<WFS_Capabilities xmlns:py="http://genshi.edgewall.org/"
12                  xmlns="http://www.opengis.net/wfs"
13                  xmlns:xlink="http://www.w3.org/1999/xlink"
14                  xmlns:ows="http://www.opengis.net/ows"
15                  xmlns:gml="http://www.opengis.net/gml" version="1.3.0">
16
17  <!--! ====================================================================== -->
18  <!--!
19      To change the tag name we need to wrap a markup macro in a python
20      function
21  -->
22
23  <Operation py:def="_opContent(op)">
24    <Format py:for="f in op.parameters['Format'].possibleValues.allowedValues" py:content="f"/>
25    <DCPType><HTTP>
26      <Get>
27        <OnlineResource xlink:type="simple" xlink:href="${op.get.href}"/>
28      </Get>
29    </HTTP></DCPType>
30  </Operation>
31  <?python
32 
33  def markupOperation(opName, op):
34    """Render an OWS operation description for the Capabilities section.
35    """
36
37    return RenameElementFilter(QName(opName))(_opContent(op))
38
39  ?>
40
41          <FeatureType py:def="markupLayer(ds)">
42                <Name py:content="ds.identifier"/>
43                <Title py:content="ds.titles[0]"/>
44                <Abstract py:if="len(ds.abstracts)>0" py:content="ds.abstracts[0]"/>
45                <ows:Keywords>
46                        <ows:Keyword py:for="kw in ds.keywords" py:content="kw"/>                       
47                </ows:Keywords>
48                <OutputFormats>
49                        <Format py:for="format in ds.outputformats" py:content="format"/>
50                </OutputFormats>                       
51                <DefaultSRS>WGS:84</DefaultSRS>
52                <CRS py:for="crs in ds.CRSs" py:content="crs"/>
53                <?python exBBox = ds.wgs84BoundingBoxes[0]?>
54                <ows:WGS84BoundingBox>
55                  <ows:LowerCorner py:content="str(exBBox.lowerCorner[0]) + ' ' + str(exBBox.lowerCorner[1])" />
56                  <ows:UpperCorner py:content="str(exBBox.upperCorner[0]) + ' ' + str(exBBox.upperCorner[1])" />
57                </ows:WGS84BoundingBox>
58          </FeatureType>
59  <!--! ====================================================================== -->
60
61
62  <ows:ServiceIdentification py:with="sm=c.capabilities; si=c.capabilities.serviceIdentification">
63    <ows:Name>BADC WFS</ows:Name>
64    <ows:Title py:content="si.titles[0]"/>
65    <ows:Abstract py:if="len(si.abstracts)>0" py:content="si.abstracts[0]"/>
66    <ows:Keywords>
67      <ows:Keyword py:for="kw in si.keywords"
68               py:content="kw"/>
69    </ows:Keywords>
70    <!--! <OnlineResource xlink:type="simple" xlink:href="${h.url_for(qualified=True, action='index')}?"/> -->
71   
72    <ows:ServiceProvider py:if="sm.serviceProvider is not None"
73                        py:with="rp=sm.serviceProvider.serviceContact">
74      <ows:ProviderName py:content="sm.serviceProvider.providerName"/>
75      <ows:ServiceContact>
76                <ows:IndividualName py:if="rp is not None" py:content="rp.individualName"/>
77                <ows:PositionName py:content="rp.positionName"/>
78                <py:with vars="cn=rp.contactInfo" py:if="cn is not None">
79                <ows:ContactInfo py:if="cn.phone is not None">
80                        <ows:Voice py:content="cn.phone.voice"/>
81                        <ows:Facsimile py:content="cn.phone.facsimile"/>       
82                </ows:ContactInfo>
83                <ows:Address py:if="cn.address is not None">
84                        <ows:DeliveryPoint><py:for each="d in cn.address.deliveryPoints">${d}</py:for>
85                        </ows:DeliveryPoint>
86                        <ows:City py:content="cn.address.city"/>
87                        <ows:AdministrativeArea py:content="cn.address.administrativeArea"/>
88                        <ows:PostalCode py:content="cn.address.postalCode"/>
89                        <ows:Country py:content="cn.address.country"/>
90                        <ows:ElectronicMailAddress py:content="cn.address.electronicMailAddress"/>
91                </ows:Address>
92        </py:with>     
93      </ows:ServiceContact>
94    </ows:ServiceProvider>
95    <ows:Fees py:content="si.fees"/>
96    <ows:AccessConstraints py:content="si.accessConstraints"/>
97  </ows:ServiceIdentification>
98  <!--! These fields are represented in ows_common as service constraints -->
99 
100  <ows:OperationsMetadata py:with="sm=c.capabilities; om=sm.operationsMetadata">
101    <py:if test="om is not None">
102      <?python
103        ops = ['GetCapabilities', 'DescribeFeature', 'GetFeature']
104        eops = [x for x in om.operationDict.keys() if x not in ops]
105      ?>
106      <ows:OperationsMetadata>
107      <py:for each="opName in ops" py:if="opName in om.operationDict.keys()">
108          <ows:Operation name="${opName}">
109                <ows:DCP>
110                        <ows:HTTP>
111                                <ows:Get  xlink:type="simple" xlink:href="${om.operationDict[opName].get.href}"/>
112                        </ows:HTTP>
113                </ows:DCP>
114          </ows:Operation>
115      </py:for>
116      </ows:OperationsMetadata> 
117      <_ExtendedCapabilities>     
118      <Request>
119        <py:for each="opName in eops">
120          <span py:content="markupOperation(opName, om.operationDict[opName])" py:strip="True"/>
121        </py:for>
122        <py:for each="opName in eops">
123          <?python exceptions = om.operationDict[opName].parameters.get('ExceptionFormat') ?>
124          <Exception py:if="exceptions is not None">
125            <Format py:for="e in exceptions.possibleValues.allowedValues"
126                    py:content="e"/>
127          </Exception>
128        </py:for>
129      </Request>
130      </_ExtendedCapabilities>
131    </py:if>
132    </ows:OperationsMetadata>
133   
134    <FeatureTypeList py:if="c.capabilities.contents is not None">
135      <FeatureType py:for="ds in c.capabilities.contents.datasetSummaries"
136             py:replace="markupLayer(ds)">
137      </FeatureType>
138    </FeatureTypeList> 
139
140</WFS_Capabilities>
Note: See TracBrowser for help on using the repository browser.