<!-- $Id: StateMachine.dtd,v 1.1 2002/12/29 21:07:19 eric Exp $ -->
<!ELEMENT rdf:RDF ( StateSet ) >
<!ATTLIST rdf:RDF xmlns CDATA #FIXED "http://www.w3.org/2002/12/26-XMLgrammer2RDFdb/StateMachine.xml"
		  xmlns:rdf CDATA #FIXED "http://www.w3.org/1999/02/22-rdf-syntax-ns#">

<!ELEMENT StateSet ( rdf:li+ ) >
<!ATTLIST StateSet rdf:about CDATA #REQUIRED >

<!ELEMENT rdf:li ( State | Tag | Binding ) >

<!ELEMENT State ( ( common | onTag )* ) >
<!ATTLIST State rdf:ID CDATA #REQUIRED >

<!ELEMENT common ( CommonSet ) >

<!ELEMENT CommonSet ( bind | start | attr | otherAttr | char )* >

<!ELEMENT start ( #PCDATA ) >

<!ELEMENT char ( #PCDATA ) >

<!ELEMENT onTag ( TagSet ) >

<!ELEMENT TagSet ( rdf:li+ ) >

<!ELEMENT Tag ( name, ( start | bind )* ) >

<!ELEMENT name EMPTY >
<!ATTLIST name rdf:resource CDATA #REQUIRED >

<!ELEMENT bind ( BindingSet ) >

<!ELEMENT BindingSet ( rdf:li+ ) >

<!ELEMENT Binding ( name, varString* ) >

<!ELEMENT varString ( #PCDATA ) >

<!ELEMENT attr ( AttrSet )* >

<!ELEMENT AttrSet ( attrLi+ ) >

<!ELEMENT attrLi ( Attr ) >

<!ELEMENT Attr ( name, action? ) >
<!ATTLIST Attr encoding ( literal | reference ) 'literal' >

<!ELEMENT action ( #PCDATA ) >

<!ELEMENT otherAttr ( DefaultAttr ) >

<!ELEMENT DefaultAttr ( action ) >
<!ATTLIST DefaultAttr encoding ( literal | reference ) 'literal' >
