summaryrefslogtreecommitdiff
path: root/tex/context/base/mkiv/example.rng
diff options
context:
space:
mode:
Diffstat (limited to 'tex/context/base/mkiv/example.rng')
-rw-r--r--tex/context/base/mkiv/example.rng304
1 files changed, 304 insertions, 0 deletions
diff --git a/tex/context/base/mkiv/example.rng b/tex/context/base/mkiv/example.rng
new file mode 100644
index 000000000..09b80d14a
--- /dev/null
+++ b/tex/context/base/mkiv/example.rng
@@ -0,0 +1,304 @@
+<?xml version="1.0" ?>
+
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+
+ <start>
+ <choice>
+ <ref name="script"/>
+ <ref name="environment"/>
+ <ref name="sequence"/>
+ <ref name="request"/>
+ <ref name="reply"/>
+ </choice>
+ </start>
+
+ <define name="script">
+ <element name="script">
+ <zeroOrMore>
+ <ref name="script"/>
+ <ref name="environment"/>
+ <ref name="sequence"/>
+ <ref name="request"/>
+ <ref name="reply"/>
+ </zeroOrMore>
+ </element>
+ </define>
+
+ <define name="environment">
+ <element name="environment">
+ <zeroOrMore>
+ <ref name="environment.content"/>
+ </zeroOrMore>
+ </element>
+ </define>
+
+ <define name="environment.content">
+ <element name="variable">
+ <ref name="content"/>
+ <attribute name="label"/>
+ </element>
+ </define>
+
+ <define name="sequence">
+ <element name="sequence">
+ <zeroOrMore>
+ <ref name="sequence.process"/>
+ </zeroOrMore>
+ </element>
+ </define>
+
+ <define name="sequence.process">
+ <element name="process">
+ <interleave>
+ <optional>
+ <ref name="sequence.result"/>
+ </optional>
+ <ref name="sequence.command"/>
+ </interleave>
+ </element>
+ </define>
+
+ <define name="sequence.result">
+ <element name="result">
+ <ref name="content"/>
+ </element>
+ </define>
+
+ <define name="sequence.command">
+ <element name="command">
+ <ref name="content"/>
+ </element>
+ </define>
+
+ <define name="reply">
+ <element name="reply">
+ <interleave>
+ <optional>
+ <ref name="reply.result"/>
+ </optional>
+ <optional>
+ <ref name="status"/>
+ </optional>
+ <optional>
+ <ref name="comment"/>
+ </optional>
+ <optional>
+ <ref name="forwarded"/>
+ </optional>
+ </interleave>
+ </element>
+ </define>
+
+ <define name="reply.result">
+ <element name="result">
+ <text/>
+ </element>
+ </define>
+
+ <define name="request">
+ <element name="request">
+ <ref name="request.application"/>
+ <optional>
+ <ref name="request.client"/>
+ </optional>
+ <optional>
+ <ref name="request.server"/>
+ </optional>
+ <optional>
+ <ref name="request.data"/>
+ </optional>
+ <optional>
+ <zeroOrMore>
+ <ref name="request.blob"/>
+ </zeroOrMore>
+ </optional>
+ <optional>
+ <ref name="request.results"/>
+ </optional>
+ </element>
+ </define>
+
+ <define name="request.application">
+ <element name="application">
+ <choice>
+ <ref name="request.command"/>
+ <ref name="request.action"/>
+ </choice>
+ <ref name="request.content"/>
+ </element>
+ </define>
+
+ <define name="request.client">
+ <element name="client">
+ <ref name="request.content"/>
+ </element>
+ </define>
+
+ <define name="request.server">
+ <element name="server">
+ <ref name="request.content"/>
+ </element>
+ </define>
+
+ <define name="request.content">
+ <interleave>
+ <optional>
+ <ref name="filename"/>
+ </optional>
+ <optional>
+ <ref name="archive"/>
+ </optional>
+ <optional>
+ <ref name="comment"/>
+ </optional>
+ <optional>
+ <ref name="forwarded"/>
+ </optional>
+ <optional>
+ <ref name="domain"/>
+ </optional>
+ <optional>
+ <ref name="project"/>
+ </optional>
+ <optional>
+ <ref name="usertoken"/>
+ </optional>
+ </interleave>
+ </define>
+
+ <define name="request.command">
+ <element name="command">
+ <text/>
+ </element>
+ <optional>
+ <element name="option">
+ <text/>
+ </element>
+ </optional>
+ </define>
+
+ <define name="request.action">
+ <element name="action">
+ <text/>
+ </element>
+ </define>
+
+ <define name="request.data">
+ <element name="data">
+ <choice>
+ <zeroOrMore>
+ <ref name="data.variable"/>
+ </zeroOrMore>
+ <optional>
+ <ref name="filename"/>
+ </optional>
+ </choice>
+ </element>
+ </define>
+
+ <define name="request.results">
+ <element name="results">
+ <zeroOrMore>
+ <ref name="request.result"/>
+ </zeroOrMore>
+ </element>
+ </define>
+
+ <define name="data.result">
+ <element name="result">
+ <attribute name="status"/>
+ <attribute name="name"/>
+ </element>
+ </define>
+
+ <define name="request.blob">
+ <element name="blob">
+ <text/>
+ <attribute name="label"/>
+ </element>
+ </define>
+
+ <define name="data.variable">
+ <element name="variable">
+ <text/>
+ <attribute name="label"/>
+ </element>
+ </define>
+
+ <define name="content">
+ <zeroOrMore>
+ <mixed>
+ <ref name="resolve"/>
+ </mixed>
+ </zeroOrMore>
+ </define>
+
+ <define name="resolve">
+ <optional>
+ <element name="resolve">
+ <empty/>
+ <attribute name="label"/>
+ <optional>
+ <attribute name="type">
+ <choice>
+ <value>path</value>
+ <value>name</value>
+ <value>suffix</value>
+ <value>nopath</value>
+ <value>nosuffix</value>
+ </choice>
+ </attribute>
+ </optional>
+ </element>
+ </optional>
+ </define>
+
+ <define name="filename">
+ <element name="filename">
+ <text/>
+ </element>
+ </define>
+
+ <define name="archive">
+ <element name="archive">
+ <text/>
+ </element>
+ </define>
+
+ <define name="comment">
+ <element name="comment">
+ <text/>
+ </element>
+ </define>
+
+ <define name="status">
+ <element name="status">
+ <text/>
+ </element>
+ </define>
+
+ <define name="forwarded">
+ <element name="forwarded">
+ <text/>
+ </element>
+ </define>
+
+ <define name="domain">
+ <element name="domain">
+ <text/>
+ </element>
+ </define>
+
+ <define name="project">
+ <element name="project">
+ <text/>
+ </element>
+ </define>
+
+ <define name="usertoken">
+ <element name="usertoken">
+ <text/>
+ </element>
+ </define>
+
+</grammar>