<!ELEMENT imageContent  (version?, romchecksum?, time?, 
                         options?, romgeometry, romtarget, romscope?)+>

<!ELEMENT version       (#PCDATA)>
<!ELEMENT romchecksum   (#PCDATA)>
<!ELEMENT time          (#PCDATA)>
<!ELEMENT romgeometry   (image+)>
<!ELEMENT romtarget     (target+)>
<!ELEMENT romscope      ((obyFile|cdf)+)>

<!ELEMENT options       ((binaryselectionorder | trace       | bootbinary    |
                          dataaddress          | debugport   | 
                          defaultstackreserve  | device      | 
                          wrapper              | kernel      | primary+      | 
                          secondary+           | romalign    | romlinearbase | 
                          variant              | autosize    | extension     | coreimage)+)>

<!ELEMENT binaryselectionorder (#PCDATA)>
<!ELEMENT trace         (#PCDATA)>
<!ELEMENT bootbinary    (#PCDATA)>
<!ELEMENT wrapper       (#PCDATA)>
<!ATTLIST wrapper type  (none|epoc|coff) #REQUIRED>

<!ELEMENT kernel        (dataaddress, heapmax, heapmin, name, trace?)>
<!ATTLIST kernel number (single|multi) #IMPLIED>

<!ELEMENT heapmax   (#PCDATA)>
<!ELEMENT heapmin   (#PCDATA)>
<!ELEMENT name   (#PCDATA)>

<!ELEMENT dataaddress   (#PCDATA)>
<!ELEMENT debugport     (#PCDATA)>
<!ELEMENT defaultstackreserve   (#PCDATA)>
<!ELEMENT device        (file+)>
<!ELEMENT primary       (file+)>
<!ELEMENT secondary     (file+)>
<!ELEMENT variant       (file+)>
<!ELEMENT extension     (file+)>
<!ELEMENT romalign      (#PCDATA)>
<!ELEMENT romlinearbase (#PCDATA)>
<!ELEMENT autosize      (#PCDATA)>
<!ELEMENT coreimage     (#PCDATA)>

<!ELEMENT file       (source,destination,fixed?)>
<!ATTLIST file
	   id CDATA #REQUIRED>
<!ELEMENT source       (#PCDATA)>
<!ELEMENT destination  (#PCDATA)>
<!ELEMENT fixed	       (#PCDATA)>


<!ELEMENT image         (partition?)>
<!ATTLIST image
        id              CDATA #REQUIRED
        name            CDATA #REQUIRED
        type            (xip|nonxip) #REQUIRED
        compression     (compress|nocompress) #IMPLIED
        extension       (yes|no) "no"
        size            CDATA #REQUIRED>

<!ELEMENT target        (include,exclude?)>
<!ATTLIST target imageid CDATA #REQUIRED>
<!--- target imageid of any allowed where it there is no constraints on 
      which image the files should be placed. -->
<!ELEMENT include       ((feature|obyFile|cdf)+)>
<!ELEMENT exclude       (feature+)>
<!ELEMENT partition     (#PCDATA)>
<!ELEMENT feature       EMPTY>
<!ATTLIST feature name  CDATA #IMPLIED
                  uid   CDATA #IMPLIED>
<!ELEMENT obyFile       (#PCDATA)>
<!ELEMENT cdf           (#PCDATA)>
<!ATTLIST cdf type      (file|dir) "file">
