Project

General

Profile

1
<?xml version="1.0"?>
2
<xsd:schema
3
   targetNamespace="http://www.opengis.net/wfs"
4
   xmlns:xsd="http://www.w3.org/2001/XMLSchema"
5
   xmlns:gml="http://www.opengis.net/gml"
6
   xmlns:ogc="http://www.opengis.net/ogc"
7
   xmlns:wfs="http://www.opengis.net/wfs"
8
   elementFormDefault="qualified">
9

    
10
   <!-- ==============================================================
11
        Includes and Imports
12
        ============================================================== -->
13
   <xsd:include schemaLocation="WFS-basic.xsd"/>
14
   <xsd:import namespace="http://www.opengis.net/gml"
15
               schemaLocation="../../gml/2.1.2/feature.xsd"/>
16
   <xsd:import namespace="http://www.opengis.net/ogc"
17
               schemaLocation="../../filter/1.0.0/filter.xsd"/>
18

    
19
   <!-- ==============================================================
20
         REQUEST MESSAGES
21
         ============================================================== -->
22
   <xsd:element name="GetFeatureWithLock" type="wfs:GetFeatureWithLockType">
23
      <xsd:annotation>
24
         <xsd:documentation>
25
            This is the root element for the GetFeatureWithLock request.
26
            The GetFeatureWithLock operation performs identically to a
27
            GetFeature request except that the GetFeatureWithLock request
28
            locks all the feature instances in the result set and returns
29
            a lock identifier to a client application in the response.
30
         </xsd:documentation>
31
      </xsd:annotation>
32
   </xsd:element>
33
   <xsd:element name="LockFeature" type="wfs:LockFeatureType">
34
      <xsd:annotation>
35
         <xsd:documentation>
36
            This is the root element for a LockFeature request.
37
            The LockFeature request can be used to lock one or
38
            more feature instances.
39
         </xsd:documentation>
40
      </xsd:annotation>
41
   </xsd:element>
42
   <xsd:element name="Transaction" type="wfs:TransactionType">
43
      <xsd:annotation>
44
         <xsd:documentation>
45
            This is the root element for a Transaction request.
46
            A transaction request allows insert, update and 
47
            delete operations to be performed to create, change
48
            or remove feature instances.
49
         </xsd:documentation>
50
      </xsd:annotation>
51
   </xsd:element>
52

    
53
   <!-- ==============================================================
54
         RESPONSE MESSAGES
55
         ============================================================== -->
56
   <xsd:element name="WFS_LockFeatureResponse"
57
                type="wfs:WFS_LockFeatureResponseType">
58
      <xsd:annotation>
59
         <xsd:documentation>
60
            The WFS_LockFeatureResponse element contains a report
61
            about the completion status of a LockFeature request.
62
         </xsd:documentation>
63
      </xsd:annotation>
64
   </xsd:element>
65
   <xsd:element name="WFS_TransactionResponse"
66
                type="wfs:WFS_TransactionResponseType">
67
      <xsd:annotation>
68
         <xsd:documentation>
69
            The WFS_TransactionResponse element contains a report
70
            about the completion status of a Transaction operation.  
71
         </xsd:documentation>
72
      </xsd:annotation>
73
   </xsd:element>
74

    
75
   <!-- ==============================================================
76
         COMMON ATTRIBUTE DOCUMENTATION
77
         ============================================================== 
78
         EXPIRY:
79
            The expiry attribute value is specified in minutes. It
80
            indicates how long a Web Feature Service should wait to
81
            receive a request from the client application that locked
82
            the feature instances.  If the specified time elapses and
83
            no request has been received by a Web Feature Service that
84
            references the lockId given to the client application, then
85
            the locks maintained by the Web Feature Service shall be
86
            released and the lockId that references the locked features
87
            shall now be invalid.  If the expiry attribute is not specified,
88
            then the feature instances shall be locked indefinitely and the
89
            intervention of an administrator may be required to release
90
            the locks. -->
91

    
92
   <!-- ==============================================================
93
         TYPES
94
         ============================================================== -->
95
   <!-- GETFEATUREWITHLOCK -->
96
   <xsd:complexType name="GetFeatureWithLockType">
97
      <xsd:annotation>
98
         <xsd:documentation>
99
            A GetFeatureWithLock request operates identically to a
100
            GetFeature request expect that it attempts to lock the
101
            feature instances in the result set and includes a lock
102
            identifier in its response to a client.  A lock identifier
103
            is an identifier generated by a Web Feature Service that 
104
            a client application can use, in subsequent operations,
105
            to reference the locked set of feature instances.
106
         </xsd:documentation>
107
      </xsd:annotation>
108
      <xsd:sequence>
109
         <xsd:element ref="wfs:Query" maxOccurs="unbounded"/>
110
      </xsd:sequence>
111
      <xsd:attribute name="version"
112
                     type="xsd:string" use="required" fixed="1.0.0"/>
113
      <xsd:attribute name="service"
114
                     type="xsd:string" use="required" fixed="WFS"/>
115
      <xsd:attribute name="handle"
116
                     type="xsd:string" use="optional"/>
117
      <xsd:attribute name="expiry"
118
                     type="xsd:positiveInteger" use="optional"/>
119
      <xsd:attribute name="outputFormat"
120
                     type="xsd:string" use="optional" default="GML2"/>
121
      <xsd:attribute name="maxFeatures"
122
                     type="xsd:positiveInteger" use="optional"/>
123
   </xsd:complexType>
124
   <!-- LOCKFEATURE -->
125
   <xsd:complexType name="LockFeatureType">
126
      <xsd:annotation>
127
         <xsd:documentation>
128
            This type defines the LockFeature operation.  The LockFeature
129
            element contains one or more Lock elements that define
130
            which features of a particular type should be locked.  A lock
131
            identifier (lockId) is returned to the client application which
132
            can be used by subsequent operations to reference the locked
133
            features.
134
         </xsd:documentation>
135
      </xsd:annotation>
136
      <xsd:sequence>
137
         <xsd:element name="Lock" type="wfs:LockType" maxOccurs="unbounded">
138
            <xsd:annotation>
139
               <xsd:documentation>
140
                  The lock element is used to indicate which feature 
141
                  instances of particular type are to be locked.
142
               </xsd:documentation>
143
            </xsd:annotation>
144
         </xsd:element>
145
      </xsd:sequence>
146
      <xsd:attribute name="version"
147
                     type="xsd:string" use="required" fixed="1.0.0"/>
148
      <xsd:attribute name="service"
149
                     type="xsd:string" use="required" fixed="WFS"/>
150
      <xsd:attribute name="expiry"
151
                     type="xsd:positiveInteger" use="optional"/>
152
      <xsd:attribute name="lockAction"
153
                     type="wfs:AllSomeType" use="optional">
154
         <xsd:annotation>
155
            <xsd:documentation>
156
               The lockAction attribute is used to indicate what
157
               a Web Feature Service should do when it encounters
158
               a feature instance that has already been locked by
159
               another client application.
160

    
161
               Valid values are ALL or SOME.
162

    
163
               ALL means that the Web Feature Service must acquire
164
               locks on all the requested feature instances.  If it
165
               cannot acquire those locks then the request should
166
               fail.  In this instance, all locks acquired by the
167
               operation should be released.
168
 
169
               SOME means that the Web Feature Service should lock
170
               as many of the requested features as it can.
171
            </xsd:documentation>
172
         </xsd:annotation>
173
      </xsd:attribute>
174
   </xsd:complexType>
175
   <xsd:complexType name="LockType">
176
      <xsd:annotation>
177
         <xsd:documentation>
178
            This type defines the Lock element.  The Lock element
179
            defines a locking operation on feature instances of 
180
            a single type. An OGC Filter is used to constrain the
181
            scope of the operation.  Features to be locked can be
182
            identified individually by using their feature identifier
183
            or they can be locked by satisfying the spatial and 
184
            non-spatial constraints defined in the filter.
185
         </xsd:documentation>
186
      </xsd:annotation>
187
      <xsd:sequence>
188
         <xsd:element ref="ogc:Filter" minOccurs="0" maxOccurs="1"/>
189
      </xsd:sequence>
190
      <xsd:attribute name="handle" 
191
                     type="xsd:string" use="optional"/>
192
      <xsd:attribute name="typeName" 
193
                     type="xsd:QName" use="required"/>
194
   </xsd:complexType>
195
   <!-- TRANSACTION -->
196
   <xsd:complexType name="TransactionType">
197
      <xsd:annotation>
198
         <xsd:documentation>
199
            The TranactionType defines the Transaction operation.  A
200
            Transaction element contains one or more Insert, Update
201
            Delete and Native elements that allow a client application
202
            to create, modify or remove feature instances from the 
203
            feature repository that a Web Feature Service controls.
204
         </xsd:documentation>
205
      </xsd:annotation>
206
      <xsd:sequence>
207
         <xsd:element ref="wfs:LockId" minOccurs="0">
208
            <xsd:annotation>
209
               <xsd:documentation>
210
                  In order for a client application to operate upon locked
211
                  feature instances, the Transaction request must include
212
                  the LockId element.  The content of this element must be
213
                  the lock identifier the client application obtained from
214
                  a previous GetFeatureWithLock or LockFeature operation.
215

    
216
                  If the correct lock identifier is specified the Web
217
                  Feature Service knows that the client application may
218
                  operate upon the locked feature instances.
219

    
220
                  No LockId element needs to be specified to operate upon
221
                  unlocked features.
222
               </xsd:documentation>
223
            </xsd:annotation>
224
         </xsd:element>
225
         <xsd:choice minOccurs="0" maxOccurs="unbounded">
226
            <xsd:element ref="wfs:Insert"/>
227
            <xsd:element ref="wfs:Update"/>
228
            <xsd:element ref="wfs:Delete"/>
229
            <xsd:element ref="wfs:Native"/>
230
         </xsd:choice>
231
      </xsd:sequence>
232
      <xsd:attribute name="version"
233
                     type="xsd:string" use="required" fixed="1.0.0"/>
234
      <xsd:attribute name="service"
235
                     type="xsd:string" use="required" fixed="WFS"/>
236
      <xsd:attribute name="handle"
237
                     type="xsd:string" use="optional"/>
238
      <xsd:attribute name="releaseAction"
239
                     type="wfs:AllSomeType" use="optional">
240
         <xsd:annotation>
241
            <xsd:documentation>
242
               The releaseAction attribute is used to control how a Web
243
               Feature service releases locks on feature instances after
244
               a Transaction request has been processed.
245

    
246
               Valid values are ALL or SOME.
247

    
248
               A value of ALL means that the Web Feature Service should
249
               release the locks of all feature instances locked with the
250
               specified lockId, regardless or whether or not the features
251
               were actually modified.
252

    
253
               A value of SOME means that the Web Feature Service will 
254
               only release the locks held on feature instances that 
255
               were actually operated upon by the transaction.  The lockId
256
               that the client application obtained shall remain valid and
257
               the other, unmodified, feature instances shall remain locked.
258
               If the expiry attribute was specified in the original operation 
259
               that locked the feature instances, then the expiry counter
260
               will be reset to give the client application that same amount
261
               of time to post subsequent transactions against the locked
262
               features.
263
            </xsd:documentation>
264
         </xsd:annotation>
265
      </xsd:attribute>
266
   </xsd:complexType>
267
   <xsd:element name="LockId" type="xsd:string">
268
      <xsd:annotation>
269
         <xsd:documentation>
270
            The LockId element contains the value of the lock identifier
271
            obtained by a client application from a previous GetFeatureWithLock
272
            or LockFeature request.
273
         </xsd:documentation>
274
      </xsd:annotation>
275
   </xsd:element>
276
   <xsd:element name="Insert" type="wfs:InsertElementType">
277
      <xsd:annotation>
278
         <xsd:documentation>
279
            The Insert element is used to indicate that the Web Feature
280
            Service should create a new instance of a feature type.  The
281
            feature instance is specified using GML2 and one or more 
282
            feature instances to be created can be contained inside the
283
            Insert element.
284
         </xsd:documentation>
285
      </xsd:annotation>
286
   </xsd:element>
287
   <xsd:complexType name="InsertElementType">
288
      <xsd:sequence>
289
         <xsd:element ref="gml:_Feature" maxOccurs="unbounded"/>
290
      </xsd:sequence>
291
      <xsd:attribute name="handle" type="xsd:string" use="optional"/>
292
   </xsd:complexType>
293
   <xsd:element name="Update" type="wfs:UpdateElementType">
294
      <xsd:annotation>
295
         <xsd:documentation>
296
            One or more existing feature instances can be changed by
297
            using the Update element.  Changing a feature instance
298
            means that the current value of one or more properties of
299
            the feature are replaced with new values.  The Update
300
            element contains  one or more Property elements.  A
301
            Property element contains the name or a feature property
302
            who's value is to be changed and the replacement value
303
            for that property.
304
         </xsd:documentation>
305
      </xsd:annotation>
306
   </xsd:element>
307
   <xsd:complexType name="UpdateElementType">
308
      <xsd:sequence>
309
         <xsd:element ref="wfs:Property" maxOccurs="unbounded" />
310
         <xsd:element ref="ogc:Filter" minOccurs="0" maxOccurs="1">
311
            <xsd:annotation>
312
               <xsd:documentation>
313
                  The Filter element is used to constrain the scope
314
                  of the update operation to those features identified
315
                  by the filter.  Feature instances can be specified
316
                  explicitly and individually using the identifier of
317
                  each feature instance OR a set of features to be
318
                  operated on can be identified by specifying spatial
319
                  and non-spatial constraints in the filter.
320
                  If no filter is specified, then the update operation 
321
                  applies to all feature instances.
322
               </xsd:documentation>
323
            </xsd:annotation>
324
         </xsd:element>
325
      </xsd:sequence>
326
      <xsd:attribute name="handle" type="xsd:string" use="optional"/>
327
      <xsd:attribute name="typeName" type="xsd:QName" use="required"/>
328
   </xsd:complexType>
329
   <xsd:element name="Delete" type="wfs:DeleteElementType">
330
      <xsd:annotation>
331
         <xsd:documentation>
332
            The Delete element is used to indicate that one or more
333
            feature instances should be removed from the feature
334
            repository.
335
         </xsd:documentation>
336
      </xsd:annotation>
337
   </xsd:element>
338
   <xsd:complexType name="DeleteElementType">
339
      <xsd:sequence>
340
         <xsd:element ref="ogc:Filter" minOccurs="1" maxOccurs="1">
341
            <xsd:annotation>
342
               <xsd:documentation>
343
                  The Filter element is used to constrain the scope
344
                  of the delete operation to those features identified
345
                  by the filter.  Feature instances can be specified
346
                  explicitly and individually using the identifier of
347
                  each feature instance OR a set of features to be
348
                  operated on can be identified by specifying spatial
349
                  and non-spatial constraints in the filter.
350
                  If no filter is specified then an exception should
351
                  be raised since it is unlikely that a client application
352
                  intends to delete all feature instances.
353
               </xsd:documentation>
354
            </xsd:annotation>
355
         </xsd:element>
356
      </xsd:sequence>
357
      <xsd:attribute name="handle" type="xsd:string" use="optional"/>
358
      <xsd:attribute name="typeName" type="xsd:QName" use="required"/>
359
   </xsd:complexType>
360
   <xsd:element name="Native" type="wfs:NativeType">
361
      <xsd:annotation>
362
         <xsd:documentation>
363
            Many times, a Web Feature Service interacts with a repository
364
            that may have special vendor specific capabilities.  The native
365
            element allows vendor specific command to be passed to the
366
            repository via the Web Feature Service.
367
         </xsd:documentation>
368
      </xsd:annotation>
369
   </xsd:element>
370
   <xsd:complexType name="NativeType">
371
      <xsd:attribute name="vendorId" type="xsd:string" use="required">
372
         <xsd:annotation>
373
            <xsd:documentation>
374
               The vendorId attribute is used to specify the name of
375
               vendor who's vendor specific command the client
376
               application wishes to execute.
377
            </xsd:documentation>
378
         </xsd:annotation>
379
      </xsd:attribute>
380
      <xsd:attribute name="safeToIgnore" type="xsd:boolean" use="required">
381
         <xsd:annotation>
382
            <xsd:documentation>
383
               In the event that a Web Feature Service does not recognize
384
               the vendorId or does not recognize the vendor specific command,
385
               the safeToIgnore attribute is used to indicate whether the 
386
               exception can be safely ignored.  A value of TRUE means that
387
               the Web Feature Service may ignore the command.  A value of
388
               FALSE means that a Web Feature Service cannot ignore the
389
               command and an exception should be raised if a problem is 
390
               encountered.
391
            </xsd:documentation>
392
         </xsd:annotation>
393
      </xsd:attribute>
394
   </xsd:complexType>
395

    
396
   <!-- define structure to specify a property value -->
397
   <xsd:element name="Property" type="wfs:PropertyType">
398
      <xsd:annotation>
399
         <xsd:documentation>
400
            The Property element is used to specify the new
401
            value of a feature property inside an Update element.
402
         </xsd:documentation>
403
      </xsd:annotation>
404
   </xsd:element>
405
   <xsd:complexType name="PropertyType">
406
      <xsd:sequence>
407
         <xsd:element name="Name" type="xsd:string">
408
            <xsd:annotation>
409
               <xsd:documentation>
410
                  The Name element contains the name of a feature property
411
                  to be updated.
412
               </xsd:documentation>
413
            </xsd:annotation>
414
         </xsd:element>
415
         <xsd:element name="Value" minOccurs="0">
416
            <xsd:annotation>
417
               <xsd:documentation>
418
                  The Value element contains the replacement value for the
419
                  named property.
420
               </xsd:documentation>
421
            </xsd:annotation>
422
         </xsd:element>
423
      </xsd:sequence>
424
   </xsd:complexType>
425
   <!-- RESPONSE TYPES -->
426
   <xsd:complexType name="WFS_LockFeatureResponseType">
427
      <xsd:annotation>
428
         <xsd:documentation>
429
            The WFS_LockFeatureResponseType is used to define an
430
            element to contains the response to a LockFeature
431
            operation.
432
         </xsd:documentation>
433
      </xsd:annotation>
434
      <xsd:sequence>
435
         <xsd:element ref="wfs:LockId">
436
            <xsd:annotation>
437
               <xsd:documentation>
438
                  The WFS_LockFeatureResponse includes a LockId element
439
                  that contains a lock identifier.  The lock identifier
440
                  can be used by a client, in subsequent operations, to
441
                  operate upon the locked feature instances.
442
               </xsd:documentation>
443
            </xsd:annotation>
444
         </xsd:element>
445
         <xsd:element name="FeaturesLocked"
446
                      type="wfs:FeaturesLockedType" minOccurs="0">
447
            <xsd:annotation>
448
               <xsd:documentation>
449
                  The LockFeature or GetFeatureWithLock operations
450
                  identify and attempt to lock a set of feature 
451
                  instances that satisfy the constraints specified 
452
                  in the request.  In the event that the lockAction
453
                  attribute (on the LockFeature or GetFeatureWithLock
454
                  elements) is set to SOME, a Web Feature Service will
455
                  attempt to lock as many of the feature instances from
456
                  the result set as possible.
457

    
458
                  The FeaturesLocked element contains list of ogc:FeatureId
459
                  elements enumerating the feature instances that a WFS
460
                  actually managed to lock.
461
               </xsd:documentation>
462
            </xsd:annotation>
463
         </xsd:element>
464
         <xsd:element name="FeaturesNotLocked"
465
                      type="wfs:FeaturesNotLockedType" minOccurs="0">
466
            <xsd:annotation>
467
               <xsd:documentation>
468
                  In contrast to the FeaturesLocked element, the
469
                  FeaturesNotLocked element contains a list of 
470
                  ogc:Filter elements identifying feature instances
471
                  that a WFS did not manage to lock because they were
472
                  already locked by another process.
473
               </xsd:documentation>
474
            </xsd:annotation>
475
         </xsd:element>
476
      </xsd:sequence>
477
   </xsd:complexType>
478
   <xsd:complexType name="FeaturesLockedType">
479
     <xsd:sequence maxOccurs="unbounded">
480
       <xsd:element ref="ogc:FeatureId"/>
481
     </xsd:sequence>
482
   </xsd:complexType>
483
   <xsd:complexType name="FeaturesNotLockedType">
484
     <xsd:sequence maxOccurs="unbounded">
485
       <xsd:element ref="ogc:FeatureId"/>
486
     </xsd:sequence>
487
   </xsd:complexType>
488
   <xsd:complexType name="WFS_TransactionResponseType">
489
      <xsd:annotation>
490
         <xsd:documentation>
491
            The WFS_TransactionResponseType defines the format of
492
            the XML document that a Web Feature Service generates 
493
            in response to a Transaction request.  The response 
494
            includes the completion status of the transaction 
495
            and the feature identifiers of any newly created
496
            feature instances.
497
         </xsd:documentation>
498
      </xsd:annotation>
499
      <xsd:sequence>
500
         <xsd:element name="InsertResult"
501
                      type="wfs:InsertResultType"
502
                      minOccurs="0" maxOccurs="unbounded">
503
            <xsd:annotation>
504
               <xsd:documentation>
505
                  The InsertResult element contains a list of ogc:FeatureId
506
                  elements that identify any newly created feature instances.
507
               </xsd:documentation>
508
            </xsd:annotation>
509
         </xsd:element>
510
         <xsd:element name="TransactionResult"
511
                      type="wfs:TransactionResultType">
512
            <xsd:annotation>
513
               <xsd:documentation>
514
                  The TransactionResult element contains a Status element
515
                  indicating the completion status of a transaction.  In
516
                  the event that the transaction fails, additional element
517
                  may be included to help locate which part of the transaction
518
                  failed and why.
519
               </xsd:documentation>
520
            </xsd:annotation>
521
         </xsd:element>
522
      </xsd:sequence>
523
      <xsd:attribute name="version"
524
                     type="xsd:string" use="required" fixed="1.0.0"/>
525
   </xsd:complexType>
526
   <xsd:complexType name="TransactionResultType">
527
      <xsd:sequence>
528
         <xsd:element name="Status" type="wfs:StatusType">
529
            <xsd:annotation>
530
               <xsd:documentation>
531
                  The Status element contains an element indicating the
532
                  completion status of a transaction.  The SUCCESS element
533
                  is used to indicate successful completion.  The FAILED
534
                  element is used to indicate that an exception was 
535
                  encountered.
536
               </xsd:documentation>
537
            </xsd:annotation>
538
         </xsd:element>
539
         <xsd:element name="Locator" type="xsd:string" minOccurs="0">
540
            <xsd:annotation>
541
               <xsd:documentation>
542
                  In the event that an exception was encountered while 
543
                  processing a transaction, a Web Feature Service may
544
                  use the Locator element to try and identify the part
545
                  of the transaction that failed.  If the element(s)
546
                  contained in a Transaction element included a handle
547
                  attribute, then a Web Feature Service may report the
548
                  handle to identify the offending element.
549
               </xsd:documentation>
550
            </xsd:annotation>
551
         </xsd:element>
552
         <xsd:element name="Message" type="xsd:string" minOccurs="0">
553
            <xsd:annotation>
554
               <xsd:documentation>
555
                  The Message element may contain an exception report
556
                  generated by a Web Feature Service when an exception
557
                  is encountered.
558
               </xsd:documentation>
559
            </xsd:annotation>
560
         </xsd:element>
561
      </xsd:sequence>
562
      <xsd:attribute name="handle" type="xsd:string" use="optional"/>
563
   </xsd:complexType>
564
   <xsd:complexType name="InsertResultType">
565
      <xsd:sequence>
566
         <xsd:element ref="ogc:FeatureId" maxOccurs="unbounded"/>
567
      </xsd:sequence>
568
      <xsd:attribute name="handle" type="xsd:string" use="optional"/>
569
   </xsd:complexType>
570
   <xsd:complexType name="StatusType">
571
      <xsd:choice>
572
         <xsd:element ref="wfs:SUCCESS"/>
573
         <xsd:element ref="wfs:FAILED"/>
574
         <xsd:element ref="wfs:PARTIAL"/>
575
      </xsd:choice>
576
   </xsd:complexType>
577
   <xsd:element name="SUCCESS" type="wfs:EmptyType"/>
578
   <xsd:element name="FAILED" type="wfs:EmptyType"/>
579
   <xsd:element name="PARTIAL" type="wfs:EmptyType"/>
580
   <!-- MISC TYPES -->
581
   <xsd:complexType name="EmptyType"/>
582
   <xsd:simpleType name="AllSomeType">
583
      <xsd:restriction base="xsd:string">
584
         <xsd:enumeration value="ALL"/>
585
         <xsd:enumeration value="SOME"/>
586
      </xsd:restriction>
587
   </xsd:simpleType>
588
</xsd:schema>
(4-4/4)