<!ELEMENT action ( command | state )* > <!ATTLIST action tag CDATA #IMPLIED > <!ELEMENT alsocompletes ( env ) > <!ELEMENT anyposition EMPTY > <!ELEMENT argoption ( name, help?, value? ) > <!ATTLIST argoption use NMTOKEN #IMPLIED > <!ELEMENT argspec ( optspec, description? ) > <!ELEMENT argspecs ( argspec* ) > <!ELEMENT arguments ( argoption | help )* > <!ELEMENT code ( #PCDATA ) > <!ATTLIST code samecommand NMTOKEN #IMPLIED > <!ELEMENT command ( #PCDATA ) > <!ELEMENT completion ( meta, prolog, services, states, dispatch, subcommands ) > <!ATTLIST completion version NMTOKEN #REQUIRED > <!ELEMENT description ( message, action? ) > <!ELEMENT dispatch ( code )* > <!ELEMENT env ( #PCDATA ) > <!ELEMENT exclusionlist ( flag+ ) > <!ELEMENT explanation ( #PCDATA )* > <!ATTLIST explanation source CDATA #FIXED "" > <!ELEMENT filename ( #PCDATA ) > <!ELEMENT flag ( #PCDATA ) > <!ELEMENT flagarg ( explanation?, help? ) > <!ATTLIST flagarg name NMTOKEN #REQUIRED > <!ELEMENT help ( #PCDATA ) > <!ATTLIST help format ( preformattedtext | text ) #REQUIRED > <!ATTLIST help level NMTOKEN #IMPLIED > <!ATTLIST help name CDATA #IMPLIED > <!ATTLIST help source ( manpage | zsh ) #REQUIRED > <!ELEMENT message ( #PCDATA ) > <!ELEMENT message EMPTY > <!ELEMENT meta ( filename? | includes? ) > <!ELEMENT name ( #PCDATA ) > <!ELEMENT nextposition EMPTY > <!ELEMENT optspec ( anyposition | exclusionlist | flagarg | nextposition | position )* > <!ELEMENT position EMPTY > <!ATTLIST position position NMTOKEN #REQUIRED > <!ELEMENT prolog ( code ) > <!ELEMENT service ( alsocompletes | argspecs | arguments | code )* > <!ATTLIST service name NMTOKEN #IMPLIED > <!ELEMENT services ( service+ ) > <!ELEMENT state ( #PCDATA | code | name )* > <!ELEMENT states ( state+ ) > <!ELEMENT subcommand ( service, states ) > <!ATTLIST subcommand name NMTOKEN #REQUIRED > <!ELEMENT subcommands ( subcommand+ ) > <!ATTLIST subcommands prefix NMTOKEN #REQUIRED > <!ELEMENT value EMPTY >