 <!ELEMENT SystemDefinition ( systemModel?, SystemBuild? )>
<!ATTLIST SystemDefinition
  name CDATA #REQUIRED
  schema CDATA #REQUIRED
>
<!ELEMENT systemModel (layer+)>
<!ELEMENT layer (block* | collection*)*>
<!ATTLIST layer
  name CDATA #REQUIRED
  long-name CDATA #IMPLIED
  levels NMTOKENS #IMPLIED
  span CDATA #IMPLIED
>
<!ELEMENT block (subblock* | collection*)*>
<!ATTLIST block
  levels NMTOKENS #IMPLIED
  span CDATA #IMPLIED
  level NMTOKEN #IMPLIED
  name CDATA #REQUIRED
  long-name CDATA #IMPLIED
>
<!ELEMENT subblock (collection)*>
<!ATTLIST subblock
  name CDATA #REQUIRED
  long-name CDATA #IMPLIED
>
<!ELEMENT collection (component)*>
<!ATTLIST collection
  name CDATA #REQUIRED
  long-name CDATA #IMPLIED
  level NMTOKEN #IMPLIED
>
<!ELEMENT component (unit)*>
<!ATTLIST component
  name CDATA #REQUIRED
  long-name CDATA #IMPLIED
  deprecated CDATA #IMPLIED
  introduced CDATA #IMPLIED
  contract CDATA #IMPLIED
  plugin (Y|N) "N"
  filter CDATA #IMPLIED
  class NMTOKENS #IMPLIED
  supports CDATA #IMPLIED
  purpose ( optional | mandatory | development ) "optional"
>
<!ELEMENT unit EMPTY >
<!ATTLIST unit
  mrp CDATA #IMPLIED
  filter CDATA #IMPLIED
  bldFile CDATA #IMPLIED
  root CDATA #IMPLIED
  version NMTOKEN #IMPLIED
  prebuilt NMTOKEN #IMPLIED
  late (Y|N) #IMPLIED
  priority CDATA #IMPLIED
>
 <!ELEMENT SystemBuild (option* | target+ | targetList+ | list+ | configuration+)*>
 <!ATTLIST SystemBuild schema CDATA #REQUIRED>
 <!ELEMENT list (ref+)>
 <!ATTLIST list
  name ID #REQUIRED
  description CDATA #REQUIRED>
 <!ELEMENT ref EMPTY>
 <!ATTLIST ref item CDATA #REQUIRED>
 <!ELEMENT targetList EMPTY>
 <!ATTLIST targetList
  name ID #REQUIRED
  description CDATA #REQUIRED
  target IDREFS #REQUIRED>
 <!ELEMENT target EMPTY>
 <!ATTLIST target
  name ID #REQUIRED
  abldTarget CDATA #REQUIRED
  description CDATA #REQUIRED>
 <!ELEMENT option EMPTY>
 <!ATTLIST option
  name ID #REQUIRED
  abldOption CDATA #REQUIRED
  description CDATA #REQUIRED
  enable (Y | N ) #REQUIRED>
 <!ELEMENT configuration (listRef+ | ref+ | task+)*>
 <!ATTLIST configuration
  name ID #REQUIRED
  description CDATA #REQUIRED
  filter CDATA #REQUIRED>
 <!ELEMENT task (listRef* , (buildLayer | specialInstructions))>
 <!ELEMENT listRef EMPTY>
 <!ATTLIST listRef list CDATA #REQUIRED>
 <!ELEMENT buildLayer EMPTY>
 <!ATTLIST buildLayer
  command CDATA #REQUIRED
  targetList IDREFS #IMPLIED
  unitParallel (Y | N ) #REQUIRED
  targetParallel (Y | N ) "N">
 <!ELEMENT specialInstructions EMPTY>
 <!ATTLIST specialInstructions
  name CDATA #REQUIRED
  cwd CDATA #REQUIRED
  root CDATA #IMPLIED
  command CDATA #REQUIRED>
