<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>