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

<!-- Version number of this CaveSurvey DTD -->
<!ENTITY % version "0.13">

<!-- DTD for the CaveScript CaveSurvey XML -->
<!-- Author: Michael Lake, mikel AT speleonics.com.au -->
<!-- This file is generated from noweb source file CaveSurvey.nw -->

<!-- ============ Parameter Entities ============ -->


<!-- Date models for use later -->
<!ENTITY % year  "YEAR  CDATA #IMPLIED" >
<!ENTITY % month "MONTH CDATA #IMPLIED" >
<!ENTITY % day   "DAY   CDATA #IMPLIED" >

<!-- These values can be set within the XML docs to select appropriate -->
<!-- STN attributes for normal/diving/topofil surveys.                 -->
<!-- Set to either INCLUDE or IGNORE.                                  -->
<!ENTITY % ifdiving  "IGNORE">
<!ENTITY % iftopofil "IGNORE">

<!-- These are for the Instruments section -->
<!ENTITY % instrument_id "ID ID #IMPLIED" > 
<!ENTITY % used "USED IDREF #IMPLIED" > 
<!ENTITY % zero "0.0" >
<!ENTITY % one  "1.0" >
<!ENTITY % zero_correct  "ZERO  CDATA %zero;" >
<!ENTITY % scale_correct "SCALE CDATA %one;"  >
<!ENTITY % accuracy "ACCURACY CDATA #IMPLIED"  >


<!-- ============ Root Element Name and Content ============ -->
<!ELEMENT CAVESURVEY ( HEAD, SURVEYORS?, INSTRUMENTS?, SERIES+ ) >

<!-- ============ Area Cave and Date Information ============ -->

<!ELEMENT HEAD (AREA, CAVE, DATES?) >

<!ELEMENT AREA EMPTY >
<!ATTLIST AREA
          NAME 		  CDATA #REQUIRED
          DECLINATION CDATA #IMPLIED
>

<!ELEMENT CAVE EMPTY >
<!ATTLIST CAVE
          NAME CDATA #REQUIRED
          TAG  CDATA #IMPLIED
>


<!ELEMENT DATES (SURVEYDATE?, CREATIONDATE?, MODIFICATIONDATE?, 
				LASTACCESSDATE?) >

<!ELEMENT SURVEYDATE EMPTY>
<!ELEMENT CREATIONDATE EMPTY >
<!ELEMENT MODIFICATIONDATE EMPTY >
<!ELEMENT LASTACCESSDATE EMPTY >

<!ATTLIST SURVEYDATE 
          %year;
          %month;
          %day;
>
<!ATTLIST CREATIONDATE
          %year;
          %month;
          %day;
> 
<!ATTLIST MODIFICATIONDATE
          %year;
          %month;
          %day;
> 
<!ATTLIST LASTACCESSDATE
          %year;
          %month;
          %day;
> 

 
<!-- ============ The Cave Surveyors ============ -->

<!ELEMENT SURVEYORS ( SURVEYOR+ ) >
<!ELEMENT SURVEYOR EMPTY >
<!ATTLIST SURVEYOR 
          NAME                CDATA #REQUIRED
          NAME_CONTACT        CDATA #IMPLIED
          AFFILLIATION        CDATA #IMPLIED
          AFFILIATION_CONTACT CDATA #IMPLIED >


<!-- ============ The Instruments Used ============ -->

<!ELEMENT INSTRUMENTS ( TAPE?, COMPASS?, CLINOMETER?, TOPOFIL?, THEODOLITE?, DEPTHGAUGE?) >

<!ELEMENT TAPE       (#PCDATA) >
<!ELEMENT COMPASS    (#PCDATA) >
<!ELEMENT CLINOMETER (#PCDATA) >
<!ELEMENT TOPOFIL    (#PCDATA) >
<!ELEMENT THEODOLITE (#PCDATA) >
<!ELEMENT DEPTHGAUGE (#PCDATA) >

<!ATTLIST TAPE 
          %instrument_id;
          %used;
          %zero_correct;
          %scale_correct;
          %accuracy;
          UNITS (METRES | FEET | YARDS ) "METRES"
>
<!ATTLIST COMPASS
          %instrument_id;
          %used;
          %zero_correct;
          %scale_correct;
          %accuracy;
          UNITS (DEG | DEGREES | GRADS | MILS | MINUTES) "DEGREES"
>
<!ATTLIST CLINOMETER
          %instrument_id;
          %used;
          %zero_correct;
          %scale_correct;
          %accuracy;
          UNITS (DEG | DEGREES | GRADS | MILS | PERCENT | PERCENTAGE) "DEGREES"
>
<!ATTLIST THEODOLITE
          %instrument_id;
          %used;
          %zero_correct;
          %scale_correct;
          %accuracy;
>
<!ATTLIST TOPOFIL
          %instrument_id;
          %used;
          %zero_correct;
          %scale_correct;
          %accuracy;
          UNITS (METRES | METERS | FEET | YARDS ) "METRES"
>
<!-- Depth Gauges are used in cave diving surveys -->
<!ATTLIST DEPTHGAUGE
          %instrument_id;
          %used;
          %zero_correct;
          %scale_correct;
          %accuracy;
          UNITS (METRES | METERS | FEET | YARDS ) "METRES"
>

<!-- ============ The Survey Data ============ -->
<!ELEMENT SERIES ( (SURVEYORS?, INSTRUMENTS?)?, (STN+, SHOT+)+, XSECT*, SERIES* )>
<!ATTLIST SERIES 
          NAME        CDATA #REQUIRED
          DATE        CDATA #IMPLIED
          DECLINATION CDATA #IMPLIED          


<!ELEMENT STN (#PCDATA)>
<!ATTLIST STN 
          NAME	 CDATA #REQUIRED
          EAST   CDATA #IMPLIED
          NORTH  CDATA #IMPLIED
          HEIGHT CDATA #IMPLIED
          ERROR_E     CDATA #IMPLIED
          ERROR_N     CDATA #IMPLIED
          ERROR_H     CDATA #IMPLIED
>

<!ELEMENT SHOT (#PCDATA)>
<!ATTLIST SHOT 
          FROM  CDATA				#REQUIRED
          TO    CDATA				#REQUIRED
          DIST  CDATA               #REQUIRED
          AZIM (CDATA | - )         #REQUIRED
          ELEV (CDATA | UP | DOWN ) #REQUIRED
          ERROR_DIST CDATA          #IMPLIED
          ERROR_AZIM CDATA          #IMPLIED
          ERROR_ELEV CDATA          #IMPLIED
>

<![%ifdiving; [
<!ATTLIST SHOT 
          FROMDEPTH   CDATA #IMPLIED
          TODEPTH     CDATA #IMPLIED
          ERROR_DEPTH CDATA #IMPLIED
]]>

<!ELEMENT XSECT (XDATA)+>
<!ELEMENT XDATA (#PCDATA) >
<!ATTLIST XDATA    
          SHOT 	CDATA					#REQUIRED
          POS  (#PCDATA | start | end)* #REQUIRED
          STRIKE CDATA                  #IMPLIED
          DIP CDATA                     #IMPLIED
>

<!ELEMENT EQUATE EMPTY >
<!ATTLIST EQUATE 
          XML:LINK CDATA #REQUIRED >

