<grammar xmlns="http://relaxng.org/ns/structure/1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:z="http://www.daisy.org/ns/z3998/annotations/#" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns:sch="http://purl.oclc.org/dsdl/schematron" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
<define name="xforms.Common.attrib">
<empty/>
</define>
<define name="xforms.Events.attrib">
<empty/>
</define>
<define name="xforms.Linking.attrib">
<empty/>
</define>
<define name="xforms.Single.Node.Binding.attrib">
<optional>
<attribute name="model">
<data type="IDREF"/>
</attribute>
</optional>
<optional>
<attribute name="ref">
<ref name="XPathExpression"/>
</attribute>
</optional>
<optional>
<attribute name="bind">
<data type="IDREF"/>
</attribute>
</optional>
</define>
<define name="xforms.Nodeset.Binding.attrib">
<optional>
<attribute name="model">
<data type="IDREF"/>
</attribute>
</optional>
<optional>
<attribute name="nodeset">
<ref name="XPathExpression"/>
</attribute>
</optional>
<optional>
<attribute name="bind">
<data type="IDREF"/>
</attribute>
</optional>
</define>
<define name="xforms.schema">
<element name="xs:schema">
<zeroOrMore>
<ref name="xforms.anyXSDElement"/>
</zeroOrMore>
</element>
</define>
<define name="xforms.model">
<element name="model">
<ref name="xforms.model.attrib"/>
<ref name="xforms.model.content"/>
</element>
</define>
<define name="xforms.model.attrib" combine="interleave">
<ref name="xforms.Common.attrib"/>
<ref name="xforms.Events.attrib"/>
<optional>
<attribute name="functions">
<list>
<oneOrMore>
<data type="QName"/>
</oneOrMore>
</list>
</attribute>
</optional>
<optional>
<attribute name="schema">
<list>
<oneOrMore>
<data type="anyURI"/>
</oneOrMore>
</list>
</attribute>
</optional>
<optional>
<attribute name="version">
<list>
<data type="string">
<param name="pattern">[1-9]\d*\.\d+</param>
</data>
</list>
</attribute>
</optional>
</define>
<define name="xforms.model.content">
<interleave>
<zeroOrMore>
<ref name="xforms.instance"/>
</zeroOrMore>
<zeroOrMore>
<ref name="xforms.schema"/>
</zeroOrMore>
<zeroOrMore>
<ref name="xforms.submission"/>
</zeroOrMore>
<zeroOrMore>
<ref name="xforms.bind"/>
</zeroOrMore>
<zeroOrMore>
<ref name="xforms.Actions"/>
</zeroOrMore>
</interleave>
</define>
<define name="xforms.instance">
<element name="instance">
<ref name="xforms.instance.attrib"/>
<ref name="xforms.instance.content"/>
</element>
</define>
<define name="xforms.instance.attrib" combine="interleave">
<ref name="xforms.Common.attrib"/>
<optional>
<ref name="xforms.Linking.attrib"/>
</optional>
<optional>
<attribute name="resource">
<data type="anyURI"/>
</attribute>
</optional>
</define>
<define name="xforms.instance.content">
<zeroOrMore>
<ref name="xforms.anyElement"/>
</zeroOrMore>
</define>
<define name="xforms.submission">
<element name="submission">
<ref name="xforms.submission.model"/>
</element>
</define>
<define name="xforms.submission.model" combine="interleave">
<ref name="xforms.Common.attrib"/>
<choice>
<attribute name="method">
<choice>
<ref name="QNameButNotNCName"/>
<value>post</value>
<value>put</value>
<value>get</value>
<value>delete</value>
<value>post</value>
<value>form-data-post</value>
<value>urlencoded-post</value>
</choice>
</attribute>
<element name="method">
<ref name="xforms.ValueTemplate"/>
</element>
</choice>
<choice>
<attribute name="action">
<data type="anyURI"/>
</attribute>
<attribute name="resource">
<data type="anyURI"/>
</attribute>
<element name="resource">
<optional>
<attribute name="value">
<ref name="XPathExpression"/>
</attribute>
</optional>
<ref name="xforms.ValueTemplate"/>
</element>
</choice>
<zeroOrMore>
<element name="header">
<interleave>
<element name="name">
<ref name="xforms.ValueTemplate"/>
</element>
<element name="value">
<ref name="xforms.ValueTemplate"/>
</element>
</interleave>
</element>
</zeroOrMore>
<optional>
<attribute name="bind">
<data type="IDREF"/>
</attribute>
</optional>
<optional>
<attribute name="ref">
<ref name="XPathExpression"/>
</attribute>
</optional>
<optional>
<attribute name="includenamespaceprefixes">
<list>
<choice>
<data type="NCName"/>
<value>#default</value>
</choice>
</list>
</attribute>
</optional>
<optional>
<attribute name="indent">
<data type="boolean"/>
</attribute>
</optional>
<optional>
<attribute name="encoding"/>
</optional>
<optional>
<attribute name="mode">
<choice>
<value>asynchronous</value>
<value>synchronous</value>
</choice>
</attribute>
</optional>
<optional>
<attribute name="omit-xml-declaration">
<data type="boolean"/>
</attribute>
</optional>
<optional>
<attribute name="mediatype"/>
</optional>
<optional>
<attribute name="standalone">
<data type="boolean"/>
</attribute>
</optional>
<optional>
<attribute name="cdata-section-elements">
<list>
<oneOrMore>
<data type="QName"/>
</oneOrMore>
</list>
</attribute>
</optional>
<optional>
<attribute name="replace">
<choice>
<ref name="QNameButNotNCName"/>
<value>all</value>
<value>instance</value>
<value>none</value>
</choice>
</attribute>
</optional>
<optional>
<attribute name="instance">
<data type="IDREF"/>
</attribute>
</optional>
<optional>
<attribute name="relevant">
<data type="boolean"/>
</attribute>
</optional>
<optional>
<attribute name="separator">
<choice>
<value>;</value>
<value>&</value>
</choice>
</attribute>
</optional>
<optional>
<attribute name="serialization">
<choice>
<value>application/xml</value>
<value>application/x-www-form-urlencoded</value>
<value>multipart/related</value>
<value>multipart/form-data</value>
<value>none</value>
</choice>
</attribute>
</optional>
<optional>
<attribute name="validate">
<data type="boolean"/>
</attribute>
</optional>
<optional>
<attribute name="version">
<data type="NMTOKEN"/>
</attribute>
</optional>
<optional>
<attribute name="targetref">
<ref name="XPathExpression"/>
</attribute>
</optional>
<ref name="xforms.Actions"/>
</define>
<define name="xforms.bind">
<element name="bind">
<ref name="xforms.bind.attrib"/>
<ref name="xforms.bind.content"/>
</element>
</define>
<define name="xforms.bind.attrib" combine="interleave">
<ref name="xforms.Common.attrib"/>
<optional>
<attribute name="nodeset">
<ref name="XPathExpression"/>
</attribute>
</optional>
<optional>
<attribute name="calculate">
<ref name="XPathExpression"/>
</attribute>
</optional>
<optional>
<attribute name="type">
<data type="QName"/>
</attribute>
</optional>
<optional>
<attribute name="required">
<ref name="XPathExpression"/>
</attribute>
</optional>
<optional>
<attribute name="constraint">
<ref name="XPathExpression"/>
</attribute>
</optional>
<optional>
<attribute name="relevant">
<ref name="XPathExpression"/>
</attribute>
</optional>
<optional>
<attribute name="readonly">
<ref name="XPathExpression"/>
</attribute>
</optional>
<optional>
<attribute name="p3ptype"/>
</optional>
</define>
<define name="xforms.bind.content">
<zeroOrMore>
<ref name="xforms.bind"/>
</zeroOrMore>
</define>
<define name="xforms.Core.Form.Controls">
<choice>
<ref name="xforms.input"/>
<ref name="xforms.textarea"/>
<ref name="xforms.secret"/>
<ref name="xforms.output"/>
<ref name="xforms.upload"/>
<ref name="xforms.select1"/>
<ref name="xforms.select"/>
<ref name="xforms.range"/>
<ref name="xforms.submit"/>
<ref name="xforms.trigger"/>
</choice>
</define>
<define name="UI.xforms.Common.attrib" combine="interleave">
<optional>
<attribute name="appearance">
<choice>
<data type="QName">
<param name="pattern">[^:]+:[^:]+</param>
</data>
<value>minimal</value>
<value>compact</value>
<value>full</value>
</choice>
</attribute>
</optional>
</define>
<define name="xforms.UI.Inline.class">
<choice>
<ref name="xforms.output"/>
</choice>
</define>
<define name="xforms.UI.Inline.content">
<interleave>
<text/>
<optional>
<ref name="xforms.UI.Inline.class"/>
</optional>
</interleave>
</define>
<define name="xforms.UI.Common.content">
<zeroOrMore>
<choice>
<ref name="xforms.help"/>
<ref name="xforms.hint"/>
<ref name="xforms.alert"/>
<ref name="xforms.Actions"/>
</choice>
</zeroOrMore>
</define>
<define name="xforms.List.UI.Common.content">
<oneOrMore>
<choice>
<ref name="xforms.item"/>
<ref name="xforms.itemset"/>
<ref name="xforms.choices"/>
</choice>
</oneOrMore>
</define>
<define name="xforms.label.content">
<ref name="xforms.UI.Inline.content"/>
</define>
<define name="xforms.label">
<element name="label">
<interleave>
<ref name="xforms.Common.attrib"/>
<choice>
<ref name="xforms.Linking.attrib"/>
<ref name="xforms.Single.Node.Binding.attrib"/>
<ref name="xforms.label.content"/>
</choice>
</interleave>
</element>
</define>
<define name="xforms.help">
<element name="help">
<ref name="xforms.help.attrib"/>
<ref name="xforms.help.content"/>
</element>
</define>
<define name="xforms.help.attrib" combine="interleave">
<ref name="xforms.Common.attrib"/>
<optional>
<ref name="xforms.Linking.attrib"/>
</optional>
<optional>
<ref name="xforms.Single.Node.Binding.attrib"/>
</optional>
</define>
<define name="xforms.help.content">
<ref name="xforms.UI.Inline.content"/>
</define>
<define name="xforms.hint">
<element name="hint">
<ref name="xforms.hint.attrib"/>
<ref name="xforms.hint.content"/>
</element>
</define>
<define name="xforms.hint.attrib" combine="interleave">
<ref name="xforms.Common.attrib"/>
<optional>
<ref name="xforms.Linking.attrib"/>
</optional>
<optional>
<ref name="xforms.Single.Node.Binding.attrib"/>
</optional>
</define>
<define name="xforms.hint.content">
<ref name="xforms.UI.Inline.content"/>
</define>
<define name="xforms.alert">
<element name="alert">
<ref name="xforms.alert.attrib"/>
<ref name="xforms.alert.content"/>
</element>
</define>
<define name="xforms.alert.attrib" combine="interleave">
<ref name="xforms.Common.attrib"/>
<optional>
<ref name="xforms.Linking.attrib"/>
</optional>
<optional>
<ref name="xforms.Single.Node.Binding.attrib"/>
</optional>
</define>
<define name="xforms.alert.content">
<ref name="xforms.UI.Inline.content"/>
</define>
<define name="xforms.choices">
<element name="choices">
<ref name="xforms.choices.attrib"/>
<ref name="xforms.choices.content"/>
</element>
</define>
<define name="xforms.choices.attrib" combine="interleave">
<ref name="xforms.Common.attrib"/>
</define>
<define name="xforms.choices.content">
<optional>
<ref name="xforms.label"/>
</optional>
<oneOrMore>
<choice>
<ref name="xforms.choices"/>
<ref name="xforms.item"/>
<ref name="xforms.itemset"/>
</choice>
</oneOrMore>
</define>
<define name="xforms.value">
<element name="value">
<ref name="xforms.value.attrib"/>
<ref name="xforms.value.content"/>
</element>
</define>
<define name="xforms.value.attrib" combine="interleave">
<ref name="xforms.Common.attrib"/>
<optional>
<ref name="xforms.Single.Node.Binding.attrib"/>
</optional>
</define>
<define name="xforms.value.content">
<text/>
</define>
<define name="xforms.item">
<element name="item">
<ref name="xforms.item.attrib"/>
<ref name="xforms.item.content"/>
</element>
</define>
<define name="xforms.item.attrib" combine="interleave">
<ref name="xforms.Common.attrib"/>
</define>
<define name="xforms.item.content">
<ref name="xforms.label"/>
<ref name="xforms.value"/>
<ref name="xforms.UI.Common.content"/>
</define>
<define name="xforms.itemset">
<element name="itemset">
<ref name="xforms.itemset.attrib"/>
<ref name="xforms.itemset.content"/>
</element>
</define>
<define name="xforms.itemset.attrib" combine="interleave">
<ref name="xforms.Common.attrib"/>
<ref name="xforms.Nodeset.Binding.attrib"/>
</define>
<define name="xforms.itemset.content">
<ref name="xforms.label"/>
<choice>
<ref name="xforms.value"/>
<ref name="xforms.copy"/>
</choice>
<ref name="xforms.UI.Common.content"/>
</define>
<define name="xforms.copy">
<element name="copy">
<ref name="xforms.copy.attrib"/>
<ref name="xforms.copy.content"/>
</element>
</define>
<define name="xforms.copy.attrib" combine="interleave">
<ref name="xforms.Common.attrib"/>
<ref name="xforms.Single.Node.Binding.attrib"/>
</define>
<define name="xforms.copy.content">
<empty/>
</define>
<define name="xforms.filename">
<element name="filename">
<ref name="xforms.filename.attrib"/>
<ref name="xforms.filename.content"/>
</element>
</define>
<define name="xforms.filename.attrib" combine="interleave">
<ref name="xforms.Common.attrib"/>
<ref name="xforms.Single.Node.Binding.attrib"/>
</define>
<define name="xforms.filename.content">
<empty/>
</define>
<define name="xforms.mediatype">
<element name="mediatype">
<ref name="xforms.mediatype.attrib"/>
<ref name="xforms.mediatype.content"/>
</element>
</define>
<define name="xforms.mediatype.attrib" combine="interleave">
<ref name="xforms.Common.attrib"/>
<ref name="xforms.Single.Node.Binding.attrib"/>
</define>
<define name="xforms.mediatype.content">
<empty/>
</define>
<define name="xforms.output">
<element name="output">
<ref name="xforms.output.attrib"/>
<ref name="xforms.output.content"/>
</element>
</define>
<define name="xforms.output.attrib" combine="interleave">
<ref name="xforms.Common.attrib"/>
<ref name="UI.xforms.Common.attrib"/>
<optional>
<ref name="xforms.Single.Node.Binding.attrib"/>
</optional>
<optional>
<attribute name="mediatype"/>
</optional>
<optional>
<attribute name="value">
<ref name="XPathExpression"/>
</attribute>
</optional>
</define>
<define name="xforms.output.content">
<optional>
<ref name="xforms.label"/>
</optional>
</define>
<define name="xforms.input">
<element name="input">
<ref name="xforms.input.attrib"/>
<ref name="xforms.input.content"/>
</element>
</define>
<define name="xforms.input.attrib" combine="interleave">
<ref name="xforms.Common.attrib"/>
<ref name="xforms.Single.Node.Binding.attrib"/>
<optional>
<attribute name="inputmode"/>
</optional>
<ref name="UI.xforms.Common.attrib"/>
<optional>
<attribute name="incremental">
<data type="boolean"/>
</attribute>
</optional>
</define>
<define name="xforms.input.content">
<ref name="xforms.label"/>
<ref name="xforms.UI.Common.content"/>
</define>
<define name="xforms.textarea">
<element name="textarea">
<ref name="xforms.textarea.attrib"/>
<ref name="xforms.textarea.content"/>
</element>
</define>
<define name="xforms.textarea.attrib" combine="interleave">
<ref name="xforms.Common.attrib"/>
<ref name="xforms.Single.Node.Binding.attrib"/>
<optional>
<attribute name="inputmode"/>
</optional>
<ref name="UI.xforms.Common.attrib"/>
<optional>
<attribute name="incremental">
<data type="boolean"/>
</attribute>
</optional>
</define>
<define name="xforms.textarea.content">
<ref name="xforms.label"/>
<ref name="xforms.UI.Common.content"/>
</define>
<define name="xforms.secret">
<element name="secret">
<ref name="xforms.secret.attrib"/>
<ref name="xforms.secret.content"/>
</element>
</define>
<define name="xforms.secret.attrib" combine="interleave">
<ref name="xforms.Common.attrib"/>
<ref name="xforms.Single.Node.Binding.attrib"/>
<optional>
<attribute name="inputmode"/>
</optional>
<ref name="UI.xforms.Common.attrib"/>
<optional>
<attribute name="incremental">
<data type="boolean"/>
</attribute>
</optional>
</define>
<define name="xforms.secret.content">
<ref name="xforms.label"/>
<ref name="xforms.UI.Common.content"/>
</define>
<define name="xforms.upload">
<element name="upload">
<ref name="xforms.upload.attrib"/>
<ref name="xforms.upload.content"/>
</element>
</define>
<define name="xforms.upload.attrib" combine="interleave">
<ref name="xforms.Common.attrib"/>
<ref name="xforms.Single.Node.Binding.attrib"/>
<optional>
<attribute name="mediatype"/>
</optional>
<ref name="UI.xforms.Common.attrib"/>
<optional>
<attribute name="incremental">
<data type="boolean"/>
</attribute>
</optional>
</define>
<define name="xforms.upload.content">
<ref name="xforms.label"/>
<optional>
<ref name="xforms.filename"/>
</optional>
<optional>
<ref name="xforms.mediatype"/>
</optional>
<ref name="xforms.UI.Common.content"/>
</define>
<define name="xforms.select1">
<element name="select1">
<ref name="xforms.select1.attrib"/>
<ref name="xforms.select1.content"/>
</element>
</define>
<define name="xforms.select1.attrib" combine="interleave">
<ref name="xforms.Common.attrib"/>
<ref name="xforms.Single.Node.Binding.attrib"/>
<ref name="UI.xforms.Common.attrib"/>
<optional>
<attribute name="selection">
<choice>
<value>open</value>
<value>closed</value>
</choice>
</attribute>
</optional>
<optional>
<attribute name="incremental">
<data type="boolean"/>
</attribute>
</optional>
</define>
<define name="xforms.select1.content">
<ref name="xforms.label"/>
<ref name="xforms.UI.Common.content"/>
<ref name="xforms.List.UI.Common.content"/>
</define>
<define name="xforms.select">
<element name="select">
<ref name="xforms.select.attrib"/>
<ref name="xforms.select.content"/>
</element>
</define>
<define name="xforms.select.attrib" combine="interleave">
<ref name="xforms.Common.attrib"/>
<ref name="xforms.Single.Node.Binding.attrib"/>
<ref name="UI.xforms.Common.attrib"/>
<optional>
<attribute name="selection">
<choice>
<value>open</value>
<value>closed</value>
</choice>
</attribute>
</optional>
<optional>
<attribute name="incremental">
<data type="boolean"/>
</attribute>
</optional>
</define>
<define name="xforms.select.content">
<ref name="xforms.label"/>
<ref name="xforms.UI.Common.content"/>
<ref name="xforms.List.UI.Common.content"/>
</define>
<define name="xforms.range">
<element name="range">
<ref name="xforms.range.attrib"/>
<ref name="xforms.range.content"/>
</element>
</define>
<define name="xforms.range.attrib" combine="interleave">
<ref name="xforms.Common.attrib"/>
<ref name="xforms.Single.Node.Binding.attrib"/>
<ref name="UI.xforms.Common.attrib"/>
<optional>
<attribute name="start"/>
</optional>
<optional>
<attribute name="end"/>
</optional>
<optional>
<attribute name="step"/>
</optional>
<optional>
<attribute name="incremental">
<data type="boolean"/>
</attribute>
</optional>
</define>
<define name="xforms.range.content">
<ref name="xforms.label"/>
<ref name="xforms.UI.Common.content"/>
</define>
<define name="xforms.trigger">
<element name="trigger">
<ref name="xforms.trigger.attrib"/>
<ref name="xforms.trigger.content"/>
</element>
</define>
<define name="xforms.trigger.attrib" combine="interleave">
<ref name="xforms.Common.attrib"/>
<optional>
<ref name="xforms.Single.Node.Binding.attrib"/>
</optional>
<optional>
<ref name="UI.xforms.Common.attrib"/>
</optional>
</define>
<define name="xforms.trigger.content">
<ref name="xforms.label"/>
<ref name="xforms.UI.Common.content"/>
</define>
<define name="xforms.submit">
<element name="submit">
<ref name="xforms.submit.attrib"/>
<ref name="xforms.submit.content"/>
</element>
</define>
<define name="xforms.submit.attrib" combine="interleave">
<ref name="xforms.Common.attrib"/>
<attribute name="submission">
<data type="IDREF"/>
</attribute>
<optional>
<ref name="xforms.Single.Node.Binding.attrib"/>
</optional>
<optional>
<ref name="UI.xforms.Common.attrib"/>
</optional>
</define>
<define name="xforms.submit.content">
<ref name="xforms.label"/>
<ref name="xforms.UI.Common.content"/>
</define>
<define name="xforms.action">
<element name="action">
<ref name="xforms.action.attrib"/>
<ref name="xforms.action.content"/>
</element>
</define>
<define name="xforms.action.attrib" combine="interleave">
<ref name="xforms.Common.attrib"/>
<ref name="xforms.actions.attrib"/>
</define>
<define name="xforms.action.content">
<ref name="xforms.Actions"/>
</define>
<define name="xforms.dispatch">
<element name="dispatch">
<ref name="xforms.dispatch.attrib"/>
<ref name="xforms.dispatch.content"/>
</element>
</define>
<define name="xforms.dispatch.attrib" combine="interleave">
<ref name="xforms.Common.attrib"/>
<ref name="xforms.Events.attrib"/>
<ref name="xforms.actions.attrib"/>
<choice>
<attribute name="name">
<ref name="xforms.ActionName"/>
</attribute>
<element name="name">
<ref name="xforms.ValueTemplate"/>
</element>
</choice>
<choice>
<attribute name="target">
<data type="IDREF"/>
</attribute>
<element name="target">
<ref name="xforms.ValueTemplate"/>
</element>
</choice>
<choice>
<attribute name="targetid">
<data type="IDREF"/>
</attribute>
<element name="targetid">
<ref name="xforms.ValueTemplate"/>
</element>
</choice>
<choice>
<attribute name="delay">
<data type="string"/>
</attribute>
<element name="delay">
<ref name="xforms.ValueTemplate"/>
</element>
</choice>
<optional>
<attribute name="bubbles">
<data type="boolean"/>
</attribute>
</optional>
<optional>
<attribute name="cancelable">
<data type="boolean"/>
</attribute>
</optional>
</define>
<define name="xforms.dispatch.content">
<empty/>
</define>
<define name="xforms.rebuild">
<element name="rebuild">
<ref name="xforms.rebuild.attrib"/>
<ref name="xforms.rebuild.content"/>
</element>
</define>
<define name="xforms.rebuild.attrib" combine="interleave">
<ref name="xforms.Common.attrib"/>
<optional>
<attribute name="model">
<data type="IDREF"/>
</attribute>
</optional>
<ref name="xforms.actions.attrib"/>
</define>
<define name="xforms.rebuild.content">
<empty/>
</define>
<define name="xforms.revalidate">
<element name="revalidate">
<ref name="xforms.revalidate.attrib"/>
<ref name="xforms.revalidate.content"/>
</element>
</define>
<define name="xforms.revalidate.attrib" combine="interleave">
<ref name="xforms.Common.attrib"/>
<optional>
<attribute name="model">
<data type="IDREF"/>
</attribute>
</optional>
<ref name="xforms.actions.attrib"/>
</define>
<define name="xforms.revalidate.content">
<empty/>
</define>
<define name="xforms.recalculate">
<element name="recalculate">
<ref name="xforms.recalculate.attrib"/>
<ref name="xforms.recalculate.content"/>
</element>
</define>
<define name="xforms.recalculate.attrib" combine="interleave">
<ref name="xforms.Common.attrib"/>
<optional>
<attribute name="model">
<data type="IDREF"/>
</attribute>
</optional>
<ref name="xforms.actions.attrib"/>
</define>
<define name="xforms.recalculate.content">
<empty/>
</define>
<define name="xforms.refresh">
<element name="refresh">
<ref name="xforms.refresh.attrib"/>
<ref name="xforms.refresh.content"/>
</element>
</define>
<define name="xforms.refresh.attrib" combine="interleave">
<ref name="xforms.Common.attrib"/>
<optional>
<attribute name="model">
<data type="IDREF"/>
</attribute>
</optional>
<ref name="xforms.actions.attrib"/>
</define>
<define name="xforms.refresh.content">
<empty/>
</define>
<define name="xforms.setfocus">
<element name="setfocus">
<ref name="xforms.setfocus.attrib"/>
<ref name="xforms.setfocus.content"/>
</element>
</define>
<define name="xforms.setfocus.attrib" combine="interleave">
<ref name="xforms.Common.attrib"/>
<choice>
<attribute name="control">
<data type="IDREF"/>
</attribute>
<element name="control">
<ref name="xforms.ValueTemplate"/>
</element>
</choice>
<ref name="xforms.actions.attrib"/>
</define>
<define name="xforms.setfocus.content">
<empty/>
</define>
<define name="xforms.load">
<element name="load">
<ref name="xforms.load.attrib"/>
<ref name="xforms.load.content"/>
</element>
</define>
<define name="xforms.load.attrib" combine="interleave">
<ref name="xforms.Common.attrib"/>
<choice>
<attribute name="resource">
<data type="anyURI"/>
</attribute>
<element name="resource">
<ref name="xforms.ValueTemplate"/>
</element>
</choice>
<optional>
<attribute name="show">
<choice>
<value>new</value>
<value>replace</value>
</choice>
</attribute>
</optional>
<ref name="xforms.Single.Node.Binding.attrib"/>
<ref name="xforms.actions.attrib"/>
</define>
<define name="xforms.load.content">
<empty/>
</define>
<define name="xforms.setvalue">
<element name="setvalue">
<ref name="xforms.setvalue.attrib"/>
<ref name="xforms.setvalue.content"/>
</element>
</define>
<define name="xforms.setvalue.attrib" combine="interleave">
<ref name="xforms.Common.attrib"/>
<optional>
<ref name="xforms.Single.Node.Binding.attrib"/>
</optional>
<optional>
<attribute name="value">
<ref name="XPathExpression"/>
</attribute>
</optional>
<ref name="xforms.actions.attrib"/>
</define>
<define name="xforms.setvalue.content">
<text/>
</define>
<define name="xforms.send">
<element name="send">
<ref name="xforms.send.attrib"/>
<ref name="xforms.send.content"/>
</element>
</define>
<define name="xforms.send.attrib" combine="interleave">
<ref name="xforms.Common.attrib"/>
<attribute name="submission">
<data type="IDREF"/>
</attribute>
<ref name="xforms.actions.attrib"/>
</define>
<define name="xforms.send.content">
<empty/>
</define>
<define name="xforms.reset">
<element name="reset">
<ref name="xforms.reset.attrib"/>
<ref name="xforms.reset.content"/>
</element>
</define>
<define name="xforms.reset.attrib" combine="interleave">
<ref name="xforms.Common.attrib"/>
<optional>
<attribute name="model">
<data type="IDREF"/>
</attribute>
</optional>
<ref name="xforms.actions.attrib"/>
</define>
<define name="xforms.reset.content">
<empty/>
</define>
<define name="xforms.insert">
<element name="insert">
<ref name="xforms.insert.attrib"/>
<ref name="xforms.insert.content"/>
</element>
</define>
<define name="xforms.insert.attrib" combine="interleave">
<ref name="xforms.Common.attrib"/>
<attribute name="at">
<ref name="XPathExpression"/>
</attribute>
<attribute name="position">
<choice>
<value>before</value>
<value>after</value>
</choice>
</attribute>
<optional>
<ref name="xforms.Nodeset.Binding.attrib"/>
</optional>
<ref name="xforms.actions.attrib"/>
</define>
<define name="xforms.insert.content">
<empty/>
</define>
<define name="xforms.delete">
<element name="delete">
<ref name="xforms.delete.attrib"/>
<ref name="xforms.delete.content"/>
</element>
</define>
<define name="xforms.delete.attrib" combine="interleave">
<ref name="xforms.Common.attrib"/>
<attribute name="at">
<ref name="XPathExpression"/>
</attribute>
<optional>
<ref name="xforms.Nodeset.Binding.attrib"/>
</optional>
<ref name="xforms.actions.attrib"/>
</define>
<define name="xforms.delete.content">
<empty/>
</define>
<define name="xforms.setindex">
<element name="setindex">
<ref name="xforms.setindex.attrib"/>
<ref name="xforms.setindex.content"/>
</element>
</define>
<define name="xforms.setindex.attrib" combine="interleave">
<ref name="xforms.Common.attrib"/>
<attribute name="repeat">
<data type="IDREF"/>
</attribute>
<attribute name="index">
<ref name="XPathExpression"/>
</attribute>
<ref name="xforms.actions.attrib"/>
</define>
<define name="xforms.setindex.content">
<empty/>
</define>
<define name="xforms.toggle">
<element name="toggle">
<ref name="xforms.toggle.attrib"/>
<ref name="xforms.toggle.content"/>
</element>
</define>
<define name="xforms.toggle.attrib" combine="interleave">
<ref name="xforms.Common.attrib"/>
<choice>
<attribute name="case">
<data type="IDREF"/>
</attribute>
<element name="case">
<ref name="xforms.ValueTemplate"/>
</element>
</choice>
<ref name="xforms.actions.attrib"/>
</define>
<define name="xforms.toggle.content">
<empty/>
</define>
<define name="xforms.message">
<element name="message">
<ref name="xforms.message.attrib"/>
<ref name="xforms.message.content"/>
</element>
</define>
<define name="xforms.message.attrib" combine="interleave">
<ref name="xforms.Common.attrib"/>
<attribute name="level">
<choice>
<value>ephemeral</value>
<value>modeless</value>
<value>modal</value>
</choice>
</attribute>
<optional>
<ref name="xforms.Linking.attrib"/>
</optional>
<optional>
<ref name="xforms.Single.Node.Binding.attrib"/>
</optional>
<ref name="xforms.actions.attrib"/>
</define>
<define name="xforms.message.content">
<ref name="xforms.UI.Inline.content"/>
</define>
<define name="xforms.Actions">
<zeroOrMore>
<choice>
<ref name="xforms.action"/>
<ref name="xforms.dispatch"/>
<ref name="xforms.rebuild"/>
<ref name="xforms.recalculate"/>
<ref name="xforms.refresh"/>
<ref name="xforms.setfocus"/>
<ref name="xforms.load"/>
<ref name="xforms.setvalue"/>
<ref name="xforms.send"/>
<ref name="xforms.reset"/>
<ref name="xforms.insert"/>
<ref name="xforms.delete"/>
<ref name="xforms.setindex"/>
<ref name="xforms.toggle"/>
<ref name="xforms.message"/>
</choice>
</zeroOrMore>
</define>
<define name="xforms.actions.attrib" combine="interleave">
<ref name="xforms.Events.attrib"/>
<optional>
<attribute name="if">
<ref name="xforms.ValueTemplate"/>
</attribute>
</optional>
<optional>
<attribute name="while">
<ref name="xforms.ValueTemplate"/>
</attribute>
</optional>
</define>
<define name="xforms.Container.Form.Controls">
<choice>
<ref name="xforms.group"/>
<ref name="xforms.repeat"/>
<ref name="xforms.switch"/>
</choice>
</define>
<define name="xforms.repeat">
<element name="repeat">
<ref name="xforms.repeat.attrib"/>
<ref name="xforms.repeat.content"/>
</element>
</define>
<define name="xforms.repeat.attrib" combine="interleave">
<ref name="xforms.Common.attrib"/>
<ref name="xforms.Nodeset.Binding.attrib"/>
<ref name="UI.xforms.Common.attrib"/>
<optional>
<attribute name="startindex">
<data type="positiveInteger"/>
</attribute>
</optional>
<optional>
<attribute name="number">
<data type="nonNegativeInteger"/>
</attribute>
</optional>
</define>
<define name="xforms.repeat.content">
<zeroOrMore>
<choice>
<ref name="xforms.Core.Form.Controls"/>
<ref name="xforms.Container.Form.Controls"/>
<ref name="xforms.UI.Inline.content"/>
</choice>
</zeroOrMore>
</define>
<define name="xforms.group">
<element name="group">
<ref name="xforms.group.attrib"/>
<ref name="xforms.group.content"/>
</element>
</define>
<define name="xforms.group.attrib" combine="interleave">
<ref name="xforms.Common.attrib"/>
<optional>
<ref name="xforms.Single.Node.Binding.attrib"/>
</optional>
<ref name="UI.xforms.Common.attrib"/>
</define>
<define name="xforms.group.content">
<optional>
<ref name="xforms.label"/>
</optional>
<zeroOrMore>
<choice>
<ref name="xforms.Core.Form.Controls"/>
<ref name="xforms.Container.Form.Controls"/>
<ref name="xforms.UI.Common.content"/>
<ref name="xforms.UI.Inline.content"/>
</choice>
</zeroOrMore>
</define>
<define name="xforms.switch">
<element name="switch">
<ref name="xforms.switch.attrib"/>
<ref name="xforms.switch.content"/>
</element>
</define>
<define name="xforms.switch.attrib" combine="interleave">
<ref name="xforms.Common.attrib"/>
<optional>
<ref name="xforms.Single.Node.Binding.attrib"/>
</optional>
<ref name="UI.xforms.Common.attrib"/>
</define>
<define name="xforms.switch.content">
<oneOrMore>
<ref name="xforms.switch.case"/>
</oneOrMore>
</define>
<define name="xforms.switch.case">
<element name="case">
<ref name="xforms.switch.case.attrib"/>
<ref name="xforms.switch.case.content"/>
</element>
</define>
<define name="xforms.switch.case.attrib" combine="interleave">
<ref name="xforms.Common.attrib"/>
<optional>
<attribute name="selected">
<data type="boolean"/>
</attribute>
</optional>
</define>
<define name="xforms.switch.case.content">
<optional>
<ref name="xforms.label"/>
</optional>
<zeroOrMore>
<choice>
<ref name="xforms.Core.Form.Controls"/>
<ref name="xforms.Container.Form.Controls"/>
<ref name="xforms.action"/>
<ref name="xforms.UI.Inline.content"/>
</choice>
</zeroOrMore>
</define>
<define name="QNameButNotNCName">
<data type="QName">
<param name="pattern">[^:]+:[^:]+</param>
</data>
</define>
<define name="XPathExpression">
<data type="string"/>
</define>
<define name="xforms.ValueTemplate">
<ref name="XPathExpression"/>
</define>
<define name="xforms.ActionName">
<choice>
<value>xforms-model-construct</value>
<value>xforms-model-construct-done</value>
<value>xforms-ready</value>
<value>xforms-model-destruct</value>
<value>xforms-rebuild</value>
<value>xforms-recalculate</value>
<value>xforms-revalidate</value>
<value>xforms-refresh</value>
<value>xforms-reset</value>
<value>xforms-previous</value>
<value>xforms-next</value>
<value>xforms-focus</value>
<value>xforms-help</value>
<value>xforms-hint</value>
<value>xforms-submit</value>
<value>xforms-submit-serialize</value>
<value>xforms-insert</value>
<value>xforms-delete</value>
<value>xforms-value-changed</value>
<value>xforms-valid</value>
<value>xforms-invalid</value>
<value>xforms-readonly</value>
<value>xforms-readwrite</value>
<value>xforms-required</value>
<value>xforms-optional</value>
<value>xforms-enabled</value>
<value>xforms-disabled</value>
<value>xforms-select</value>
<value>xforms-deselect</value>
<value>xforms-in-range</value>
<value>xforms-out-of-range</value>
<value>xforms-scroll-first</value>
<value>xforms-scroll-last</value>
<value>xforms-submit-done</value>
<value>xforms-binding-exception</value>
<value>xforms-compute-exception</value>
<value>xforms-link-error</value>
<value>xforms-link-exception</value>
<value>xforms-output-error</value>
<value>xforms-submit-error</value>
<value>xforms-version-exception</value>
<data type="NMTOKEN">
<except>
<data type="NMTOKEN">
<param name="pattern">^xforms-.*</param>
</data>
</except>
</data>
</choice>
</define>
<define name="xforms.anyElement">
<element>
<anyName/>
<zeroOrMore>
<choice>
<attribute>
<anyName/>
</attribute>
<text/>
<ref name="xforms.anyElement"/>
</choice>
</zeroOrMore>
</element>
</define>
<define name="xforms.anyXSDElement">
<element>
<nsName ns="http://www.w3.org/2001/XMLSchema"/>
<zeroOrMore>
<choice>
<attribute>
<anyName/>
</attribute>
<text/>
<ref name="xforms.anyXSDElement"/>
</choice>
</zeroOrMore>
</element>
</define>
</grammar>