| <?xml version="1.0" encoding="utf-8"?> |
| <grammar xmlns="http://relaxng.org/ns/structure/1.0" |
| datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes" |
| ns="http://www.tei-c.org/ns/1.0"> |
| |
| <!-- The FSR schema was ripped off of a TEI customization, described by the comments below, so it is in no way normative. |
| Piotr, 16-jan-2012 --> |
| |
| <!-- |
| Schema generated from ODD source 2012-01-16T11:55:34Z. |
| Edition: 2.0.0 Last updated on 16th December 2011. |
| Edition Location: http://www.tei-c.org/Vault/P5/2.0.0/ |
| |
| --><!--This template file is freely available and you are hereby |
| authorised to copy, modify, and redistribute it in any way without |
| further reference or permissions.When making such modifications, you are strongly recommended to |
| change the present text to include an accurate statement of the |
| licencing conditions applicable to your modified text.--> |
| |
| <define name="data.numeric"> |
| <choice> |
| <data type="double"/> |
| <data type="token"> |
| <param name="pattern">(\-?[\d]+/\-?[\d]+)</param> |
| </data> |
| <data type="decimal"/> |
| </choice> |
| </define> |
| <define name="data.truthValue"> |
| <data type="boolean"/> |
| </define> |
| <define name="data.language"> |
| <data type="language"/> |
| </define> |
| <define name="data.pointer"> |
| <data type="anyURI"/> |
| </define> |
| <define name="data.word"> |
| <data type="token"> |
| <param name="pattern">(\p{L}|\p{N}|\p{P}|\p{S})+</param> |
| </data> |
| </define> |
| <define name="data.name"> |
| <data type="Name"/> |
| </define> |
| <define name="data.enumerated"> |
| <ref name="data.name"/> |
| </define> |
| <define name="att.global.attributes"> |
| <ref name="att.global.attribute.xmlid"/> |
| <ref name="att.global.attribute.n"/> |
| <ref name="att.global.attribute.xmllang"/> |
| <ref name="att.global.attribute.rendition"/> |
| </define> |
| <define name="att.global.attribute.xmlid"> |
| <optional> |
| <attribute name="xml:id"> |
| <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(identifier) provides a unique identifier for the element bearing the attribute.</a:documentation> |
| <data type="ID"/> |
| </attribute> |
| </optional> |
| </define> |
| <define name="att.global.attribute.n"> |
| <optional> |
| <attribute name="n"> |
| <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(number) gives a number (or other label) for an element, which is not necessarily unique within |
| the document.</a:documentation> |
| <list> |
| <ref name="data.word"/> |
| <zeroOrMore> |
| <ref name="data.word"/> |
| </zeroOrMore> |
| </list> |
| </attribute> |
| </optional> |
| </define> |
| <define name="att.global.attribute.xmllang"> |
| <optional> |
| <attribute name="xml:lang"> |
| <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(language) indicates the language of the element content using a tag generated |
| according to BCP 47 |
| </a:documentation> |
| <ref name="data.language"/> |
| </attribute> |
| </optional> |
| </define> |
| <define name="att.global.attribute.rendition"> |
| <optional> |
| <attribute name="rendition"> |
| <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">points to a description of the rendering or presentation used for this element in the |
| source text.</a:documentation> |
| <list> |
| <ref name="data.pointer"/> |
| <zeroOrMore> |
| <ref name="data.pointer"/> |
| </zeroOrMore> |
| </list> |
| </attribute> |
| </optional> |
| </define> |
| |
| <define name="model.featureVal.complex"> |
| <choice> |
| <ref name="fs"/> |
| <ref name="vColl"/> |
| <ref name="vNot"/> |
| <ref name="vMerge"/> |
| </choice> |
| </define> |
| <define name="model.featureVal.complex_alternation"> |
| <choice> |
| <ref name="fs"/> |
| <ref name="vColl"/> |
| <ref name="vNot"/> |
| <ref name="vMerge"/> |
| </choice> |
| </define> |
| <define name="model.featureVal.complex_sequence"> |
| <ref name="fs"/> |
| <ref name="vColl"/> |
| <ref name="vNot"/> |
| <ref name="vMerge"/> |
| </define> |
| <define name="model.featureVal.complex_sequenceOptional"> |
| <optional> |
| <ref name="fs"/> |
| </optional> |
| <optional> |
| <ref name="vColl"/> |
| </optional> |
| <optional> |
| <ref name="vNot"/> |
| </optional> |
| <optional> |
| <ref name="vMerge"/> |
| </optional> |
| </define> |
| <define name="model.featureVal.complex_sequenceOptionalRepeatable"> |
| <zeroOrMore> |
| <ref name="fs"/> |
| </zeroOrMore> |
| <zeroOrMore> |
| <ref name="vColl"/> |
| </zeroOrMore> |
| <zeroOrMore> |
| <ref name="vNot"/> |
| </zeroOrMore> |
| <zeroOrMore> |
| <ref name="vMerge"/> |
| </zeroOrMore> |
| </define> |
| <define name="model.featureVal.complex_sequenceRepeatable"> |
| <oneOrMore> |
| <ref name="fs"/> |
| </oneOrMore> |
| <oneOrMore> |
| <ref name="vColl"/> |
| </oneOrMore> |
| <oneOrMore> |
| <ref name="vNot"/> |
| </oneOrMore> |
| <oneOrMore> |
| <ref name="vMerge"/> |
| </oneOrMore> |
| </define> |
| <define name="model.featureVal.single"> |
| <choice> |
| <ref name="binary"/> |
| <ref name="symbol"/> |
| <ref name="numeric"/> |
| <ref name="string"/> |
| <ref name="vLabel"/> |
| <ref name="default"/> |
| <ref name="vAlt"/> |
| </choice> |
| </define> |
| <define name="model.featureVal.single_alternation"> |
| <choice> |
| <ref name="binary"/> |
| <ref name="symbol"/> |
| <ref name="numeric"/> |
| <ref name="string"/> |
| <ref name="vLabel"/> |
| <ref name="default"/> |
| <ref name="vAlt"/> |
| </choice> |
| </define> |
| <define name="model.featureVal.single_sequence"> |
| <ref name="binary"/> |
| <ref name="symbol"/> |
| <ref name="numeric"/> |
| <ref name="string"/> |
| <ref name="vLabel"/> |
| <ref name="default"/> |
| <ref name="vAlt"/> |
| </define> |
| <define name="model.featureVal.single_sequenceOptional"> |
| <optional> |
| <ref name="binary"/> |
| </optional> |
| <optional> |
| <ref name="symbol"/> |
| </optional> |
| <optional> |
| <ref name="numeric"/> |
| </optional> |
| <optional> |
| <ref name="string"/> |
| </optional> |
| <optional> |
| <ref name="vLabel"/> |
| </optional> |
| <optional> |
| <ref name="default"/> |
| </optional> |
| <optional> |
| <ref name="vAlt"/> |
| </optional> |
| </define> |
| <define name="model.featureVal.single_sequenceOptionalRepeatable"> |
| <zeroOrMore> |
| <ref name="binary"/> |
| </zeroOrMore> |
| <zeroOrMore> |
| <ref name="symbol"/> |
| </zeroOrMore> |
| <zeroOrMore> |
| <ref name="numeric"/> |
| </zeroOrMore> |
| <zeroOrMore> |
| <ref name="string"/> |
| </zeroOrMore> |
| <zeroOrMore> |
| <ref name="vLabel"/> |
| </zeroOrMore> |
| <zeroOrMore> |
| <ref name="default"/> |
| </zeroOrMore> |
| <zeroOrMore> |
| <ref name="vAlt"/> |
| </zeroOrMore> |
| </define> |
| <define name="model.featureVal.single_sequenceRepeatable"> |
| <oneOrMore> |
| <ref name="binary"/> |
| </oneOrMore> |
| <oneOrMore> |
| <ref name="symbol"/> |
| </oneOrMore> |
| <oneOrMore> |
| <ref name="numeric"/> |
| </oneOrMore> |
| <oneOrMore> |
| <ref name="string"/> |
| </oneOrMore> |
| <oneOrMore> |
| <ref name="vLabel"/> |
| </oneOrMore> |
| <oneOrMore> |
| <ref name="default"/> |
| </oneOrMore> |
| <oneOrMore> |
| <ref name="vAlt"/> |
| </oneOrMore> |
| </define> |
| |
| |
| |
| |
| |
| |
| <define name="vRange"> |
| <element name="vRange"> |
| <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(value range) defines the range of allowed values for a feature, in the form of |
| an fs, vAlt, or primitive value; |
| for the value of an f to be valid, it must be |
| subsumed by the specified range; if the f |
| contains multiple values (as sanctioned by the org attribute), |
| then each value must be subsumed by the vRange. [18.11. ]</a:documentation> |
| <ref name="model.featureVal"/> |
| <ref name="att.global.attributes"/> |
| <empty/> |
| </element> |
| </define> |
| <define name="vDefault"> |
| <element name="vDefault"> |
| <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(value default) declares the default value to be supplied when a feature structure |
| does not contain an instance of f for this name; if |
| unconditional, it is specified as one (or, depending on the value of |
| the org attribute of the enclosing fDecl) more |
| fs elements or primitive values; |
| if conditional, it is specified as |
| one or more if elements; if no default is specified, or no |
| condition matches, the value none is assumed. [18.11. ]</a:documentation> |
| <choice> |
| <oneOrMore> |
| <ref name="model.featureVal"/> |
| </oneOrMore> |
| <oneOrMore> |
| <ref name="if"/> |
| </oneOrMore> |
| </choice> |
| <ref name="att.global.attributes"/> |
| <empty/> |
| </element> |
| </define> |
| <define name="if"> |
| <element name="if"> |
| <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">defines a conditional default value for a feature; the condition |
| is specified as a feature structure, and is met if it |
| subsumes the feature structure in the text for which a |
| default value is sought. [18.11. ]</a:documentation> |
| <group> |
| <choice> |
| <ref name="fs"/> |
| <ref name="f"/> |
| </choice> |
| <ref name="then"/> |
| <group> |
| <ref name="model.featureVal"/> |
| </group> |
| </group> |
| <ref name="att.global.attributes"/> |
| <empty/> |
| </element> |
| </define> |
| <define name="then"> |
| <element name="then"> |
| <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">separates the condition from the default in an if, or |
| the antecedent and the consequent in a cond element. [18.11. ]</a:documentation> |
| <empty/> |
| <ref name="att.global.attributes"/> |
| <empty/> |
| </element> |
| </define> |
| <define name="fsConstraints"> |
| <element name="fsConstraints"> |
| <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(feature-structure constraints) specifies constraints on the content of valid feature |
| structures. [18.11. ]</a:documentation> |
| <zeroOrMore> |
| <choice> |
| <ref name="cond"/> |
| <ref name="bicond"/> |
| </choice> |
| </zeroOrMore> |
| <ref name="att.global.attributes"/> |
| <empty/> |
| </element> |
| </define> |
| <define name="cond"> |
| <element name="cond"> |
| <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(conditional feature-structure constraint) defines a conditional feature-structure constraint; the consequent |
| and the antecedent are specified as feature structures or |
| feature-structure collections; the constraint is satisfied if both the |
| antecedent and the consequent subsume a given feature |
| structure, or if the antecedent does not. [18.11. ]</a:documentation> |
| <group> |
| <choice> |
| <ref name="fs"/> |
| <ref name="f"/> |
| </choice> |
| <ref name="then"/> |
| <choice> |
| <ref name="fs"/> |
| <ref name="f"/> |
| </choice> |
| </group> |
| <ref name="att.global.attributes"/> |
| <empty/> |
| </element> |
| </define> |
| <define name="bicond"> |
| <element name="bicond"> |
| <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(bi-conditional feature-structure constraint) defines a biconditional feature-structure constraint; both |
| consequent and antecedent are specified as feature structures or groups |
| of feature structures; the constraint is satisfied if both |
| subsume a given feature structure, or if both do not. [18.11. ]</a:documentation> |
| <group> |
| <choice> |
| <ref name="fs"/> |
| <ref name="f"/> |
| </choice> |
| <ref name="iff"/> |
| <choice> |
| <ref name="fs"/> |
| <ref name="f"/> |
| </choice> |
| </group> |
| <ref name="att.global.attributes"/> |
| <empty/> |
| </element> |
| </define> |
| <define name="iff"> |
| <element name="iff"> |
| <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(if and only if) separates the condition from the consequence in a bicond |
| element. [18.11. ]</a:documentation> |
| <empty/> |
| <ref name="att.global.attributes"/> |
| <empty/> |
| </element> |
| </define> |
| |
| |
| <define name="binary"> |
| <element name="binary"> |
| <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(binary value) represents the value part of a feature-value specification which can contain either |
| of exactly two possible values. [18.2. ]</a:documentation> |
| <empty/> |
| <ref name="att.global.attributes"/> |
| <attribute name="value"> |
| <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">supplies a binary value.</a:documentation> |
| <ref name="data.truthValue"/> |
| </attribute> |
| <empty/> |
| </element> |
| </define> |
| <define name="symbol"> |
| <element name="symbol"> |
| <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(symbolic value) represents the value part of a feature-value specification |
| which contains one of a finite list of symbols. [18.3. ]</a:documentation> |
| <empty/> |
| <ref name="att.global.attributes"/> |
| <attribute name="value"> |
| <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">supplies the symbolic value for the feature, one of a finite list that |
| may be specified in a feature declaration.</a:documentation> |
| <ref name="data.word"/> |
| </attribute> |
| <empty/> |
| </element> |
| </define> |
| <define name="numeric"> |
| <element name="numeric"> |
| <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(numeric value) represents the value part of a feature-value specification |
| which contains a numeric value or range. [18.3. ]</a:documentation> |
| <empty/> |
| <ref name="att.global.attributes"/> |
| <attribute name="value"> |
| <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">supplies a lower bound for the numeric value represented, |
| and also (if max is not supplied) its upper bound.</a:documentation> |
| <ref name="data.numeric"/> |
| </attribute> |
| <optional> |
| <attribute name="max"> |
| <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">supplies an upper bound for the numeric value represented.</a:documentation> |
| <ref name="data.numeric"/> |
| </attribute> |
| </optional> |
| <optional> |
| <attribute name="trunc"> |
| <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">specifies whether the value represented should be |
| truncated to give an integer value.</a:documentation> |
| <ref name="data.truthValue"/> |
| </attribute> |
| </optional> |
| <empty/> |
| </element> |
| </define> |
| <define name="string"> |
| <element name="string"> |
| <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(string value) represents the value part of a feature-value specification |
| which contains a string. [18.3. ]</a:documentation> |
| <text/> |
| <ref name="att.global.attributes"/> |
| <empty/> |
| </element> |
| </define> |
| <define name="vLabel"> |
| <element name="vLabel"> |
| <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(value label) represents the value part of a feature-value specification |
| which appears at more than one point in a feature structure.</a:documentation> |
| <optional> |
| <ref name="model.featureVal"/> |
| </optional> |
| <ref name="att.global.attributes"/> |
| <attribute name="name"> |
| <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">supplies a name for the sharing point.</a:documentation> |
| <ref name="data.word"/> |
| </attribute> |
| <empty/> |
| </element> |
| </define> |
| <define name="vColl"> |
| <element name="vColl"> |
| <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(collection of values) represents the value part of a feature-value specification |
| which contains multiple values organized as a set, bag, or list.</a:documentation> |
| <group> |
| <zeroOrMore> |
| <choice> |
| <ref name="fs"/> |
| <ref name="model.featureVal.single"/> |
| </choice> |
| </zeroOrMore> |
| </group> |
| <ref name="att.global.attributes"/> |
| <optional> |
| <attribute name="org"> |
| <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(organization) indicates organization of given value or values as set, bag or list.</a:documentation> |
| <choice> |
| <value>set</value> |
| <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">indicates that the given values are organized as a set. |
| </a:documentation> |
| <value>bag</value> |
| <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">indicates that the given values are organized as a |
| bag (multiset). |
| </a:documentation> |
| <value>list</value> |
| <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">indicates that the given values are organized as a |
| list.</a:documentation> |
| </choice> |
| </attribute> |
| </optional> |
| <empty/> |
| </element> |
| </define> |
| <define name="default"> |
| <element name="default"> |
| <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(default feature value) represents the value part of a feature-value specification |
| which contains a defaulted value. [18.9. ]</a:documentation> |
| <empty/> |
| <ref name="att.global.attributes"/> |
| <empty/> |
| </element> |
| </define> |
| <define name="vAlt"> |
| <element name="vAlt"> |
| <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(value alternation) represents the value part of a feature-value specification |
| which contains a set of values, only one of which can be valid. [18.8.1. ]</a:documentation> |
| <group> |
| <group> |
| <ref name="model.featureVal"/> |
| </group> |
| <oneOrMore> |
| <ref name="model.featureVal"/> |
| </oneOrMore> |
| </group> |
| <ref name="att.global.attributes"/> |
| <empty/> |
| </element> |
| </define> |
| <define name="vNot"> |
| <element name="vNot"> |
| <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(value negation) represents a feature value which is the negation of its content. [18.8.2. ]</a:documentation> |
| <group> |
| <ref name="model.featureVal"/> |
| </group> |
| <ref name="att.global.attributes"/> |
| <empty/> |
| </element> |
| </define> |
| <define name="vMerge"> |
| <element name="vMerge"> |
| <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(merged collection of values) represents a feature value which is the result of merging |
| together the feature values contained by its children, using the organization |
| specified by the org attribute. [18.8.3. ]</a:documentation> |
| <oneOrMore> |
| <ref name="model.featureVal"/> |
| </oneOrMore> |
| <ref name="att.global.attributes"/> |
| <optional> |
| <attribute name="org"> |
| <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">indicates the organization of the resulting merged values as set, bag or list.</a:documentation> |
| <choice> |
| <value>set</value> |
| <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">indicates that the resulting values are organized as a set.</a:documentation> |
| <value>bag</value> |
| <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">indicates that the resulting values are organized as a bag (multiset). |
| </a:documentation> |
| <value>list</value> |
| <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">indicates that the resulting values are organized as a list.</a:documentation> |
| </choice> |
| </attribute> |
| </optional> |
| <empty/> |
| </element> |
| </define> |
| |
| <define name="fs"> |
| <element name="fs"> |
| <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(feature structure) represents a feature structure, that is, a |
| collection of feature-value pairs organized as a |
| structural unit. [18.2. ]</a:documentation> |
| <zeroOrMore> |
| <ref name="f"/> |
| </zeroOrMore> |
| <ref name="att.global.attributes"/> |
| <optional> |
| <attribute name="type"> |
| <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">specifies the type of the feature structure.</a:documentation> |
| <ref name="data.enumerated"/> |
| </attribute> |
| </optional> |
| <optional> |
| <attribute name="feats"> |
| <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(features) references the feature-value specifications making up this feature structure.</a:documentation> |
| <list> |
| <ref name="data.pointer"/> |
| <zeroOrMore> |
| <ref name="data.pointer"/> |
| </zeroOrMore> |
| </list> |
| </attribute> |
| </optional> |
| </element> |
| </define> |
| <define name="f"> |
| <element name="f"> |
| <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(feature) represents a feature value specification, that |
| is, the association of a name with a value of any of several different types. [18.2. ]</a:documentation> |
| <zeroOrMore> |
| <choice> |
| <text/> |
| <ref name="model.featureVal"/> |
| </choice> |
| </zeroOrMore> |
| |
| <pattern xmlns="http://purl.oclc.org/dsdl/schematron" id="f-constraint-fValConstraints"> |
| <rule xmlns:rng="http://relaxng.org/ns/structure/1.0" context="tei:fVal"> |
| <assert test="not(tei:* and text)"> A feature value cannot |
| contain both text and element content</assert> |
| </rule> |
| </pattern> |
| <pattern xmlns="http://purl.oclc.org/dsdl/schematron" id="f-constraint-fValConstraints"> |
| <rule xmlns:rng="http://relaxng.org/ns/structure/1.0" context="tei:fVal"> |
| <report test="count(tei:*)>1"> A feature value can contain |
| only one child element</report> |
| </rule> |
| </pattern> |
| |
| <ref name="att.global.attributes"/> |
| <attribute name="name"> |
| <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">provides a name for the feature.</a:documentation> |
| <ref name="data.name"/> |
| </attribute> |
| <optional> |
| <attribute name="fVal"> |
| <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(feature value) references any element which can be used to represent the |
| value of a feature.</a:documentation> |
| <ref name="data.pointer"/> |
| </attribute> |
| </optional> |
| <empty/> |
| </element> |
| </define> |
| <define name="model.featureVal"> |
| <choice> |
| <ref name="model.featureVal.complex"/> |
| <ref name="model.featureVal.single"/> |
| </choice> |
| </define> |
| </grammar> |