diff options
Diffstat (limited to 'xml/nvset-3.0.rng')
-rw-r--r-- | xml/nvset-3.0.rng | 63 |
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> |