<!-- ============================================================== -->
<!-- G e o g r a p h y -->
<!-- M a r k u p -->
<!-- L a n g u a g e -->
<!-- -->
<!-- ( G M L ) -->
<!-- -->
<!-- G E O M E T R Y D T D -->
<!-- -->
<!-- Copyright (c) 2000 Open Geospatial Consortium. -->
<!-- ============================================================== -->
<!-- the coordinate element holds a list of coordinates as parsed character data. Note that it
does not reference a SRS and does not constitute a proper geometry class. -->
<!ELEMENT coordinates (#PCDATA) >
<!ATTLIST coordinates
decimal CDATA #IMPLIED
cs CDATA #IMPLIED
ts CDATA #IMPLIED >
<!-- the Box element defines an extent using a pair of coordinates and a SRS name. -->
<!ELEMENT Box (coordinates) >
<!ATTLIST Box
ID CDATA #IMPLIED
srsName CDATA #REQUIRED >
<!-- ============================================================== -->
<!-- G E O M E T R Y C L A S S D e f i n i t i o n s -->
<!-- ============================================================== -->
<!-- a Point is defined by a single coordinate. -->
<!ELEMENT Point (coordinates) >
<!ATTLIST Point
ID CDATA #IMPLIED
srsName CDATA #IMPLIED >
<!-- a LineString is defined by two or more coordinates, with linear interoplation between
them. -->
<!ELEMENT LineString (coordinates) >
<!ATTLIST LineString
ID CDATA #IMPLIED
srsName CDATA #IMPLIED >
<!-- a Polygon is defined by an outer boundary and zero or more inner boundaries. These
boundaries are themselves defined by LinerRings. -->
<!ELEMENT Polygon (outerBoundaryIs, innerBoundaryIs*) >
<!ATTLIST Polygon
ID CDATA #IMPLIED
srsName CDATA #IMPLIED >
<!ELEMENT outerBoundaryIs (LinearRing) >
<!ELEMENT innerBoundaryIs (LinearRing) >
<!-- a LinearRing is defined by four or more coordinates, with linear interpolation between
them. The first and last coordinates must be coincident. -->
<!ELEMENT LinearRing (coordinates) >
<!ATTLIST LinearRing
ID CDATA #IMPLIED >
<!-- a MultiPoint is defined by zero or more Points, referenced through a pointMember element.
-->
<!ELEMENT MultiPoint (pointMember+) >
<!ATTLIST MultiPoint
ID CDATA #IMPLIED
srsName CDATA #IMPLIED >
<!ELEMENT pointMember (Point) >
<!-- a MultiLineString is defined by zero or more LineStrings, referenced through a
lineStringMember element. -->
<!ELEMENT MultiLineString (lineStringMember+) >
<!ATTLIST MultiLineString
ID CDATA #IMPLIED
srsName CDATA #IMPLIED >
<!ELEMENT lineStringMember (LineString) >
<!-- a MultiPolygon is defined by zero or more Polygons, referenced through a polygonMember
element. -->
<!ELEMENT MultiPolygon (polygonMember+) >
<!ATTLIST MultiPolygon
ID CDATA #IMPLIED
srsName CDATA #IMPLIED >
<!ELEMENT polygonMember (Polygon) >
<!-- a GeometryCollection is defined by zero or more geometries, referenced through a
geometryMember element. A geometryMember element may be any one of the geometry classes. -->
<!ENTITY % GeometryClasses "(
Point | LineString | Polygon |
MultiPoint | MultiLineString | MultiPolygon |
GeometryCollection )" >
<!ELEMENT GeometryCollection (geometryMember+) >
<!ATTLIST GeometryCollection
ID CDATA #IMPLIED
srsName CDATA #IMPLIED >
<!ELEMENT geometryMember %GeometryClasses; >
<!-- ============================================================== -->
<!-- G E O M E T R Y P R O P E R T Y D e f i n i t i o n s -->
<!-- ============================================================== -->
<!-- GML provides an 'endorsed' name to define the extent of a feature. The extent is defined
by a Box element, the name of the property is boundedBy. -->
<!ELEMENT boundedBy (Box) >
<!-- the generic geometryProperty can accept a geometry of any class. -->
<!ELEMENT geometryProperty (%GeometryClasses;) >
<!-- the pointProperty has three descriptive names: centerOf, location and position. -->
<!ELEMENT pointProperty (Point) >
<!ELEMENT centerOf (Point) >
<!ELEMENT location (Point) >
<!ELEMENT position (Point) >
<!-- the lineStringProperty has two descriptive names: centerLineOf and edgeOf. -->
<!ELEMENT lineStringProperty (LineString) >
<!ELEMENT centerLineOf (LineString)>
<!ELEMENT edgeOf (LineString)>
<!-- the polygonProperty has two descriptive names: coverage and extentOf. -->
<!ELEMENT polygonProperty (Polygon) >
<!ELEMENT coverage (Polygon)>
<!ELEMENT extentOf (Polygon)>
<!-- the multiPointProperty has three descriptive names: multiCenterOf, multiLocation and
multiPosition. -->
<!ELEMENT multiPointProperty (MultiPoint) >
<!ELEMENT multiCenterOf (MultiPoint) >
<!ELEMENT multiLocation (MultiPoint) >
<!ELEMENT multiPosition (MultiPoint) >
<!-- the multiLineStringProperty has two descriptive names: multiCenterLineOf and multiEdgeOf.
-->
<!ELEMENT multiLineStringProperty (MultiLineString) >
<!ELEMENT multiCenterLineOf (MultiLineString) >
<!ELEMENT multiEdgeOf (MultiLineString) >
<!-- the multiPolygonProperty has two descriptive names: multiCoverage and multiExtentOf. -->
<!ELEMENT multiPolygonProperty (MultiPolygon) >
<!ELEMENT multiCoverage (MultiPolygon) >
<!ELEMENT multiExtentOf (MultiPolygon) >
<!ELEMENT geometryCollectionProperty (GeometryCollection) >
<!-- ============================================================== -->
<!-- F E A T U R E M E T A D A T A D e f i n i t i o n s -->
<!-- ============================================================== -->
<!-- Feature metadata, included in GML Geometry DTD for convenience; name and description are
two 'standard' string properties defined by GML. -->
<!ELEMENT name (#PCDATA)>
<!ELEMENT description (#PCDATA)>