-
Notifications
You must be signed in to change notification settings - Fork 0
/
georss.rnc
63 lines (50 loc) · 2.53 KB
/
georss.rnc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# -*- rnc -*-
# RELAX NG Compact Syntax Grammar for the GEORSS
# This defines the conformance to the rules of GEORSS
#
# OGC Web Services Context 1.0 is an OGC Standard.
# Copyright (c) 2014 Open Geospatial Consortium.
# To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .
#
# Version: 1.0.0
#
namespace georss="http://www.georss.org/georss"
namespace gml="http://www.opengis.net/gml"
namespace local = ""
start |= georssElement
georssElement = ( georssSimple | georssWhere)
georssWhere = element georss:where { gmlAttribute*, gmlElement }
georssSimple = georssPoint | georssLine | georssPolygon | georssBox | georssCircle
| georssFeatureTypeTag | georssFeatureName | georssElev | georssFloor
georssPoint = element georss:point { list { xsd:decimal, xsd:decimal } }
georssLine = element georss:line { list { (xsd:decimal, xsd:decimal)+ } }
georssPolygon = element georss:polygon { list { (xsd:decimal, xsd:decimal)+ } }
georssBox = element georss:box {
list { (xsd:decimal, xsd:decimal, xsd:decimal, xsd:decimal) } }
georssCircle = element georss:circle {
list { (xsd:decimal, xsd:decimal, xsd:decimal) } }
georssFeatureTypeTag = element georss:featureTypeTag { text }
georssRelationshipTag = element georss:relationshipTag { text }
georssFeatureName = element georss:featureName { text }
georssElev = element georss:elev {xsd:decimal}
georssFloor = element georss:floor {xsd:decimal}
georssRadius = element georss:radius {xsd:decimal}
gmlAttribute = attribute (xml:base | xml:lang | local:* | gml:* ) { text }
gmlElement = (gmlPointElement | gmlLineStringElement |
gmlPolygonElement | gmlEnvelopeElement )
gmlPointElement =
element gml:Point { gmlAttribute*,
element gml:pos { gmlAttribute*, list { xsd:decimal, xsd:decimal }}}
gmlLineStringElement = element gml:LineString { gmlAttribute*,
element gml:posList {gmlAttribute*, list { (xsd:decimal, xsd:decimal)+ }}}
gmlPolygonElement = element gml:Polygon { gmlAttribute*,
element gml:exterior { gmlAttribute*,
element gml:LinearRing { gmlAttribute*,
element gml:posList { gmlAttribute*,
list { (xsd:decimal, xsd:decimal)+ }}}}}
gmlEnvelopeElement = element gml:Envelope { gmlAttribute*,
( element gml:lowerCorner { gmlAttribute*,
list { xsd:decimal, xsd:decimal } }
& element gml:upperCorner { gmlAttribute*,
list { xsd:decimal, xsd:decimal } }) }
# EOF