<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XMLSPY v5 rel. 4 U (http://www.xmlspy.com) by Thea Roberts (Global Science and Technology) -->
<!--  

      DTD for HDFEOS Hierarchical Data Format Earth Observing System, Version 1.0

      HDFEOS defines extensions to facilitate the creation of Grid, Point and Swath

      data structures. This DTD defines the Grid, Point and Swath structures in 
 
      detail.

-->
<!-- 
	Include NCSA HDF5 DTD in order to inherit their DataType Defitions. This section will be included once we have an entity that describe the SimpleDataType only from NCSA.
	<!ENTITY % HDF5_DTD SYSTEM "http://hdf.ncsa.uiuc.edu/DTDs/HDF5-File.dtd">
	%HDF5_DTD;
-->
<!-- The attribue 'Name' contains the file name -->
<!ELEMENT HDFEOS-File (HDFEOS, HDFEOS_INFORMATION)>
<!ATTLIST HDFEOS-File
	Name CDATA #REQUIRED
	Type CDATA "HDFEOS5"
>
<!ELEMENT HDFEOS (Attribute*, POINTS?, SWATHS?, GRIDS?)>
<!ELEMENT HDFEOS_INFORMATION (coremetadata?, archivemetadata?, StructMetadata?, ProductMetadata?)>
<!-- 
	Core metadata represent information which is used to populate searchable database tables within
	the ECS archives. Data users use this information to locate particular HDF-EOS data granules.
	These metadata, which are defined in Release B-1 Earth Sciences Data Model, are also copied in
	the “coremetadata.X” (X= 0,...,n) family of global attributes within an HDF-EOS file. The
	syntax of these metadata is compliant with the Object Description Language (ODL). Tools for
	formatting, accessing and writing core metadata are provided in the SDP Toolkit.
-->
<!ELEMENT coremetadata (link_to_data | in_line_data)>
<!-- 
	Archive metadata represent information that, by definition, will not be searchable. It contains
	whatever information the file creator considers useful to be in the file, but which will not be
	directly accessible by ECS databases. They are also stored in ODL format.
-->
<!ELEMENT archivemetadata (link_to_data | in_line_data)>
<!-- 
	Structural metadata describe the contents and structure of an HDF-EOS file. That is, these
	metadata describe how geolocation, temporal, projection information are to be associated with
	the data itself. Structural metadata are present in the file only if the HDF-EOS library has been
	invoked to create a Grid, Point, or Swath structure. They are also stored in ODL format. 
-->
<!ELEMENT StructMetadata (link_to_data | in_line_data)>
<!-- 
-->
<!ELEMENT ProductMetadata (link_to_data | in_line_data)>
<!-- 
 DataType - attribute dataset datatype 
 count - Number of attributes elements
 -->
<!ELEMENT Attribute (DataType, Count, Value+)>
<!ATTLIST Attribute
	Name CDATA #REQUIRED
>
<!ELEMENT Value (#PCDATA)>
<!ELEMENT Count (#PCDATA)>
<!ELEMENT SWATHS (Swath)+>
<!ELEMENT Swath (Attribute*, Dimension*, GeoField*, DataField*, DimensionMapping*)>
<!ATTLIST Swath
	Name CDATA #REQUIRED
>
<!ELEMENT Dimension EMPTY>
<!ATTLIST Dimension
	Name CDATA #REQUIRED
	Size CDATA #REQUIRED
>
<!--

<DimName> can be any legal quoted name but must be unique within <Swath> element 
-->
<!ELEMENT DimName (#PCDATA)>
<!--
Size is optional (and can only legally be specified when
corresponding named dimension is SD_UNLIMITED. 
It can be any non-negative integer representing the size of the dimension defined. 
 A value zero or the keyword SD_UNLIMITED represents an unlimited dimension as defined in HDF.
 -->
<!ATTLIST DimName
	Size CDATA #IMPLIED
>
<!-- 
GeoField Definition 

Reserved Field Names
HDF-EOS library version 1 reserves the following field names.  
If the fields are used in a swath definition, they must be defined with the following datatypes.
	
Keyword	Datatype				Comments
Latitude	FLOAT32 or FLOAT64	floating point latitude
Longitude	FLOAT32 or FLOAT64	floating point longitude
CoLatitude	FLOAT32 or FLOAT64	floating point colatitude
Time		FLOAT32 or FLOAT64	TAI93 time in float

-->
<!ELEMENT GeoField (Attribute*, DataType, DimList, MaxDimList?, FieldStorage?, (link_to_data | in_line_data))>
<!--
GeoField name can be any legal quoted name but must be unique within <Swath> element 
-->
<!ATTLIST GeoField
	Name CDATA #REQUIRED
>
<!--
<DataType> We are using the DataType Defn from the HDF5 DTD
<!ELEMENT DataType (#PCDATA)>
ByteOrder is not required (HDFEOS API doesn't support retrieving this information
-->
<!ELEMENT DataType (IntegerType | FloatType | StringType | TimeType | BitfieldType | OpaqueType | ReferenceType | EnumType)>
<!ELEMENT IntegerType EMPTY>
<!ATTLIST IntegerType
	ByteOrder (BE | LE) #IMPLIED
	Sign (true | false) #REQUIRED
	Size (1 | 2 | 4 | 8) #REQUIRED
>
<!--
ByteOrder, SignBitLocation, ExponentBits, ExponentLocation, MantissaBits, MantissaLocation  are no longer
 required (HDFEOS API doesn't support retrieving this information)
-->
<!ELEMENT FloatType EMPTY>
<!ATTLIST FloatType
	ByteOrder (BE | LE) #IMPLIED
	Size (4 | 8) #REQUIRED
	SignBitLocation CDATA #IMPLIED
	ExponentBits CDATA #IMPLIED
	ExponentLocation CDATA #IMPLIED
	MantissaBits CDATA #IMPLIED
	MantissaLocation CDATA #IMPLIED
>
<!ELEMENT TimeType EMPTY>
<!--
  Cset and StrPad are no longer  required (HDFEOS API doesn't support retrieving this information)
 -->
<!ELEMENT StringType EMPTY>
<!ATTLIST StringType
	Cset (H5T_CSET_ASCII) #IMPLIED
	StrSize CDATA #REQUIRED
	StrPad (H5T_STR_NULLTERM | H5T_STR_NULLPAD | H5T_STR_SPACEPAD) #IMPLIED
>
<!ELEMENT BitfieldType EMPTY>
<!ELEMENT OpaqueType EMPTY>
<!ELEMENT ReferenceType (ObjectReferenceType | RegionReferenceType)>
<!ELEMENT ObjectReferenceType EMPTY>
<!ELEMENT RegionReferenceType EMPTY>
<!ELEMENT EnumType (EnumElement, EnumValue)+>
<!ATTLIST EnumType
	Nelems CDATA #REQUIRED
>
<!ELEMENT EnumElement (#PCDATA)>
<!ELEMENT EnumValue (#PCDATA)>
<!-- style sheets can present this as (dim1, dim2, dim3, dim4) -->
<!ELEMENT DimList (DimName+)>
<!ELEMENT MaxDimList (DimName+)>
<!-- 
For Swath Data Field Storage Element 
<CompressionCode> can be one of HDFE_COMP_NBIT,HDFE_COMP_RLE, HDFE_COMP_SKPHUFF, HDFE_COMP_DEFLATE or HDFE_COMP_NONE (default). 
<CompParamList>  is a list of integers separated by commas.  Its requirements and ranges depend on 
<CompressionCode>. See the HDF-EOS document for more details.
-->
<!ELEMENT FieldStorage (Merge?, Compression?)>
<!-- 
 Field Merge Flags  
#define HE5_HDFE_NOMERGE   0
#define HE5_HDFE_AUTOMERGE 1
Note: Merging is not supported in  current release of the HDFEOS library version 5.1.2.
-->
<!ELEMENT Merge EMPTY>
<!ATTLIST Merge
	Code (HDFE_NOMERGE | HDFE_AUTOMERGE) #REQUIRED
>
<!--  
Field Compression Methods are defined in the HE5_HdfEosDef.h
#define HE5_HDFE_COMP_NONE     0
#define HE5_HDFE_COMP_RLE      1
#define HE5_HDFE_COMP_NBIT     2
#define HE5_HDFE_COMP_SKPHUFF  3
#define HE5_HDFE_COMP_DEFLATE  4
-->
<!ELEMENT Compression (CompParameter*)>
<!ATTLIST Compression
	Code (HDFE_COMP_NONE | HDFE_COMP_RLE | HDFE_COMP_NBIT | HDFE_COMP_SKPHUFF | HDFE_COMP_DEFLATE | HDRD_COMP_NONE) #REQUIRED
>
<!ELEMENT CompParameter (#PCDATA)>
<!--
<DimList> is a comma separated list of <DimName> where <DimName>  must be the name of a dimension
 defined in Swath Dimension Element.
-->
<!ELEMENT DataField (Attribute*, DataType, DimList, MaxDimList?, FieldStorage?, (link_to_data | in_line_data))>
<!-- DataField Name must be unique within the Swath element -->
<!ATTLIST DataField
	Name CDATA #REQUIRED
>
<!-- link_to_data element will have the actual path of the binary dump 
     of the data field using URL notation i.e. </link_to_data>file:Grid/sst_mask_1.dat</link_to_data>
-->
<!ELEMENT link_to_data (#PCDATA)>
<!-- in_line_data element will have the actual data dump 
     of the data field using  comma or space seperated values i.e.  <in_line_data>1, 2, 3, 17, ..., 42</in_line_data>
-->
<!ELEMENT in_line_data (#PCDATA)>
<!-- Dimension Mapping -->
<!--
Regular Dimension Mapping Definition
<GeoDimName> must be a Dimension name on which a Geofield is defined.
<DataDimName> must be a Dimension name on which a Datafield is defined.
<Increment> can be any non-zero integer value.
<Offset>  can be any positive integer value.

Implicit Mapping Name

HDF-EOS library implicitly defines the name of a regular dimension map as GeoDimension and DataDimension joined by a slash.
-->
<!ELEMENT DimensionMapping (RegularDimensionMapping | IndexDimensionMapping)*>
<!ELEMENT RegularDimensionMapping (GeoDimension, DataDimension, Offset, Increment)>
<!ELEMENT GeoDimension (#PCDATA)>
<!ELEMENT DataDimension (#PCDATA)>
<!ELEMENT Offset (#PCDATA)>
<!ELEMENT Increment (#PCDATA)>
<!--
Index Dimension Mapping Definition

The index dimension mapping consists of a  Scanned Data Dimension, Geolocation Data Dimension and an array of index values
-->
<!ELEMENT IndexDimensionMapping (GeoDimension, DataDimension, IndexArray)>
<!--
 IndexArray is a list of index values  i.e. <IndexArray>1 3 5 7</IndexArray>
-->
<!ELEMENT IndexArray (#PCDATA)>
<!-- Point Deftiniton -->
<!ELEMENT POINTS (Point)+>
<!ELEMENT Point (Attribute*, level*, LevelLink*)>
<!ATTLIST Point
	Name CDATA #REQUIRED
>
<!ELEMENT level (PointField*)>
<!ATTLIST level
	Name CDATA #REQUIRED
>
<!ELEMENT PointField (FieldName, DataType, (link_to_data | in_line_data))>
<!ATTLIST PointField
	Order CDATA #IMPLIED
>
<!ELEMENT FieldName (#PCDATA)>
<!ELEMENT LevelLink (Parent, Child, LinkField)>
<!ELEMENT Parent (#PCDATA)>
<!ELEMENT Child (#PCDATA)>
<!ELEMENT LinkField (#PCDATA)>
<!ELEMENT GRIDS (Grid)+>
<!ELEMENT Grid (Attribute*, Parameters, Dimension*, GridDataField)>
<!ATTLIST Grid
	Name CDATA #REQUIRED
>
<!-- Neet to define Parameters and DataFields for Grid -->
<!--
The Grid parameters definition contains the definitions as follows.

YDim	Grid Y Dimension size
XDim	Grid X Dimension size
UpperLeftPoint	Grid Upper-left-point
LowerRightPoint	Grid Lower-right-point
Projection	Grid Projection Type as used in GCTP
ProjectionParameters	GCTP parameters for the projection
SphereCode	Optional Sphere Code for the projection.  Default value is 0.
ZoneCode	Zone Code for UTM projection only.  Default value is 0.
PixelRegistration	Defines pixel origin.

Possible Registration Codes are:
			HE5_HDFE_CENTER (default)
			HE5_HDFE_CORNER

OriginType	Defines location of first datapoint.  
Possible Origin Codes are:	
HE5_HDFE_GD_UL (default)
HE5_HDFE_GD_UR
HE5_HDFE_GD_LL
HE5_HDFE_GD_LR

Users should consult the HDF-EOS library User Guide for the projection types 
supported and the GCTP documents for the appropriate values for the projection parameters and the two codes.  
Currently supported projection types are as follows.

ProjCode	Projection Type
GCTP_GEO (0) 	Geographic
GCTP_UTM (1) 	Universal Transverse Mercator
GCTP_LAMCC (4) 	Lambert Conformal Conic
GCTP_PS (6) 	Polar Stereographic
GCTP_POLYC (7) 	Polyconic
GCTP_TM (9) 	Transverse Mercator
GCTP_LAMAZ (11) Lambert Azimuthal Equal Area
GCTP_HOM (20) 	Hotine Oblique Mercator
GCTP_SOM (22) 	Space Oblique Mercator
GCTP_GOOD (24) 	Interrupted Goode Homolosine
GCTP_ISINUS (99/31) Integerized Sinusoidal Projection*	 

Additional requirements:
All definitions can be in any order.
<XDim> and <YDim> can be any positive integer representing the size of the dimension defined.
<PT>  is a pair of float64 numbers separated by a comma.
Attribue Projcode  is a projection code supported by HDF-EOS library.
<ProjectParameters>  is a list of 15 float64 numbers.
<Spherecode>  is an integer representing the sphere code.
<Zonecode>  is an integer representing the zone code.
<PixelRegisteration>  is a pixel registration code supported by HDF-EOS library.
<OriginCode>  is a legal origin code supported by HDF-EOS library.

-->
<!ELEMENT Parameters (YDim, XDim, UpperLeftPoint, LowerRightPoint, Projection, SphereCode, ZoneCode, PixelRegistration, OriginType)>
<!ELEMENT YDim (#PCDATA)>
<!ELEMENT XDim (#PCDATA)>
<!ELEMENT UpperLeftPoint EMPTY>
<!ATTLIST UpperLeftPoint
	X CDATA #REQUIRED
	Y CDATA #REQUIRED
>
<!ELEMENT LowerRightPoint EMPTY>
<!ATTLIST UppeRightPoint
	X CDATA #REQUIRED
	Y CDATA #REQUIRED
>
<!-- 
GCTP projections   
For each GCTP projection we define the HDFEOS5 Projection Code, Name, and its ID (0,1,..30, 99)
For each projection that requires parameters, we define the parameters elements and identify their index within the vector of 15 parameters
for each projection.
Notes:
• All angles (latitudes, longitudes, azimuths, etc.) are entered in packed degrees/ minutes/ seconds
(DDDMMMSSS.SS) format.
-->
<!ELEMENT Projection (GEO | UTM | SPCS | ALBERS | LAMCC | MERCAT | PS | POLYC | EQUIDC | TM | STEREO | LAMAZ | AZMEQD | GNOMON | ORTHO | GVNSP | SNSOID | EQRECT | MILLER | VGRINT | HOM | ROBIN | SOM | ALASKA | GOOD | MOLL | IMOLL | HAMMER | WAGIV | WAGVII | OBLEQA | ISINUS)>
<!ELEMENT GEO EMPTY>
<!ATTLIST GEO
	Code CDATA #FIXED "HE5_GCTP_GEO"
	Name CDATA #FIXED "Geographic"
	ID CDATA #FIXED "0"
>
<!ELEMENT UTM (UtmParameters)>
<!ATTLIST UTM
	Code CDATA #FIXED "HE5_GCTP_UTM"
	Name CDATA #FIXED "Universal Transverse Mercator (UTM)"
	ID CDATA #FIXED "1"
>
<!ELEMENT UtmParameters (Longitude_Point, Latitude_Point)>
<!-- Longitude of any point in the UTM zone or zero. If zero, a zone code must be
specified. -->
<!ELEMENT Longitude_Point (#PCDATA)>
<!ATTLIST Longitude_Point
	Index CDATA #FIXED "0"
>
<!-- Latitude of any point in the UTM zone or zero. If zero, a zone code must be
specified. -->
<!ELEMENT Latitude_Point (#PCDATA)>
<!ATTLIST Latitude_Point
	Index CDATA #FIXED "1"
>
<!ELEMENT SPCS EMPTY>
<!ATTLIST SPCS
	Code CDATA #FIXED "HE5_GCTP_SPCS"
	Name CDATA #FIXED "State Plane Coordinates"
	ID CDATA #FIXED "2"
>
<!ELEMENT ALBERS EMPTY>
<!ATTLIST ALBERS
	Code CDATA #FIXED "HE5_GCTP_ALBERS"
	Name CDATA #FIXED "Albers Conical Equal Area"
	ID CDATA #FIXED "3"
>
<!ELEMENT LAMCC (lamccParameters)>
<!ATTLIST LAMCC
	Code CDATA #FIXED "HE5_GCTP_LAMCC"
	Name CDATA #FIXED "Lambert Conformal Conic"
	ID CDATA #FIXED "4"
>
<!ELEMENT lamccParameters (Semi_Major_Axis, Semi_Minor_Axis, Latitude_First_Standard_Parallel, Latitude_Second_Standard_Parallel)>
<!-- Semi-major axis of ellipsoid. If zero, Clarke 1866 in meters is assumed. -->
<!ELEMENT Semi_Major_Axis (#PCDATA)>
<!ATTLIST Semi_Major_Axis
	Index CDATA #FIXED "0"
>
<!-- Eccentricity squared of the ellipsoid if less than zero, if zero, a spherical form is
assumed, or if greater than zero, the semi-minor axis of ellipsoid. -->
<!ELEMENT Semi_Minor_Axis (#PCDATA)>
<!ATTLIST Semi_Minor_Axis
	Index CDATA #FIXED "1"
>
<!-- Latitude of the first standard parallel -->
<!ELEMENT Latitude_First_Standard_Parallel (#PCDATA)>
<!ATTLIST Latitude_First_Standard_Parallel
	Index CDATA #FIXED "2"
>
<!-- Latitude of the second standard parallel -->
<!ELEMENT Latitude_Second_Standard_Parallel (#PCDATA)>
<!ATTLIST Latitude_Second_Standard_Parallel
	Index CDATA #FIXED "3"
>
<!ELEMENT MERCAT EMPTY>
<!ATTLIST MERCAT
	Code CDATA #FIXED "HE5_GCTP_MERCAT"
	Name CDATA #FIXED "Mercator"
	ID CDATA #FIXED "5"
>
<!ELEMENT PS (psParameters)>
<!ATTLIST PS
	Code CDATA #FIXED "HE5_GCTP_PS"
	Name CDATA #FIXED "Polar Stereographic"
	ID CDATA #FIXED "6"
>
<!ELEMENT psParameters (Semi_Major_Axis, Semi_Minor_Axis, Longitude_Below_Pole, Latitude_True_Scale, False_Easting, False_Northing)>
<!-- Longitude down below pole of map -->
<!ELEMENT Longitude_Below_Pole (#PCDATA)>
<!ATTLIST Longitude_Below_Pole
	Index CDATA #FIXED "4"
>
<!-- Latitude of true scale -->
<!ELEMENT Latitude_True_Scale (#PCDATA)>
<!ATTLIST Latitude_True_Scale
	Index CDATA #FIXED "5"
>
<!-- False easting in the same units as the semi-major axis -->
<!ELEMENT False_Easting (#PCDATA)>
<!ATTLIST False_Easting
	Index CDATA #FIXED "6"
>
<!-- False northing in the same units as the semi-major axis -->
<!ELEMENT False_Northing (#PCDATA)>
<!ATTLIST False_Northing
	Index CDATA #FIXED "7"
>
<!ELEMENT POLYC (polycParameters)>
<!ATTLIST POLYC
	Code CDATA #FIXED "HE5_GCTP_POLYC"
	Name CDATA #FIXED "Polyconic"
	ID CDATA #FIXED "7"
>
<!ELEMENT polycParameters (Semi_Major_Axis, Semi_Minor_Axis, Longitude_Central_Meridian, Latitude_Origin, False_Easting, False_Northing)>
<!-- Longitude of the central meridian -->
<!ELEMENT Longitude_Central_Meridian (#PCDATA)>
<!ATTLIST Longitude_Central_Meridian
	Index CDATA #FIXED "4"
>
<!-- Latitude of the projection origin -->
<!ELEMENT Latitude_Origin (#PCDATA)>
<!ATTLIST Latitude_Origin
	Index CDATA #FIXED "5"
>
<!ELEMENT EQUIDC EMPTY>
<!ATTLIST EQUIDC
	Code CDATA "HE5_GCTP_EQUIDC"
	Name CDATA "Equidistant Conic"
	ID CDATA "8"
>
<!ELEMENT TM (tmParameters)>
<!ATTLIST TM
	Code CDATA #FIXED "HE5_GCTP_TM"
	Name CDATA #FIXED "Transverse Mercator"
	ID CDATA #FIXED "9"
>
<!ELEMENT tmParameters (Semi_Major_Axis, Semi_Minor_Axis, Central_Meridian_Scale_Factor, Longitude_Central_Meridian, Latitude_Origin, False_Easting, False_Northing)>
<!-- Scale factor at central meridian (Transverse Mercator) or center of projection
(Hotine Oblique Mercator) -->
<!ELEMENT Central_Meridian_Scale_Factor (#PCDATA)>
<!ATTLIST Central_Meridian_Scale_Factor
	Index CDATA #FIXED "2"
>
<!ELEMENT STEREO EMPTY>
<!ATTLIST STEREO
	Code CDATA #FIXED "HE5_GCTP_STEREO"
	Name CDATA #FIXED "Stereographic"
	ID CDATA #FIXED "10"
>
<!ELEMENT LAMAZ (lamazParameters)>
<!ATTLIST LAMAZ
	Code CDATA #FIXED "HE5_GCTP_LAMAZ"
	Name CDATA #FIXED "Lambert Azimuthal Equal Area"
	ID CDATA #FIXED "11"
>
<!ELEMENT lamazParameters (Reference_Sphere_Radius, Longitude_Center, Latitude_Center, False_Easting, False_Northing)>
<!-- Longitude of center of projection -->
<!ELEMENT Longitude_Center (#PCDATA)>
<!ATTLIST Longitude_Center
	Index CDATA #FIXED "4"
>
<!-- Latitude of center of projection -->
<!ELEMENT Latitude_Center (#PCDATA)>
<!ATTLIST Latitude_Center
	Index CDATA #FIXED "5"
>
<!-- Radius of reference sphere. If zero, 6370997 meters is used. -->
<!ELEMENT Reference_Sphere_Radius (#PCDATA)>
<!ATTLIST Reference_Sphere_Radius
	Index CDATA #FIXED "0"
>
<!ELEMENT AZMEQD EMPTY>
<!ATTLIST AZMEQD
	Code CDATA #FIXED "HE5_GCTP_AZMEQD"
	Name CDATA #FIXED "Azimuthal Equidistant"
	ID CDATA #FIXED "12"
>
<!ELEMENT GNOMON EMPTY>
<!ATTLIST GNOMON
	Code CDATA #FIXED "HE5_GCTP_GNOMON"
	Name CDATA #FIXED "Gnomonic"
	ID CDATA #FIXED "13"
>
<!ELEMENT ORTHO EMPTY>
<!ATTLIST ORTHO
	Code CDATA #FIXED "HE5_GCTP_ORTHO"
	Name CDATA #FIXED "Orthographic"
	ID CDATA #FIXED "15"
>
<!ELEMENT GVNSP EMPTY>
<!ATTLIST GVNSP
	Code CDATA #FIXED "HE5_GCTP_GVNSP"
	Name CDATA #FIXED "General Vertical Near-Side Perspective"
	ID CDATA #FIXED "15"
>
<!ELEMENT SNSOID EMPTY>
<!ATTLIST SNSOID
	Code CDATA #FIXED "HE5_GCTP_SNSOID"
	Name CDATA #FIXED "Sinusiodal"
	ID CDATA #FIXED "16"
>
<!ELEMENT EQRECT EMPTY>
<!ATTLIST EQRECT
	Code CDATA #FIXED "HE5_GCTP_EQRECT"
	Name CDATA #FIXED "Equirectangular"
	ID CDATA #FIXED "17"
>
<!ELEMENT MILLER EMPTY>
<!ATTLIST MILLER
	Code CDATA #FIXED "HE5_GCTP_MILLER"
	Name CDATA #FIXED "Miller Cylindrical"
	ID CDATA #FIXED "18"
>
<!ELEMENT VGRINT EMPTY>
<!ATTLIST VGRINT
	Code CDATA #FIXED "HE5_GCTP_VGRINT"
	Name CDATA #FIXED "Van der Grinten"
	ID CDATA #FIXED "19"
>
<!ELEMENT HOM (hom_aParameters | hom_bParameters)>
<!ATTLIST HOM
	Code CDATA #FIXED "HE5_GCTP_HOM"
	Name CDATA #FIXED "(Hotine) Oblique Mercator"
	ID CDATA #FIXED "20"
>
<!ELEMENT hom_aParameters (Semi_Major_Axis, Semi_Minor_Axis, Central_Meridian_Scale_Factor, Latitude_Origin, False_Easting, False_Northing, Longitude_Center_Line1, Latitude_Center_Line1, Longitude_Center_Line2, Latitude_Center_Line2, format_A)>
<!ELEMENT hom_bParameters (Semi_Major_Axis, Semi_Minor_Axis, Central_Meridian_Scale_Factor, Azimuth_Angle, Azimuth_Longitude, Latitude_Origin, False_Easting, False_Northing, format_B)>
<!-- 
AziAng Azimuth angle east of north of center line (Hotine Oblique Mercator, frmt B)
-->
<!ELEMENT Azimuth_Angle (#PCDATA)>
<!ATTLIST Azimuth_Angle
	Index CDATA #FIXED "3"
>
<!-- AzmthPt Longitude of point on central meridian where azimuth occurs (Hotine Oblique
Mercator, format B) -->
<!ELEMENT Azimuth_Longitude (#PCDATA)>
<!ATTLIST Azimuth_Longitude
	Index CDATA #FIXED "4"
>
<!-- Longitude of first point on center line (Hotine Oblique Mercator, format A)
 -->
<!ELEMENT Longitude_Center_Line1 (#PCDATA)>
<!ATTLIST Longitude_Center_Line1
	Index CDATA #FIXED "8"
>
<!-- Latitude of first point on center line (Hotine Oblique Mercator, format A) -->
<!ELEMENT Latitude_Center_Line1 (#PCDATA)>
<!ATTLIST Latitude_Center_Line1
	Index CDATA #FIXED "9"
>
<!-- Longitude of second point on center line (Hotine Oblique Mercator, frmt A)  -->
<!ELEMENT Longitude_Center_Line2 (#PCDATA)>
<!ATTLIST Longitude_Center_Line2
	Index CDATA #FIXED "10"
>
<!-- Latitude of second point on center line (Hotine Oblique Mercator, format A) -->
<!ELEMENT Latitude_Center_Line2 (#PCDATA)>
<!ATTLIST Latitude_Center_Line2
	Index CDATA #FIXED "11"
>
<!ELEMENT format_A (Zero)>
<!ATTLIST format_A
	Index CDATA #FIXED "12"
>
<!ENTITY Zero "0">
<!ELEMENT format_B (One)>
<!ATTLIST format_B
	Index CDATA #FIXED "12"
>
<!ENTITY One "1">
<!ELEMENT ROBIN EMPTY>
<!ATTLIST ROBIN
	Code CDATA #FIXED "HE5_GCTP_ROBIN"
	Name CDATA #FIXED "Robinson"
	ID CDATA #FIXED "21"
>
<!-- 
The following notes apply to the Space Oblique Mercator A projection:
• A portion of Landsat rows 1 and 2 may also be seen as parts of rows 246 or 247. To
place these locations at rows 246 or 247, set the end of path flag (parameter 11) to 1-end
of path. This flag defaults to zero.
• When Landsat-1,2,3 orbits are being used, use the following values for the specified
parameters:
− Parameter 4 099005031.2
− Parameter 5 128.87 degrees - (360/251 * path number) in packed DMS format
− Parameter 9 103.2669323
− Parameter 10 0.5201613
• When Landsat-4,5 orbits are being used, use the following values for the specified
parameters:
− Parameter 4 098012000.0
− Parameter 5 129.30 degrees - (360/233 * path number) in packed DMS format
− Parameter 9 98.884119
− Parameter 10 0.5201613
-->
<!ELEMENT SOM (som_aParameters | som_bParameters)>
<!ATTLIST SOM
	Code CDATA #FIXED "HE5_GCTP_SOM"
	Name CDATA #FIXED "Space Oblique Mercator (SOM)"
	ID CDATA #FIXED "22"
>
<!ELEMENT som_aParameters (Semi_Major_Axis, Semi_Minor_Axis, Orbit_Inclination, Longitude_Ascending_Orbit, False_Easting, False_Northing, Period_of_Revolution, Satellite_Ratio, Landsat_End_Of_Path, HDF-EOS_Variable, format_A)>
<!ELEMENT som_bParameters (Semi_Major_Axis, Semi_Minor_Axis, Landsat_Sattelite_Number, Landsat_Path_Number, False_Easting, False_Northing, HDF-EOS_Variable, format_B)>
<!--
ILandsat Satellite Number (SOM, format B)-->
<!ELEMENT Landsat_Sattelite_Number (#PCDATA)>
<!ATTLIST Landsat_Sattelite_Number
	Index CDATA #FIXED "2"
>
<!--  Inclination of orbit at ascending node, counter-clockwise from equator (SOM,
format A) -->
<!ELEMENT Orbit_Inclination (#PCDATA)>
<!ATTLIST Orbit_Inclination
	Index CDATA #FIXED "4"
>
<!-- Longitude of ascending orbit at equator (SOM, format A) -->
<!ELEMENT Longitude_Ascending_Orbit (#PCDATA)>
<!ATTLIST Longitude_Ascending_Orbit
	Index CDATA #FIXED "5"
>
<!-- Landsat Path Number (Use WRS-1 for Landsat 1, 2 and 3 and WRS-2 for Landsat
4 and 5.) (SOM, format B) -->
<!ELEMENT Landsat_Path_Number (#PCDATA)>
<!ATTLIST Landsat_Path_Number
	Index CDATA #FIXED "3"
>
<!-- Period of satellite revolution in minutes (SOM, format A) -->
<!ELEMENT Period_of_Revolution (#PCDATA)>
<!ATTLIST Period_of_Revolution
	Index CDATA #FIXED "8"
>
<!-- Satellite ratio to specify the start and end point of x,y values on earth surface
(SOM, format A - for Landsat use 0.5201613) -->
<!ELEMENT Satellite_Ratio (#PCDATA)>
<!ATTLIST Satellite_Ratio
	Index CDATA #FIXED "9"
>
<!-- End of path flag for Landsat: 0 = start of path, 1 = end of path (SOM, frmt A)
Satnum Landsat Satellite Number (SOM, format B) -->
<!ELEMENT Landsat_End_Of_Path (#PCDATA)>
<!ATTLIST Landsat_End_Of_Path
	Index CDATA #FIXED "10"
>
<!-- 
	HDF-EOS_Variable is used by the HDFEOS5 Library function HE5_GDblksomoffset
-->
<!ELEMENT HDF-EOS_Variable (#PCDATA)>
<!ATTLIST HDF-EOS_Variable
	Index CDATA #FIXED "10"
>
<!ELEMENT ALASKA EMPTY>
<!ATTLIST ALASKA
	Code CDATA #FIXED "HE5_GCTP_ALASKA"
	Name CDATA #FIXED "Alaska Conformal"
	ID CDATA #FIXED "23"
>
<!ELEMENT GOOD (goodParameters)>
<!ATTLIST GOOD
	Code CDATA #FIXED "HE5_GCTP_GOOD"
	Name CDATA #FIXED "Interrupted Goode Homolosine"
	ID CDATA #FIXED "24"
>
<!ELEMENT goodParameters (Reference_Sphere_Radius)>
<!ELEMENT MOLL EMPTY>
<!ATTLIST MOLL
	Code CDATA #FIXED "HE5_GCTP_MOLL"
	Name CDATA #FIXED "Mollweide"
	ID CDATA #FIXED "25"
>
<!ELEMENT IMOLL EMPTY>
<!ATTLIST IMOLL
	Code CDATA "HE5_GCTP_IMOLL"
	Name CDATA "Interrupted Mollweide"
	ID CDATA "26"
>
<!ELEMENT HAMMER EMPTY>
<!ATTLIST HAMMER
	Code CDATA #FIXED "HE5_GCTP_HAMMER"
	Name CDATA #FIXED "Hammer"
	ID CDATA #FIXED "27"
>
<!ELEMENT WAGIV EMPTY>
<!ATTLIST WAGIV
	Code CDATA #FIXED "HE5_GCTP_WAGIV"
	Name CDATA #FIXED "Wagner IV"
	ID CDATA #FIXED "28"
>
<!ELEMENT WAGVII EMPTY>
<!ATTLIST WAGVII
	Code CDATA #FIXED "HE5_GCTP_WAGVII"
	Name CDATA #FIXED "Wagner VII"
	ID CDATA #FIXED "29"
>
<!ELEMENT OBLEQA EMPTY>
<!ATTLIST OBLEQA
	Code CDATA #FIXED "HE5_GCTP_OBLEQA"
	Name CDATA #FIXED "Oblated Equal Area"
	ID CDATA #FIXED "30"
>
<!ELEMENT ISINUS (isinusParameters)>
<!ATTLIST ISINUS
	Code CDATA #FIXED "HE5_GCTP_ISINUS"
	Name CDATA #FIXED "Integerized Sinusoidal Grid (added by Raj Gejjagaraguppe ARC for MODIS)"
	ID CDATA #FIXED "99"
>
<!ELEMENT isinusParameters (Reference_Sphere_Radius, Longitude_Central_Meridian, False_Easting, False_Northing, Latitudinal_Zones, Right_Justified_Columns)>
<!-- Right justify columns flag is used to indicate what to do in zones with an odd
number of columns. If it has a value of 0 or 1, it indicates the extra column is on
the right (zero) or left (one) of the projection Y-axis. If the flag is set to 2 (two),
the number of columns are calculated so there are always an even number of
columns in each zone. -->
<!ELEMENT Right_Justified_Columns (#PCDATA)>
<!ATTLIST Right_Justified_Columns
	Index CDATA #FIXED "10"
>
<!-- Number of equally spaced latitudinal zones (rows); must be two or larger and
even -->
<!ELEMENT Latitudinal_Zones (#PCDATA)>
<!ATTLIST Latitudinal_Zones
	Index CDATA #FIXED "8"
>
<!-- 
<Spherecode>  is an integer representing the sphere code.

-->
<!ELEMENT SphereCode (#PCDATA)>
<!-- 
<Zonecode>  is an integer representing the zone code.
-->
<!ELEMENT ZoneCode (#PCDATA)>
<!ELEMENT PixelRegistration EMPTY>
<!ATTLIST PixelRegisteration
	Code (HE5_HDFE_CENTER | HE5_HDFE_CORNER) #REQUIRED
>
<!ELEMENT OriginType EMPTY>
<!ATTLIST OriginType
	Code (HE5_HDFE_GD_UL | HE5_HDFE_GD_UR | HE5_HDFE_GD_LL | HE5_HDFE_GD_LR) #REQUIRED
>
<!ELEMENT GridDataField (Attribute*, DataType, DimList, MaxDimList?, FieldStorage?, TileDimList?, (link_to_data | in_line_data))>
<!ATTLIST GridDataField
	Name CDATA #REQUIRED
>
<!--

TileDimList are positive integers defining the sizes of the tile.  The number of  members 
in the TileDimList must equal to that of the DimList in the same field definition.
-->
<!-- OR that can be represented as a comma seperated list of integers-->
<!ELEMENT TileDimList (#PCDATA)>
<!ATTLIST TileDimList
	Code (HE5_DHFE_NOTILE | HE5_HDFE_TILE) #REQUIRED
	Rank CDATA #REQUIRED
>
