summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/stex/schema/rng/openmath2.rng
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/source/latex/stex/schema/rng/openmath2.rng')
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rng/openmath2.rng253
1 files changed, 253 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/latex/stex/schema/rng/openmath2.rng b/Master/texmf-dist/source/latex/stex/schema/rng/openmath2.rng
new file mode 100644
index 00000000000..af2ccdb78da
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rng/openmath2.rng
@@ -0,0 +1,253 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ RELAX NG Schema for OpenMath 2
+ $Id: openmath2.rnc 8959 2011-09-02 06:01:43Z kohlhase $
+ $HeadURL: https://svn.omdoc.org/repos/omdoc/branches/omdoc-1.3/schema/rnc/openmath2.rnc $
+ See the documentation and examples at http://www.openmath.org
+-->
+<grammar ns="http://www.openmath.org/OpenMath" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <start>
+ <ref name="OMOBJ"/>
+ </start>
+ <!-- OpenMath object constructor -->
+ <define name="OMOBJ">
+ <element name="OMOBJ">
+ <ref name="compound.attributes"/>
+ <optional>
+ <attribute name="version">
+ <data type="string"/>
+ </attribute>
+ </optional>
+ <ref name="omel"/>
+ </element>
+ </define>
+ <!-- Elements which can appear inside an OpenMath object -->
+ <define name="omel">
+ <choice>
+ <ref name="OMS"/>
+ <ref name="OMV"/>
+ <ref name="OMI"/>
+ <ref name="OMB"/>
+ <ref name="OMSTR"/>
+ <ref name="OMF"/>
+ <ref name="OMA"/>
+ <ref name="OMBIND"/>
+ <ref name="OME"/>
+ <ref name="OMATTR"/>
+ <ref name="OMR"/>
+ </choice>
+ </define>
+ <!-- things which can be variables -->
+ <define name="omvar">
+ <choice>
+ <ref name="OMV"/>
+ <ref name="attvar"/>
+ </choice>
+ </define>
+ <define name="attvar">
+ <element name="OMATTR">
+ <ref name="common.attributes"/>
+ <group>
+ <ref name="OMATP"/>
+ <choice>
+ <ref name="OMV"/>
+ <ref name="attvar"/>
+ </choice>
+ </group>
+ </element>
+ </define>
+ <define name="cdbase">
+ <optional>
+ <attribute name="cdbase">
+ <data type="anyURI"/>
+ </attribute>
+ </optional>
+ </define>
+ <!-- attributes common to all elements -->
+ <define name="common.attributes">
+ <optional>
+ <attribute name="id">
+ <data type="ID"/>
+ </attribute>
+ </optional>
+ </define>
+ <!-- attributes common to all elements that construct compount OM objects. -->
+ <define name="compound.attributes">
+ <ref name="common.attributes"/>
+ <ref name="cdbase"/>
+ </define>
+ <!-- symbol -->
+ <define name="OMS">
+ <element name="OMS">
+ <ref name="common.attributes"/>
+ <attribute name="name">
+ <data type="NCName"/>
+ </attribute>
+ <attribute name="cd">
+ <data type="NCName"/>
+ </attribute>
+ <ref name="cdbase"/>
+ </element>
+ </define>
+ <!-- variable -->
+ <define name="OMV">
+ <element name="OMV">
+ <ref name="common.attributes"/>
+ <attribute name="name">
+ <data type="NCName"/>
+ </attribute>
+ </element>
+ </define>
+ <!-- integer -->
+ <define name="OMI">
+ <element name="OMI">
+ <ref name="common.attributes"/>
+ <data type="string">
+ <param name="pattern">\s*(-\s?)?[0-9]+(\s[0-9]+)*\s*</param>
+ </data>
+ </element>
+ </define>
+ <!-- byte array -->
+ <define name="OMB">
+ <element name="OMB">
+ <ref name="common.attributes"/>
+ <data type="base64Binary"/>
+ </element>
+ </define>
+ <!-- string -->
+ <define name="OMSTR">
+ <element name="OMSTR">
+ <ref name="common.attributes"/>
+ <text/>
+ </element>
+ </define>
+ <!-- IEEE floating point number -->
+ <define name="OMF">
+ <element name="OMF">
+ <ref name="common.attributes"/>
+ <choice>
+ <attribute name="dec">
+ <data type="double"/>
+ </attribute>
+ <attribute name="hex">
+ <data type="string">
+ <param name="pattern">[0-9A-F]+</param>
+ </data>
+ </attribute>
+ </choice>
+ </element>
+ </define>
+ <!-- apply constructor -->
+ <define name="OMA">
+ <element name="OMA">
+ <ref name="compound.attributes"/>
+ <oneOrMore>
+ <ref name="omel"/>
+ </oneOrMore>
+ </element>
+ </define>
+ <!-- binding constructor -->
+ <define name="OMBIND">
+ <element name="OMBIND">
+ <ref name="compound.attributes"/>
+ <ref name="omel"/>
+ <ref name="OMBVAR"/>
+ <ref name="omel"/>
+ </element>
+ </define>
+ <!-- variables used in binding constructor -->
+ <define name="OMBVAR">
+ <element name="OMBVAR">
+ <ref name="common.attributes"/>
+ <oneOrMore>
+ <ref name="omvar"/>
+ </oneOrMore>
+ </element>
+ </define>
+ <!-- error constructor -->
+ <define name="OME">
+ <element name="OME">
+ <ref name="common.attributes"/>
+ <ref name="OMS"/>
+ <zeroOrMore>
+ <choice>
+ <ref name="omel"/>
+ <ref name="OMFOREIGN"/>
+ </choice>
+ </zeroOrMore>
+ </element>
+ </define>
+ <!-- attribution constructor and attribute pair constructor -->
+ <define name="OMATTR">
+ <element name="OMATTR">
+ <ref name="compound.attributes"/>
+ <ref name="OMATP"/>
+ <ref name="omel"/>
+ </element>
+ </define>
+ <define name="OMATP">
+ <element name="OMATP">
+ <ref name="compound.attributes"/>
+ <oneOrMore>
+ <ref name="OMS"/>
+ <choice>
+ <ref name="omel"/>
+ <ref name="OMFOREIGN"/>
+ </choice>
+ </oneOrMore>
+ </element>
+ </define>
+ <!-- foreign constructor -->
+ <define name="OMFOREIGN">
+ <element name="OMFOREIGN">
+ <ref name="compound.attributes"/>
+ <optional>
+ <attribute name="encoding">
+ <data type="string"/>
+ </attribute>
+ </optional>
+ <zeroOrMore>
+ <choice>
+ <ref name="omel"/>
+ <ref name="notom"/>
+ </choice>
+ </zeroOrMore>
+ </element>
+ </define>
+ <!--
+ Any elements not in the om namespace
+ (valid om is allowed as a descendant)
+ -->
+ <define name="notom">
+ <choice>
+ <element>
+ <anyName>
+ <except>
+ <nsName/>
+ </except>
+ </anyName>
+ <zeroOrMore>
+ <attribute>
+ <anyName/>
+ </attribute>
+ </zeroOrMore>
+ <zeroOrMore>
+ <choice>
+ <ref name="omel"/>
+ <ref name="notom"/>
+ </choice>
+ </zeroOrMore>
+ </element>
+ <text/>
+ </choice>
+ </define>
+ <!-- reference constructor -->
+ <define name="OMR">
+ <element name="OMR">
+ <ref name="common.attributes"/>
+ <attribute name="href">
+ <data type="anyURI"/>
+ </attribute>
+ </element>
+ </define>
+</grammar>