summaryrefslogtreecommitdiffstats
path: root/xml/nvset-3.0.rng
diff options
context:
space:
mode:
Diffstat (limited to 'xml/nvset-3.0.rng')
-rw-r--r--xml/nvset-3.0.rng63
1 files changed, 63 insertions, 0 deletions
diff --git a/xml/nvset-3.0.rng b/xml/nvset-3.0.rng
new file mode 100644
index 0000000..7555dcb
--- /dev/null
+++ b/xml/nvset-3.0.rng
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- just as nvset-2.9.rng, but allows for instantiated @name restrictions -->
+<grammar xmlns="http://relaxng.org/ns/structure/1.0"
+ datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <start>
+ <ref name="element-nvset"/>
+ </start>
+
+ <!-- nvpair/@name:
+ * generic string by default, parent grammar may want to prohibit
+ enumerated names -->
+ <define name="element-nvset.name">
+ <attribute name="name">
+ <text/>
+ </attribute>
+ </define>
+
+ <!-- nvpair/@name:
+ * defer element-nvset.name grammar item
+ nvpair/@value:
+ generic string by default, parent grammar may want to restrict
+ enumerated pairs (i.e. related to @name) at once -->
+ <define name="element-nvset.name-value">
+ <ref name="element-nvset.name"/>
+ <optional>
+ <attribute name="value"><text/></attribute>
+ </optional>
+ </define>
+
+ <define name="element-nvset">
+ <choice>
+ <attribute name="id-ref"><data type="IDREF"/></attribute>
+ <group>
+ <attribute name="id"><data type="ID"/></attribute>
+ <interleave>
+ <optional>
+ <externalRef href="rule-2.9.rng"/>
+ </optional>
+ <zeroOrMore>
+ <element name="nvpair">
+ <choice>
+ <group>
+ <attribute name="id-ref"><data type="IDREF"/></attribute>
+ <optional>
+ <attribute name="name"><text/></attribute>
+ </optional>
+ </group>
+ <group>
+ <attribute name="id"><data type="ID"/></attribute>
+ <ref name="element-nvset.name-value"/>
+ </group>
+ </choice>
+ </element>
+ </zeroOrMore>
+ <optional>
+ <externalRef href="score.rng"/>
+ </optional>
+ </interleave>
+ </group>
+ </choice>
+ </define>
+
+</grammar>