<!-- MapServer Map File DTD -->

<!-- 
  top level MAP object 

<!ELEMENT MAP 
  ((EXTENT|FONTSET|IMAGECOLOR|IMAGETYPE|IMAGEQUALITY|INTERLACE|SHAPEPATH|SIZE|SYMBOLSET|TRANSPARENT|UNITS|METADATA)*,(LEGEND|PROJECTION|QUERYMAP|REFERENCE|SCALEBAR|WEB)*,(SYMBOL|LAYER)+)
>

  -->
<!ELEMENT MAP 
  (EXTENT|FONTSET|IMAGECOLOR|IMAGETYPE|IMAGEQUALITY|INTERLACE|SHAPEPATH|SIZE|SYMBOLSET|TRANSPARENT|UNITS|METADATA|LEGEND|PROJECTION|QUERYMAP|REFERENCE|SCALEBAR|WEB|SYMBOL|LAYER)*
>
<!ATTLIST MAP 
  NAME NMTOKEN #REQUIRED
  STATUS (ON|OFF) "ON"
>
<!ELEMENT EXTENT (#PCDATA)>
<!ELEMENT FONTSET (#PCDATA)>
<!ELEMENT IMAGECOLOR (#PCDATA)>
<!ELEMENT IMAGETYPE (#PCDATA)>
<!ELEMENT IMAGEQUALITY (#PCDATA)>
<!ELEMENT INTERLACE (#PCDATA)>
<!ELEMENT SHAPEPATH (#PCDATA)>
<!ELEMENT SIZE (#PCDATA)>
<!ELEMENT SYMBOLSET (#PCDATA)>
<!ELEMENT TRANSPARENT (#PCDATA)>
<!ELEMENT UNITS (#PCDATA)>

<!-- 
  LEGEND object
  -->
<!ELEMENT LEGEND 
  (IMAGECOLOR|INTERLACE|KEYSIZE|KEYSPACING|LABEL|OUTLINECOLOR|POSITION|POSTLABELCACHE|TRANSPARENT)*
>
<!ATTLIST LEGEND
  STATUS (ON|OFF|EMBED) "OFF"
>
<!-- IMAGECOLOR already declared -->
<!-- INTERLACE already declared -->
<!ELEMENT KEYSIZE (#PCDATA)>
<!ELEMENT KEYSPACING (#PCDATA)>
<!ELEMENT OUTLINECOLOR (#PCDATA)>
<!ELEMENT POSITION (#PCDATA)>
<!ELEMENT POSTLABELCACHE (#PCDATA)>
<!-- TRANSPARENT already declared -->

<!-- 
  QUERYMAP object
  -->
<!ELEMENT QUERYMAP 
  (COLOR|SIZE)*
>
<!ATTLIST QUERYMAP   
  STATUS (ON|OFF) "OFF"
  STYLE (HILITE|NORMAL|SELECTED) "HILITE"
>
<!ELEMENT COLOR (#PCDATA)>
<!-- SIZE already declared -->

<!-- 
  a PROJECTION object - nothing more that character data 
  -->
<!ELEMENT PROJECTION (#PCDATA)>

<!-- 
  a SCALEBAR object
  -->
<!ELEMENT SCALEBAR 
  (BACKGROUNDCOLOR|COLOR|IMAGECOLOR|INTERLACE|INTERVALS|LABEL|OUTLINECOLOR|POSITION|POSTLABELCACHE|SIZE|TRANSPARENT|UNITS)*
>
<!ATTLIST SCALEBAR
  STATUS (ON|OFF|EMBED) "OFF"
  STYLE (0|1) "0"
>
<!ELEMENT BACKGROUNDCOLOR (#PCDATA)>
<!-- ELEMENT COLOR (#PCDATA) -->
<!-- IMAGECOLOR already declared -->
<!-- INTERLACE already declared -->
<!ELEMENT INTERVALS (#PCDATA)>
<!-- OUTLINECOLOR already declared -->
<!-- POSITION already declared -->
<!-- POSTLABELCACHE already declared -->
<!-- SIZE already declared -->
<!-- TRANSPARENT already declared -->
<!-- UNITS already declared -->

<!-- 
  a REFERENCE map object
  -->
<!ELEMENT REFERENCE
  (COLOR|EXTENT|IMAGE|OUTLINECOLOR|SIZE)*
>
<!ATTLIST REFERENCE
  STATUS (ON|OFF) "OFF"
>
<!-- COLOR already declared -->
<!-- EXTENT already declared -->
<!ELEMENT IMAGE (#PCDATA)>
<!-- OUTLINECOLOR already declared -->
<!-- SIZE already declared -->

<!-- 
  a WEB object
  -->
<!ELEMENT WEB
  (ERROR|EMPTY|FOOTER|HEADER|IMAGEPATH|IMAGEURL|LOG|MAXSCALE|MAXTEMPLATE|MINSCALE|MINTEMPLATE|TEMPLATE|METADATA)*
>
<!ELEMENT EMPTY (#PCDATA)>
<!ELEMENT ERROR (#PCDATA)>
<!ELEMENT FOOTER (#PCDATA)>
<!ELEMENT HEADER (#PCDATA)>
<!ELEMENT IMAGEPATH (#PCDATA)>
<!ELEMENT IMAGEURL (#PCDATA)>
<!ELEMENT LOG (#PCDATA)>
<!ELEMENT MAXSCALE (#PCDATA)>
<!ELEMENT MAXTEMPLATE (#PCDATA)>
<!ELEMENT MINSCALE (#PCDATA)>
<!ELEMENT MINTEMPLATE (#PCDATA)>
<!ELEMENT TEMPLATE (#PCDATA)>
<!ELEMENT METADATA (#PCDATA)>

<!--
  a LAYER object
  -->
<!ELEMENT LAYER 
  (CLASS|CLASSITEM|CONNECTION|CONNECTIONTYPE|DATA|DESCRIPTION|FEATURE|FILTER|FILTERITEM|FOOTER|GROUP|HEADER|TEMPLATE|LABELANGLEITEM|LABELCACHE|LABELITEM|LABELMAXSCALE|LABELMINSCALE|LABELREQUIRES|LABELSIZEITEM|MAXFEATURES|MAXSCALE|MINSCALE|OFFSITE|POSTLABELCACHE|PROJECTION|REQUIRES|SYMBOLSCALE|TILEINDEX|TILEITEM|TILESRS|TOLERANCE|TOLERANCEUNITS|TRANSFORM|TRANSPARENCY|METADATA)*
>
<!ATTLIST LAYER 
  NAME NMTOKEN #REQUIRED
  STATUS (ON|OFF|DEFAULT) "OFF"
  TYPE (ANNOTATION|POINT|LINE|POLYGON|POLYLINE|QUERY|RASTER) #REQUIRED
>
<!ELEMENT CLASSITEM (#PCDATA)>
<!ELEMENT CONNECTION (#PCDATA)>
<!ELEMENT CONNECTIONTYPE (#PCDATA)>
<!ELEMENT DATA (#PCDATA)>
<!ELEMENT DESCRIPTION (#PCDATA)>
<!-- ELEMENT FEATURE (#PCDATA) -->
<!ELEMENT FILTER (#PCDATA)>
<!ELEMENT FILTERITEM (#PCDATA)>
<!-- FOOTER already declared -->
<!ELEMENT GROUP (#PCDATA)>
<!-- HEADER already declared -->
<!ELEMENT LABELANGLEITEM (#PCDATA)>
<!ELEMENT LABELCACHE (#PCDATA)>
<!ELEMENT LABELITEM (#PCDATA)>
<!ELEMENT LABELMAXSCALE (#PCDATA)>
<!ELEMENT LABELMINSCALE (#PCDATA)>
<!ELEMENT LABELREQUIRES (#PCDATA)>
<!ELEMENT LABELSIZEITEM (#PCDATA)>
<!ELEMENT MAXFEATURES (#PCDATA)>
<!-- MAXSCALE already declared -->
<!-- MINSCALE already declared -->
<!ELEMENT OFFSITE (#PCDATA)>
<!-- POSTLABELCACHE already declared -->
<!ELEMENT REQUIRES (#PCDATA)>
<!ELEMENT SYMBOLSCALE (#PCDATA)>
<!ELEMENT TILEINDEX (#PCDATA)>
<!ELEMENT TILEITEM (#PCDATA)>
<!ELEMENT TILESRS (#PCDATA)>
<!ELEMENT TOLERANCE (#PCDATA)>
<!ELEMENT TOLERANCEUNITS (#PCDATA)>
<!ELEMENT TRANSFORM (#PCDATA)>
<!ELEMENT TRANSPARENCY (#PCDATA)>

<!--
  a FEATURE object
  -->
<!ELEMENT FEATURE
  (POINTS|TEXT)*
>
<!ELEMENT POINTS (#PCDATA)>
<!ELEMENT TEXT (#PCDATA)>

<!--
  a CLASS object
  -->
<!ELEMENT CLASS
  (BACKGROUNDCOLOR|COLOR|EXPRESSION|LABEL|MAXSIZE|MINSIZE|OUTLINECOLOR|OVERLAYBACKGROUNDCOLOR|OVERLAYCOLOR|OVERLAYMAXSIZE|OVERLAYMINSIZE|OVERLAYOUTLINECOLOR|OVERLAYSIZE|OVERLAYSYMBOL|SIZE|SYMBOL|TEMPLATE|TEXT|TYPE)*
>
<!ATTLIST CLASS
  NAME CDATA #IMPLIED
>
<!-- BACKGROUNDCOLOR already declared -->
<!-- COLOR already declared -->
<!ELEMENT EXPRESSION (#PCDATA)>
<!ELEMENT MAXSIZE (#PCDATA)>
<!ELEMENT MINSIZE (#PCDATA)>
<!-- OUTLINECOLOR already declared -->
<!ELEMENT OVERLAYBACKGROUNDCOLOR (#PCDATA)>
<!ELEMENT OVERLAYCOLOR (#PCDATA)>
<!ELEMENT OVERLAYMAXSIZE (#PCDATA)>
<!ELEMENT OVERLAYMINSIZE (#PCDATA)>
<!ELEMENT OVERLAYOUTLINECOLOR (#PCDATA)>
<!ELEMENT OVERLAYSIZE (#PCDATA)>
<!ELEMENT OVERLAYSYMBOL (#PCDATA)>
<!-- SIZE already declared -->
<!ELEMENT SYMBOL (#PCDATA)>
<!-- TEMPLATE already declared -->
<!-- TEXT already declared -->
<!ELEMENT TYPE (#PCDATA)>

<!--
  a LABEL object
  -->
<!ELEMENT LABEL
 (ANGLE|ANTIALIAS|BUFFER|BACKGROUNDCOLOR|BACKGROUNDSHADOWCOLOR|BACKGROUNDSHADOWSIZE|COLOR|FONT|FORCE|MAXSIZE|MINDISTANCE|MINFEATURESIZE|MINSIZE|OFFSET|OUTLINECOLOR|PARTIALS|POSITION|SHADOWCOLOR|SHADOWSIZE|SIZE|WRAP)*
>
<!ATTLIST LABEL   
  TYPE (BITMAP|TRUETYPE) #REQUIRED
>
<!ELEMENT ANGLE (#PCDATA)>
<!ELEMENT ANTIALIAS (#PCDATA)>
<!ELEMENT BUFFER (#PCDATA)>
<!-- BACKGROUNDCOLOR already declared -->
<!ELEMENT BACKGROUNDSHADOWCOLOR (#PCDATA)>
<!ELEMENT BACKGROUNDSHADOWSIZE (#PCDATA)>
<!-- COLOR already declared -->
<!ELEMENT FONT (#PCDATA)>
<!ELEMENT FORCE (#PCDATA)>
<!-- MAXSIZE already declared -->
<!ELEMENT MINDISTANCE (#PCDATA)>
<!ELEMENT MINFEATURESIZE (#PCDATA)>
<!-- MINSIZE already declared -->
<!-- OFFSET already declared -->
<!ELEMENT OFFSET (#PCDATA)>
<!-- OUTLINECOLOR already declared -->
<!ELEMENT PARTIALS (#PCDATA)>
<!-- POSITION already declared -->
<!ELEMENT SHADOWCOLOR (#PCDATA)>
<!ELEMENT SHADOWSIZE (#PCDATA)>
<!-- SIZE already declared -->
<!ELEMENT WRAP (#PCDATA)>

<!--
  a JOIN object (still under development)
  -->

<!--
  a SYMBOL object
  -->
  
