<!--- Root element -->
<!ELEMENT tool (command, info, homepage, options)>

<!ATTLIST tool
    type (info|process) "info"
    name CDATA #REQUIRED>

<!--- Command for execution -->
<!ELEMENT command (#PCDATA)>
<!--- Short info descibing tool -->
<!ELEMENT info (#PCDATA)>
<!--- Link to homepage of the tool -->
<!ELEMENT homepage (#PCDATA)>
<!--- Switchers of the tool -->
<!ELEMENT options (group+)>
<!--- Group of switchers -->
<!ELEMENT group ((list|text|select|checkbox|file|pairs)*)>

<!ATTLIST group
    name CDATA #REQUIRED>

<!--- Switcher containing list of values separated by character
			set in 'separator' attribute -->
<!ELEMENT list (item*)>
<!ATTLIST list
    separator CDATA #REQUIRED
    default CDATA #IMPLIED
    fixed_length (true|false) "false"
    name CDATA #REQUIRED
    multi (true|false) "false"
    quotes (true|false) "false"
    required (true|false) "false"
    switcher CDATA #REQUIRED
    info CDATA #IMPLIED>
<!ELEMENT item (#PCDATA)>
<!ATTLIST item
	gr CDATA #IMPLIED>

<!--- Common text switcher -->
<!ELEMENT text EMPTY>
<!ATTLIST text
    default CDATA #IMPLIED
    name CDATA #REQUIRED
    multi (true|false) "false"
    quotes (true|false) "false"
	required (true|false) "false"
    switcher CDATA #REQUIRED
    info CDATA #IMPLIED>

<!--- Switcher, which can contain only predefined values -->
<!ELEMENT select (item+)>
<!ATTLIST select
    default CDATA #IMPLIED
    name CDATA #REQUIRED
    multi (true|false) "false"
    quotes (true|false) "false"
	required (true|false) "false"
    switcher CDATA #REQUIRED
    info CDATA #IMPLIED>

<!--- Boolean switcher -->
<!ELEMENT checkbox EMPTY>
<!ATTLIST checkbox
    default CDATA #IMPLIED
    name CDATA #REQUIRED
    multi (true|false) "false"
    quotes (true|false) "false"
	required (true|false) "false"
    switcher CDATA #REQUIRED
    info CDATA #IMPLIED>

<!--- File switcher -->
<!ELEMENT file EMPTY>
<!ATTLIST file
    name CDATA #REQUIRED
    multi (true|false) "false"
    quotes (true|false) "false"
	required (true|false) "false"
    switcher CDATA #REQUIRED
    info CDATA #IMPLIED>

<!--- Switchers containing values structured as key=value -->
<!ELEMENT pairs EMPTY>
<!ATTLIST pairs
    separator CDATA #REQUIRED
    name CDATA #REQUIRED
    multi (true|false) "false"
    quotes (true|false) "false"
	required (true|false) "false"
    switcher CDATA #REQUIRED
    info CDATA #IMPLIED
    default CDATA #IMPLIED>

