<!ELEMENT configuration (description*, package*, task*)>
<!ATTLIST configuration
  name CDATA #REQUIRED
  version CDATA #REQUIRED
  os CDATA #IMPLIED
  db CDATA #IMPLIED
>
<!ELEMENT description (#PCDATA)>
<!ELEMENT package EMPTY>
<!ATTLIST package
  name CDATA #REQUIRED
  version CDATA #REQUIRED
>
<!ELEMENT task (description*, (if | choose | for-each | modifyFile | foo | copy | move | delete | createDirectory | fileAttributes | process | javaProcess | extract | readProfile | readSecStore | addBootstrapLibraries | readXML | readProperties | configureJ2EE)*)> 
<!ATTLIST task
  name CDATA #REQUIRED
  type CDATA #REQUIRED
>
<!ELEMENT if ((if | choose | for-each | modifyFile | foo | copy | move | delete | createDirectory | fileAttributes | process | javaProcess | extract | readProfile | readSecStore | readXML | readProperties | configureJ2EE | replaceInValue | setProperty)*)>
<!ATTLIST if
  test CDATA #REQUIRED
>
<!ELEMENT choose (when+, otherwise?)>
<!ELEMENT when ((if | choose | for-each | modifyFile | foo | copy | move | delete | createDirectory | fileAttributes | process | javaProcess | extract | readProfile | readSecStore | readXML | readProperties | configureJ2EE)*)>
<!ATTLIST when
  test CDATA #REQUIRED
>
<!ELEMENT otherwise ((if | choose | for-each | modifyFile | foo | copy | move | delete | createDirectory | fileAttributes | process | javaProcess | extract | readProfile | readSecStore | readXML | readProperties | configureJ2EE)*)>

<!ELEMENT for-each ((if | choose | for-each | modifyFile | foo | copy | move | delete | createDirectory | fileAttributes | process | javaProcess | extract | readProfile | readSecStore | readXML | readProperties | configureJ2EE)*)>
<!ATTLIST for-each
  variable CDATA #REQUIRED
  into CDATA #REQUIRED
  test CDATA #IMPLIED
>

<!ELEMENT foo EMPTY>

<!ELEMENT addBootstrapLibraries (description*, jarFile*)>
<!ATTLIST addBootstrapLibraries
  programName CDATA #REQUIRED>
<!ELEMENT jarFile EMPTY>
<!ATTLIST jarFile
  path CDATA #REQUIRED>
  
  
<!ELEMENT modifyFile (description*, (addProperty | setProperty | modifyProperty | deleteProperty | replaceInValue | if)*)>
<!ATTLIST modifyFile
  file CDATA #IMPLIED
  commentPattern CDATA #IMPLIED
  id CDATA #IMPLIED
>
<!ELEMENT addProperty (description?, (value | stringValue))>
<!ATTLIST addProperty
  target CDATA #REQUIRED
>
<!ELEMENT setProperty (description?, condition?, (value | stringValue))>
<!ATTLIST setProperty
  target CDATA #REQUIRED
>
<!ELEMENT modifyProperty (description?, condition?, (value | stringValue))>
<!ATTLIST modifyProperty
  target CDATA #REQUIRED
>
<!ELEMENT deleteProperty (description?, condition?, (value | stringValue)*)>
<!ATTLIST deleteProperty
  target CDATA #REQUIRED
>
<!ELEMENT replaceInValue (description?, condition?, (value | stringValue))>
<!ATTLIST replaceInValue
  regex CDATA #REQUIRED
>
<!ELEMENT condition (#PCDATA)>
<!ELEMENT value (#PCDATA)>
<!ELEMENT stringValue (#PCDATA)>

<!ELEMENT copy (description*, fileset*)>
<!ATTLIST copy
  fromFile CDATA #IMPLIED
  file CDATA #IMPLIED
  toFile CDATA #IMPLIED
  tofile CDATA #IMPLIED
  toDir CDATA #IMPLIED
  todir CDATA #IMPLIED
  overwrite CDATA "true"
  macroprocess CDATA "false"
  id CDATA #IMPLIED
  type CDATA #IMPLIED
>
<!ELEMENT move (description*, fileset*)>
<!ATTLIST move
  fromFile CDATA #IMPLIED
  file CDATA #IMPLIED
  toFile CDATA #IMPLIED
  tofile CDATA #IMPLIED
  toDir CDATA #IMPLIED
  todir CDATA #IMPLIED
  overwrite CDATA "true"
  macroprocess CDATA "false"
  id CDATA #IMPLIED
>
<!ELEMENT delete (description*, fileset*)>
<!ATTLIST delete
  file CDATA #IMPLIED
  dir CDATA #IMPLIED
  id CDATA #IMPLIED
  skipError CDATA #IMPLIED
>
<!ELEMENT createDirectory (description*)>
<!ATTLIST createDirectory
  name CDATA #IMPLIED
  id CDATA #IMPLIED
>
<!ELEMENT fileAttributes (description*, fileset*)>
<!ATTLIST fileAttributes
  file CDATA #IMPLIED
  readOnly CDATA #IMPLIED
  dateTime CDATA #IMPLIED
  id CDATA #IMPLIED
>
<!ELEMENT fileset ((include | exclude)*)>
<!ATTLIST fileset
  dir CDATA #REQUIRED
  includes CDATA #IMPLIED
  excludes CDATA #IMPLIED
  recursive CDATA "false"
  includeDirs CDATA "false"
>
<!ELEMENT include EMPTY>
<!ELEMENT exclude EMPTY>
<!ATTLIST include
  name CDATA #REQUIRED
>
<!ATTLIST exclude
  name CDATA #REQUIRED
>


<!ELEMENT process ((arg | checkRC | checkFile | additionalLogs)*)>
<!ATTLIST process
  executable CDATA #IMPLIED
  dir CDATA #IMPLIED
  stdout CDATA #IMPLIED
  stderr CDATA #IMPLIED
  libDir CDATA #IMPLIED
  id CDATA #IMPLIED
>
<!ELEMENT javaProcess ((arg | jvmArg | classPath | checkRC | checkFile | additionalLogs)*)>
<!ATTLIST javaProcess
  className CDATA #IMPLIED
  jar CDATA #IMPLIED
  dir CDATA #IMPLIED
  stdout CDATA #IMPLIED
  stderr CDATA #IMPLIED
  fork CDATA "true"
  classPath CDATA #IMPLIED
  id CDATA #IMPLIED
>
<!ELEMENT arg EMPTY>
<!ATTLIST arg
  value CDATA #REQUIRED
  type CDATA #IMPLIED
>
<!ELEMENT jvmArg EMPTY>
<!ATTLIST jvmArg
  value CDATA #REQUIRED
>
<!ELEMENT classPath (pathelement+)>
<!ELEMENT pathelement EMPTY>
<!ATTLIST pathelement
  location CDATA #REQUIRED
>
<!ELEMENT checkFile (match | message)+>
<!ATTLIST checkFile
  source CDATA #REQUIRED
  result CDATA #REQUIRED
>
<!ELEMENT checkRC (values | message)+>
<!ATTLIST checkRC
  result CDATA #REQUIRED
>
<!ELEMENT additionalLogs (log)+>
<!ELEMENT log EMPTY>
<!ATTLIST log
  file CDATA #REQUIRED
>
<!ELEMENT match (#PCDATA)>
<!ELEMENT values ((single | multi)+)>
<!ATTLIST values
  invert CDATA #IMPLIED
>
<!ELEMENT message (#PCDATA)>
<!ELEMENT single EMPTY>
<!ELEMENT multi EMPTY>
<!ATTLIST single
  value CDATA #REQUIRED
>
<!ATTLIST multi
  fromValue CDATA #REQUIRED
  toValue CDATA #REQUIRED
>

<!ELEMENT extract (description?)>
<!ATTLIST extract
  archive CDATA #REQUIRED
  target CDATA #REQUIRED
  id CDATA #IMPLIED
  type CDATA #IMPLIED
>

<!ELEMENT readProfile ((description | param | get)*)>
<!ATTLIST readProfile
  type CDATA #IMPLIED
  id CDATA #IMPLIED
>
<!ELEMENT readSecStore ((description | param | get)*)>
<!ATTLIST readSecStore
  type CDATA #IMPLIED
  id CDATA #IMPLIED
>
<!ELEMENT  readProperties ((description | param | get)*)>
<!ATTLIST readProfile
  id CDATA #IMPLIED
>
<!ELEMENT param EMPTY>
<!ATTLIST param
  name CDATA #IMPLIED
  value CDATA #IMPLIED
>
<!ELEMENT get EMPTY>
<!ATTLIST get
  path CDATA #REQUIRED
  varname CDATA #REQUIRED
  mandatory CDATA #IMPLIED
>

<!ELEMENT  readXML ((description | param | get)*)>
<!ATTLIST readProfile
  type CDATA #IMPLIED
  id CDATA #IMPLIED
>

<!ELEMENT  configureJ2EE ((getProp | setProp | getMode | setMode | getJVMParams | addJVMParams | setJVMParams | removeJVMParam | setVMVendor | OSName | OSUnicode | createInstance | closeConfigConnections|deleteConfig|lockPath|unlockPath|setUpgradeMode|addProperties)*)>
<!ATTLIST configureJ2EE
  instanceId CDATA #REQUIRED
  nodeType CDATA #IMPLIED
  componentType CDATA #IMPLIED
  componentName CDATA #IMPLIED
  rootCfg CDATA #IMPLIED
  release CDATA #REQUIRED
  id CDATA #IMPLIED
>

<!ELEMENT  getProp (#PCDATA)>
<!ATTLIST getProp
  targetType CDATA #REQUIRED
  varName CDATA #REQUIRED
>
<!ELEMENT  deleteConfig (#PCDATA)>
<!ATTLIST deleteConfig
  cfgPath CDATA #REQUIRED
>
<!ELEMENT  lockPath (#PCDATA)>
<!ATTLIST lockPath
  cfgPath CDATA #REQUIRED
>

<!ELEMENT  unlockPath (#PCDATA)>
<!ATTLIST unlockPath
  cfgPath CDATA #REQUIRED
>

<!ELEMENT  setUpgradeMode (#PCDATA)>
<!ATTLIST setUpgradeMode
  upgradeMode CDATA #REQUIRED
>

<!ELEMENT  addProperties ((setProp)*)>
<!ATTLIST addProperties 
  cfgPath CDATA #REQUIRED
>

<!ELEMENT  setProp (#PCDATA)>
<!ATTLIST setProp
  propName CDATA #REQUIRED
  sourceType CDATA #REQUIRED
>

<!ELEMENT  getMode EMPTY>
<!ATTLIST getMode
  targetType CDATA #REQUIRED
  varName CDATA #REQUIRED
>

<!ELEMENT  setMode EMPTY>
<!ATTLIST setMode
  mode CDATA #REQUIRED
  action CDATA #REQUIRED
>

<!ELEMENT  getJVMParams EMPTY>
<!ATTLIST getJVMParams
  targetType CDATA #REQUIRED
  varName CDATA #REQUIRED
>

<!ELEMENT  addJVMParams EMPTY>
<!ATTLIST addJVMParams
  prmName CDATA #REQUIRED
  prmValue CDATA #REQUIRED
  prmDescription CDATA #REQUIRED
  prmType CDATA #REQUIRED
>

<!ELEMENT  setJVMParams EMPTY>
<!ATTLIST setJVMParams
  prmName CDATA #REQUIRED
  prmValue CDATA #REQUIRED
  prmDescription CDATA #IMPLIED
  prmType CDATA #REQUIRED
>

<!ELEMENT  removeJVMParam EMPTY>
<!ATTLIST removeJVMParam
  prmName CDATA #REQUIRED
  prmType CDATA #REQUIRED
>

<!ELEMENT  setVMVendor EMPTY>
<!ATTLIST setVMVendor
  vmVendor CDATA #REQUIRED
>

<!ELEMENT  OSName EMPTY>
<!ATTLIST OSName
  targetType CDATA #REQUIRED
  varName CDATA #REQUIRED
>

<!ELEMENT  OSUnicode EMPTY>
<!ATTLIST OSUnicode
  targetType CDATA #REQUIRED
  varName CDATA #REQUIRED
>

<!ELEMENT  createInstance EMPTY>

<!ELEMENT  closeConfigConnections EMPTY>