<?xml version="1.0" encoding="UTF-8"?> 

<!-- ============================================================== --> 
<!--        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 )                                               --> 
<!--                                                                --> 
<!--        F E A T U R E     D T D                                 --> 
<!--                                                                --> 
<!--        Copyright (c) 2000 Open Geospatial Consortium.          --> 
<!-- ============================================================== --> 

<!-- The GML Feature DTD includes the GML Geometry DTD as an external entity
reference. --> 

<!ENTITY % GMLGEOMETRYDTD SYSTEM "gmlgeometry.dtd"> 
%GMLGEOMETRYDTD; 

<!-- A feature contains a set of properties (simple and/or geometric). In addition a
feature can optionally contain a description. A feature must specify its feature
type by name (typeName). It may optionally provide an identifier for use within its
containing feature collection (identifier) --> 

<!ELEMENT Feature (  
 description?, name?, boundedBy?, 
 property*, geometricProperty* )> 

<!ATTLIST Feature  
   typeName   CDATA #REQUIRED 
   identifier CDATA #IMPLIED > 

<!-- A feature collection has the same definition as a feature, but in addition a
feature collection may contain featureMembers. The boundedBy element is mandatory
for feature collections. --> 

<!ELEMENT FeatureCollection ( 
 description?, name?, boundedBy, 
 property*, geometricProperty*, 
 featureMember* )> 

<!ATTLIST FeatureCollection  
   typeName   CDATA #REQUIRED 
   identifier CDATA #IMPLIED > 

<!-- A featureMember can be a Feature or a FeatureCollection. The name of the 
relationship between the containing FeatureCollection and contained Features is 
specified by the typeName attribute. -->
 
<!ELEMENT featureMember ( Feature | FeatureCollection )>

<!ATTLIST featureMember
   typeName   CDATA #REQUIRED > 

<!-- Simple properties hold the property value as parsed character data. The type of
the value is specified by the type attribute, which defaults to the 'string' type.
The name of the property is specified by the typeName attribute. --> 

<!ELEMENT property (#PCDATA)> 
<!ATTLIST property  
   typeName   CDATA #REQUIRED 
   type ( boolean | integer | real | string ) "string" > 

<!-- Geometric properties hold the property value as a contained geometry element.
The name of the property is specified by the typeName attribute. --> 

<!ELEMENT geometricProperty (%GeometryClasses;)> 
<!ATTLIST geometricProperty  
   typeName   CDATA #REQUIRED >