|  | <?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> |