<!ELEMENT wizard-schema ( title*, task-description*, description*, action*, lists?, steps?, form-schema+ ) >
<!ATTLIST wizard-schema id NMTOKEN #IMPLIED >

<!ELEMENT title ( #PCDATA ) >
<!ATTLIST title xml:lang NMTOKEN #IMPLIED >

<!-- task-description, backward compatible for older editwizards.
     will be dropped in future versions
  -->
<!ELEMENT task-description ( #PCDATA ) >

<!ELEMENT action ( field | object | relation  | prompt | description )* >
<!ATTLIST action type NMTOKEN #IMPLIED >
<!ATTLIST action include CDATA #IMPLIED >
<!ATTLIST action extends CDATA #IMPLIED >

<!ELEMENT lists ( optionlist* ) >
<!ATTLIST lists include CDATA #IMPLIED >
<!ATTLIST lists extends CDATA #IMPLIED >

<!ELEMENT steps ( step+ ) >

<!ELEMENT step EMPTY >
<!ATTLIST step form-schema NMTOKEN #REQUIRED >

<!ELEMENT optionlist ( option* | query ) >
<!ATTLIST optionlist name NMTOKEN #IMPLIED >
<!ATTLIST optionlist select NMTOKEN #IMPLIED >
<!ATTLIST optionlist optionid CDATA #IMPLIED >
<!ATTLIST optionlist optioncontent CDATA #IMPLIED >
<!ATTLIST optionlist include CDATA #IMPLIED >

<!ELEMENT option ( #PCDATA ) >
<!ATTLIST option id CDATA  #REQUIRED >

<!ELEMENT query EMPTY >
<!ATTLIST query xpath CDATA #REQUIRED >
<!ATTLIST query where CDATA #IMPLIED >
<!ATTLIST query orderby CDATA #IMPLIED >

<!ELEMENT form-schema ( title | subtitle | field | fieldset | list)* >
<!ATTLIST form-schema id NMTOKEN #IMPLIED >
<!ATTLIST form-schema include CDATA #IMPLIED >
<!ATTLIST form-schema extends CDATA #IMPLIED >

<!ELEMENT object ( field | relation )* >
<!ATTLIST object type NMTOKEN #IMPLIED >

<!ELEMENT relation ( field | object )* >
<!ATTLIST relation destination CDATA #IMPLIED >
<!ATTLIST relation destinationtype NMTOKEN #IMPLIED >
<!ATTLIST relation role NMTOKEN #IMPLIED >
<!ATTLIST relation searchdir (source | destination | both | all | either) #IMPLIED >
<!ATTLIST relation createdir (source | destination | either) #IMPLIED >

<!ELEMENT list ( title | description | action | command | item )* >
<!ATTLIST list maxoccurs CDATA #IMPLIED >
<!ATTLIST list minoccurs NMTOKEN #IMPLIED >
<!ATTLIST list extends CDATA #IMPLIED >
<!ATTLIST list fdatapath CDATA #IMPLIED >
<!ATTLIST list fparentdatapath CDATA #IMPLIED >
<!ATTLIST list destination NMTOKEN #IMPLIED >
<!ATTLIST list destinationtype NMTOKEN #IMPLIED >
<!ATTLIST list hidecommand CDATA #IMPLIED >
<!ATTLIST list orderby CDATA #IMPLIED >
<!ATTLIST list ordertype (number | string) #IMPLIED >
<!ATTLIST list role NMTOKEN #IMPLIED >
<!ATTLIST list include CDATA #IMPLIED >
<!ATTLIST list searchdir (source | destination | both | all | either) #IMPLIED >
<!ATTLIST list dtunless CDATA #IMPLIED >
<!ATTLIST list dtaction (hide | require) #IMPLIED >
<!ATTLIST list dthasvalues CDATA #IMPLIED >

<!ELEMENT item ( title | description | field | fieldset | list )* >
<!ATTLIST item displaytype NMTOKEN #IMPLIED >
<!ATTLIST item displaymode NMTOKEN #IMPLIED >

<!ELEMENT command ( prompt*, search-filter* ) >
<!ATTLIST command name NMTOKEN #REQUIRED >
<!ATTLIST command age NMTOKEN #IMPLIED >
<!ATTLIST command fields CDATA #IMPLIED >
<!ATTLIST command filterrequired NMTOKEN #IMPLIED >
<!ATTLIST command inline NMTOKEN #IMPLIED >
<!ATTLIST command nodepath CDATA #IMPLIED >
<!ATTLIST command objectnumber CDATA #IMPLIED >
<!ATTLIST command wizardname CDATA #IMPLIED >
<!ATTLIST command orderby CDATA #IMPLIED >
<!ATTLIST command directions CDATA #IMPLIED >
<!ATTLIST command command NMTOKEN #IMPLIED >
<!ATTLIST command startnodes CDATA #IMPLIED >
<!ATTLIST command constraints CDATA #IMPLIED >
<!ATTLIST command origin CDATA #IMPLIED >
<!ATTLIST command searchdir CDATA #IMPLIED >
<!ATTLIST command include CDATA #IMPLIED >

<!ELEMENT fieldset ( prompt*, field+, prompt* ) >

<!ELEMENT field ( #PCDATA | optionlist | prompt | description | prefix | postfix )* >
<!ATTLIST field dtpattern CDATA #IMPLIED >
<!ATTLIST field dtmax NMTOKEN #IMPLIED >
<!ATTLIST field dtmin NMTOKEN #IMPLIED >
<!ATTLIST field dtmaxlength NMTOKEN #IMPLIED >
<!ATTLIST field dtminlength NMTOKEN #IMPLIED >
<!ATTLIST field dtrequired NMTOKEN #IMPLIED >
<!ATTLIST field fdatapath CDATA #IMPLIED >
<!ATTLIST field dttype NMTOKEN #IMPLIED >
<!ATTLIST field ftype NMTOKEN #IMPLIED >
<!ATTLIST field size NMTOKEN #IMPLIED >
<!ATTLIST field name CDATA #IMPLIED >
<!ATTLIST field rows NMTOKEN #IMPLIED >
<!ATTLIST field inline NMTOKEN #IMPLIED >
<!ATTLIST field wizardname CDATA #IMPLIED >
<!ATTLIST field objectnumber CDATA #IMPLIED >
<!ATTLIST field hide CDATA #IMPLIED >
<!ATTLIST field wizard CDATA #IMPLIED >
<!ATTLIST field dynamic CDATA #IMPLIED >
<!ATTLIST field dtdepends CDATA #IMPLIED >
<!ATTLIST field dtaction (hide | require) #IMPLIED >
<!ATTLIST field dthasvalues CDATA #IMPLIED >
<!ATTLIST field dtunless CDATA #IMPLIED >

<!ELEMENT subtitle ( #PCDATA ) >
<!ATTLIST subtitle xml:lang NMTOKEN #IMPLIED >

<!ELEMENT prompt ( #PCDATA ) >
<!ATTLIST prompt xml:lang NMTOKEN #IMPLIED >

<!ELEMENT description ( #PCDATA ) >
<!ATTLIST description  xml:lang NMTOKEN #IMPLIED >

<!ELEMENT search-filter ( name+, search-fields, default? ) >

<!ELEMENT name ( #PCDATA ) >
<!ATTLIST name xml:lang NMTOKEN #IMPLIED >

<!ELEMENT default ( #PCDATA ) >

<!ELEMENT search-fields ( #PCDATA ) >
<!ATTLIST search-fields search-type ( like | equals | notequals | greaterthan | lessthan | notgreaterthan | notlessthan | string ) #IMPLIED >

<!ELEMENT prefix ( #PCDATA ) >

<!ELEMENT postfix ( #PCDATA ) >


