default namespace = "http://www.example.org/cannot/really/use/XInclude"
namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
namespace local = ""
namespace ns1 = "http://www.w3.org/1999/xhtml"
namespace rng = "http://relaxng.org/ns/structure/1.0"
namespace sch = "http://purl.oclc.org/dsdl/schematron"
namespace tei = "http://www.tei-c.org/ns/1.0"
namespace teix = "http://www.tei-c.org/ns/Examples"
namespace xi = "http://www.w3.org/2001/XInclude"
namespace xlink = "http://www.w3.org/1999/xlink"

# Schema generated from ODD source 2021-02-25T15:12:02Z. .
# TEI Edition: Version 4.2.0. Last updated on
#	25th February 2021, revision 736c0acf0
# TEI Edition Location: https://www.tei-c.org/Vault/P5/Version 4.2.0/
#  a schema to help writing TEI customization ODDs; will (incorrectly) flag extensions as invalid 

# Copyright 2017 Syd Bauman and Northeastern WWP; some rights reserved. This TEI-encoded ODD file is available under the terms of the  OSI BSD 2-clause
# License , to wit: Redistribution and use in source and derived forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions, and the following disclaimer. Redistributions in binary or other derived form must reproduce the above copyright notice, this list of conditions, and the following disclaimer in the documentation or other materials provided with the distribution. Note, however, that although modification and redistribution of derivatives of this ODD (e.g., the schemas that result from processing with  Roma ) is legal, the resulting schema is (definitionally) not TEI-conformant. This software is provided by the copyright holders and contributors as is and any express or implied warranties, including, but not limited to, the implied warranties of merchantability and fitness for a particular purpose are disclaimed. In no event shall the copyright holder or contributors be liable for any direct, indirect, incidental, special, exemplary, or consequential damages (including, but not limited to, procurement of substitute goods or services; loss of use, data, or profits; or business interruption) however caused and on any theory of liability, whether in contract, strict liability, or tort (including negligence or otherwise) arising in any way out of the use of this software, even if advised of the possibility of such damage.
div {
  rng_extrapattern = rng_anyDoc?, rng_pattern, rng_anyDoc?
  rng_pattern =
    element rng:element {
      attribute name { xsd:QName },
      rng_extrapattern+,
      attribute ns { xsd:anyURI }?
    }
    | element rng:element {
        element rng:choice {
          attribute xml:base { xsd:anyURI }?,
          rng_nameClass+
        },
        attribute ns { xsd:anyURI }?,
        rng_extrapattern+
      }
    | element rng:element { rng_nameClass, rng_extrapattern+ }
    | element rng:attribute {
        attribute name { xsd:QName },
        attribute ns { xsd:anyURI }?,
        rng_anyAttDoc?,
        rng_extrapattern?
      }
    | element rng:attribute { rng_nameClass, rng_extrapattern? }
    | element rng:group { rng_extrapattern+ }
    | element rng:interleave { rng_extrapattern+ }
    | element rng:choice { rng_extrapattern+ }
    | element rng:optional { rng_extrapattern+ }
    | element rng:zeroOrMore { rng_extrapattern+ }
    | element rng:oneOrMore { rng_extrapattern+ }
    | element rng:list { rng_extrapattern+ }
    | element rng:mixed { rng_extrapattern+ }
    | element rng:ref {
        attribute name { xsd:NCName }
      }
    | element rng:parentRef {
        attribute name { xsd:NCName }
      }
    | element rng:empty { empty }
    | element rng:text { empty }
    | element rng:value {
        attribute type { xsd:NCName }?,
        xsd:string
      }
    | element rng:data {
        attribute type { xsd:NCName },
        rng_param*,
        rng_exceptExtrapattern?
      }
    | element rng:notAllowed { empty }
    | element rng:externalRef {
        attribute href { xsd:anyURI },
        empty
      }
    | element rng:grammar {
        attribute datatypeLibrary { xsd:anyURI }?,
        attribute ns { xsd:anyURI },
        rng_grammarContent*
      }
  rng_anyDoc =
    element a:* {
      attribute ns { xsd:anyURI }?,
      (rng_anyDoc | text)*
    }
  rng_anyAttDoc = attribute a:defaultValue { text }
  rng_param =
    element rng:param {
      attribute name { xsd:NCName },
      xsd:string
    }
  rng_exceptExtrapattern = element rng:except { rng_extrapattern+ }
  rng_grammarContent =
    rng_start
    | rng_define
    | element rng:div { rng_grammarContent* }
    | element rng:include {
        attribute href { xsd:anyURI },
        rng_includeContent*
      }
  rng_includeContent =
    rng_start
    | rng_define
    | element rng:div { rng_includeContent* }
  rng_start =
    element rng:start {
      attribute combine { rng_method }?,
      rng_extrapattern
    }
  rng_define =
    element rng:define {
      attribute name { xsd:NCName },
      attribute combine { rng_method }?,
      rng_extrapattern+
    }
  rng_method = "choice" | "interleave"
  rng_nameClass =
    element rng:name {
      xsd:QName,
      attribute ns { xsd:anyURI }?
    }
    | element rng:anyName { rng_exceptNameClass? }
    | element rng:nsName {
        attribute ns { xsd:anyURI }?,
        rng_exceptNameClass?
      }
    | element rng:choice { rng_nameClass+ }
  rng_exceptNameClass = element rng:except { rng_nameClass+ }
}
div {
  sch_schema =
    element sch:schema {
      attribute id { xsd:ID }?,
      sch_rich,
      attribute schemaVersion { sch_non-empty-string }?,
      attribute defaultPhase { xsd:IDREF }?,
      attribute queryBinding { sch_non-empty-string }?,
      (sch_foreign
       & sch_inclusion*
       & (sch_title?,
          sch_ns*,
          sch_p*,
          sch_let*,
          sch_phase*,
          sch_pattern+,
          sch_p*,
          sch_diagnostics?))
    }
  sch_active =
    element sch:active {
      attribute pattern { xsd:IDREF },
      (sch_foreign & (text | sch_dir | sch_emph | sch_span)*)
    }
  sch_assert =
    element sch:assert {
      attribute test { sch_exprValue },
      attribute flag { sch_flagValue }?,
      attribute id { xsd:ID }?,
      attribute diagnostics { xsd:IDREFS }?,
      sch_rich,
      sch_linkable,
      (sch_foreign
       & (text
          | sch_name
          | sch_value-of
          | sch_emph
          | sch_dir
          | sch_span)*)
    }
  sch_diagnostic =
    element sch:diagnostic {
      attribute id { xsd:ID },
      sch_rich,
      (sch_foreign
       & (text | sch_value-of | sch_emph | sch_dir | sch_span)*)
    }
  sch_diagnostics =
    element sch:diagnostics {
      sch_foreign & sch_inclusion* & sch_diagnostic*
    }
  sch_dir =
    element sch:dir {
      attribute value { "ltr" | "rtl" }?,
      (sch_foreign & text)
    }
  sch_emph = element sch:emph { text }
  sch_extends =
    element sch:extends {
      attribute rule { xsd:IDREF },
      sch_foreign-empty
    }
  sch_let =
    element sch:let {
      attribute name { sch_nameValue },
      attribute value { string }
    }
  sch_name =
    element sch:name {
      attribute path { sch_pathValue }?,
      sch_foreign-empty
    }
  sch_ns =
    element sch:ns {
      attribute uri { sch_uriValue },
      attribute prefix { sch_nameValue },
      sch_foreign-empty
    }
  sch_p =
    element sch:p {
      attribute id { xsd:ID }?,
      attribute class { sch_classValue }?,
      attribute icon { sch_uriValue }?,
      (sch_foreign & (text | sch_dir | sch_emph | sch_span)*)
    }
  sch_param =
    element sch:param {
      attribute name { sch_nameValue },
      attribute value { sch_non-empty-string }
    }
  sch_pattern =
    element sch:pattern {
      sch_rich,
      (sch_foreign
       & sch_inclusion*
       & ((attribute abstract { "true" },
           attribute id { xsd:ID },
           sch_title?,
           (sch_p*, sch_let*, sch_rule*))
          | (attribute abstract { "false" }?,
             attribute id { xsd:ID }?,
             sch_title?,
             (sch_p*, sch_let*, sch_rule*))
          | (attribute abstract { "false" }?,
             attribute is-a { xsd:IDREF },
             attribute id { xsd:ID }?,
             sch_title?,
             (sch_p*, sch_param*))))
    }
  sch_phase =
    element sch:phase {
      attribute id { xsd:ID },
      sch_rich,
      (sch_foreign & sch_inclusion* & (sch_p*, sch_let*, sch_active*))
    }
  sch_report =
    element sch:report {
      attribute test { sch_exprValue },
      attribute flag { sch_flagValue }?,
      attribute id { xsd:ID }?,
      attribute diagnostics { xsd:IDREFS }?,
      sch_rich,
      sch_linkable,
      (sch_foreign
       & (text
          | sch_name
          | sch_value-of
          | sch_emph
          | sch_dir
          | sch_span)*)
    }
  sch_rule =
    element sch:rule {
      attribute flag { sch_flagValue }?,
      sch_rich,
      sch_linkable,
      (sch_foreign
       & sch_inclusion*
       & ((attribute abstract { "true" },
           attribute id { xsd:ID },
           sch_let*,
           (sch_assert | sch_report | sch_extends)+)
          | (attribute context { sch_pathValue },
             attribute id { xsd:ID }?,
             attribute abstract { "false" }?,
             sch_let*,
             (sch_assert | sch_report | sch_extends)+)))
    }
  sch_span =
    element sch:span {
      attribute class { sch_classValue },
      (sch_foreign & text)
    }
  sch_title = element sch:title { (text | sch_dir)* }
  sch_value-of =
    element sch:value-of {
      attribute select { sch_pathValue },
      sch_foreign-empty
    }
  sch_inclusion =
    element sch:include {
      attribute href { sch_uriValue }
    }
  sch_rich =
    attribute icon { sch_uriValue }?,
    attribute see { sch_uriValue }?,
    attribute fpi { sch_fpiValue }?,
    attribute xml:lang { sch_langValue }?,
    attribute xml:space { "preserve" | "default" }?
  sch_linkable =
    attribute role { sch_roleValue }?,
    attribute subject { sch_pathValue }?
  sch_foreign = sch_foreign-attributes, sch_foreign-element*
  sch_foreign-empty = sch_foreign-attributes
  sch_foreign-attributes = attribute * - (local:* | xml:*) { text }*
  sch_foreign-element =
    element * - sch:* {
      (attribute * { text }
       | sch_foreign-element
       | sch_schema
       | text)*
    }
  sch_uriValue = xsd:anyURI
  sch_pathValue = string
  sch_exprValue = string
  sch_fpiValue = string
  sch_langValue = xsd:language
  sch_roleValue = string
  sch_flagValue = string
  sch_nameValue = string
  sch_classValue = string
  sch_non-empty-string = xsd:token { minLength = "1" }
}
cust_macro.paraContent =
  (text
   | cust_model.gLike
   | cust_model.phrase
   | cust_model.inter
   | cust_model.global
   | cust_model.lLike)*
cust_macro.limitedContent =
  (text | cust_model.limitedPhrase | cust_model.inter)*
cust_macro.phraseSeq =
  (text
   | cust_model.gLike
   | cust_model.attributable
   | cust_model.phrase
   | cust_model.global)*
cust_macro.phraseSeq.limited =
  (text | cust_model.limitedPhrase | cust_model.global)*
cust_macro.specialPara =
  (text
   | cust_model.gLike
   | cust_model.phrase
   | cust_model.inter
   | cust_model.divPart
   | cust_model.global)*
cust_macro.xtext = (text | cust_model.gLike)*
anyElement-xenoData =
  element * - (tei:* | teix:egXML) {
    attribute * { text }*,
    (text | anyElement-xenoData)*
  }
anyElement-egXML =
  element * - (tei:* | teix:egXML) {
    attribute * { text }*,
    (text | anyElement-egXML)*
  }
anyElement-content =
  element * - (tei:* | teix:egXML) {
    attribute * { text }*,
    (text | anyElement-content)*
  }
  >> sch:pattern [
       id = "d9e64325-constraint"
       "\x{a}" ~
       "         "
       sch:rule [
         context = "tei:content"
         "\x{a}" ~
         "            "
         sch:report [
           test =
             "descendant::*[not(namespace-uri(.) =               ('http://relaxng.org/ns/compatibility/annotations/1.0', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'http://relaxng.org/ns/structure/1.0', 'http://www.tei-c.org/ns/1.0'))]"
           "content descendants must be in the\x{a}" ~
           "              namespaces\x{a}" ~
           "              'http://relaxng.org/ns/compatibility/annotations/1.0', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'http://relaxng.org/ns/structure/1.0', 'http://www.tei-c.org/ns/1.0'"
         ]
         "\x{a}" ~
         "         "
       ]
       "\x{a}" ~
       "      "
     ]
anyElement-datatype =
  element * - (tei:* | teix:egXML) {
    attribute * { text }*,
    (text | anyElement-datatype)*
  }
  >> sch:pattern [
       id = "d9e65551-constraint"
       "\x{a}" ~
       "         "
       sch:rule [
         context = "tei:datatype"
         "\x{a}" ~
         "            "
         sch:report [
           test =
             "descendant::*[not(namespace-uri(.) =               ('http://relaxng.org/ns/structure/1.0', 'http://www.tei-c.org/ns/1.0'))]"
           "datatype descendants must be in the\x{a}" ~
           "              namespaces\x{a}" ~
           "              'http://relaxng.org/ns/structure/1.0', 'http://www.tei-c.org/ns/1.0'"
         ]
         "\x{a}" ~
         "         "
       ]
       "\x{a}" ~
       "      "
     ]
anyElement-fallback =
  element * - (tei:* | teix:egXML) {
    attribute * { text }*,
    (text | anyElement-fallback)*
  }
cust_att.anchoring.attributes =
  cust_att.anchoring.attribute.anchored,
  cust_att.anchoring.attribute.targetEnd
cust_att.anchoring.attribute.anchored =
  
  ## (anchored) indicates whether the copy text shows the exact place of reference for the note.
  [ a:defaultValue = "true" ] attribute anchored { xsd:boolean }?
cust_att.anchoring.attribute.targetEnd =
  
  ## (target end) points to the end of the span to which the note is attached, if the note is not embedded in the text at that point.
  attribute targetEnd {
    list { xsd:anyURI+ }
  }?
cust_att.ascribed.attributes = cust_att.ascribed.attribute.who
cust_att.ascribed.attribute.who =
  
  ## indicates the person, or group of people, to whom the element content is ascribed.
  attribute who {
    list { xsd:anyURI+ }
  }?
cust_att.ascribed.directed.attributes =
  cust_att.ascribed.attributes,
  cust_att.ascribed.directed.attribute.toWhom
cust_att.ascribed.directed.attribute.toWhom =
  
  ## indicates the person, or group of people, to whom a speech act or action is directed.
  attribute toWhom {
    list { xsd:anyURI+ }
  }?
cust_att.canonical.attributes =
  cust_att.canonical.attribute.key, cust_att.canonical.attribute.ref
cust_att.canonical.attribute.key =
  
  ## provides an externally-defined means of identifying the entity (or entities) being named, using a coded value of some kind.
  attribute key { xsd:string }?
cust_att.canonical.attribute.ref =
  
  ## (reference) provides an explicit means of locating a full definition or identity for the entity being named by means of one or more URIs.
  attribute ref {
    list { xsd:anyURI+ }
  }?
cust_att.ranging.attributes =
  cust_att.ranging.attribute.atLeast,
  cust_att.ranging.attribute.atMost,
  cust_att.ranging.attribute.min,
  cust_att.ranging.attribute.max,
  cust_att.ranging.attribute.confidence
cust_att.ranging.attribute.atLeast =
  
  ## gives a minimum estimated value for the approximate measurement.
  attribute atLeast {
    xsd:double
    | xsd:token { pattern = "(\-?[\d]+/\-?[\d]+)" }
    | xsd:decimal
  }?
cust_att.ranging.attribute.atMost =
  
  ## gives a maximum estimated value for the approximate measurement.
  attribute atMost {
    xsd:double
    | xsd:token { pattern = "(\-?[\d]+/\-?[\d]+)" }
    | xsd:decimal
  }?
cust_att.ranging.attribute.min =
  
  ## where the measurement summarizes more than one observation or a range, supplies the minimum value observed.
  attribute min {
    xsd:double
    | xsd:token { pattern = "(\-?[\d]+/\-?[\d]+)" }
    | xsd:decimal
  }?
cust_att.ranging.attribute.max =
  
  ## where the measurement summarizes more than one observation or a range, supplies the maximum value observed.
  attribute max {
    xsd:double
    | xsd:token { pattern = "(\-?[\d]+/\-?[\d]+)" }
    | xsd:decimal
  }?
cust_att.ranging.attribute.confidence =
  [
    a:documentation [
      "specifies the degree of statistical confidence (between zero and one) that a value falls within the range specified by "
      ns1:code [ "@min" ]
      " and "
      ns1:code [ "@max" ]
      ", or the proportion of observed values that fall within that range."
    ]
  ]
  attribute confidence { xsd:double }?
cust_att.dimensions.attributes =
  cust_att.ranging.attributes,
  cust_att.dimensions.attribute.unit,
  cust_att.dimensions.attribute.quantity,
  cust_att.dimensions.attribute.extent,
  cust_att.dimensions.attribute.precision,
  cust_att.dimensions.attribute.scope
cust_att.dimensions.attribute.unit =
  
  ## names the unit used for the measurement
  ## Suggested values include: 1] cm (centimetres); 2] mm (millimetres); 3] in (inches); 4] line; 5] char (characters)
  attribute unit {
    
    ## (centimetres) 
    "cm"
    | 
      ## (millimetres) 
      "mm"
    | 
      ## (inches) 
      "in"
    | 
      ## lines of text
      "line"
    | 
      ## (characters) characters of text
      "char"
    | xsd:token { pattern = "[^\p{C}\p{Z}]+" }
  }?
cust_att.dimensions.attribute.quantity =
  
  ## specifies the length in the units specified
  attribute quantity {
    xsd:double
    | xsd:token { pattern = "(\-?[\d]+/\-?[\d]+)" }
    | xsd:decimal
  }?
cust_att.dimensions.attribute.extent =
  
  ## indicates the size of the object concerned using a project-specific vocabulary combining quantity and units in a single string of words.
  attribute extent { xsd:string }?
cust_att.dimensions.attribute.precision =
  
  ## characterizes the precision of the values specified by the other attributes.
  attribute precision {
    
    ##
    "high"
    | 
      ##
      "medium"
    | 
      ##
      "low"
    | 
      ##
      "unknown"
  }?
cust_att.dimensions.attribute.scope =
  
  ## where the measurement summarizes more than one observation, specifies the applicability of this measurement.
  ## Sample values include: 1] all; 2] most; 3] range
  attribute scope {
    xsd:token { pattern = "[^\p{C}\p{Z}]+" }
  }?
cust_att.written.attributes = cust_att.written.attribute.hand
cust_att.written.attribute.hand =
  [
    a:documentation [
      "points to a "
      ns1:code [ "<handNote>" ]
      " element describing the hand considered responsible for the content of the element concerned."
    ]
  ]
  attribute hand { xsd:anyURI }?
cust_att.cReferencing.attributes = cust_att.cReferencing.attribute.cRef
cust_att.cReferencing.attribute.cRef =
  [
    a:documentation [
      "(canonical reference) specifies the destination of the pointer by supplying a canonical reference expressed using the scheme defined in a "
      ns1:code [ "<refsDecl>" ]
      " element in the TEI header"
    ]
  ]
  attribute cRef { xsd:string }?
cust_att.datable.w3c.attributes =
  cust_att.datable.w3c.attribute.when,
  cust_att.datable.w3c.attribute.notBefore,
  cust_att.datable.w3c.attribute.notAfter,
  cust_att.datable.w3c.attribute.from,
  cust_att.datable.w3c.attribute.to
cust_att.datable.w3c.attribute.when =
  
  ## supplies the value of the date or time in a standard form, e.g. yyyy-mm-dd.
  attribute when {
    xsd:date
    | xsd:gYear
    | xsd:gMonth
    | xsd:gDay
    | xsd:gYearMonth
    | xsd:gMonthDay
    | xsd:time
    | xsd:dateTime
  }?
cust_att.datable.w3c.attribute.notBefore =
  
  ## specifies the earliest possible date for the event in standard form, e.g. yyyy-mm-dd.
  attribute notBefore {
    xsd:date
    | xsd:gYear
    | xsd:gMonth
    | xsd:gDay
    | xsd:gYearMonth
    | xsd:gMonthDay
    | xsd:time
    | xsd:dateTime
  }?
cust_att.datable.w3c.attribute.notAfter =
  
  ## specifies the latest possible date for the event in standard form, e.g. yyyy-mm-dd.
  attribute notAfter {
    xsd:date
    | xsd:gYear
    | xsd:gMonth
    | xsd:gDay
    | xsd:gYearMonth
    | xsd:gMonthDay
    | xsd:time
    | xsd:dateTime
  }?
cust_att.datable.w3c.attribute.from =
  
  ## indicates the starting point of the period in standard form, e.g. yyyy-mm-dd.
  attribute from {
    xsd:date
    | xsd:gYear
    | xsd:gMonth
    | xsd:gDay
    | xsd:gYearMonth
    | xsd:gMonthDay
    | xsd:time
    | xsd:dateTime
  }?
cust_att.datable.w3c.attribute.to =
  
  ## indicates the ending point of the period in standard form, e.g. yyyy-mm-dd.
  attribute to {
    xsd:date
    | xsd:gYear
    | xsd:gMonth
    | xsd:gDay
    | xsd:gYearMonth
    | xsd:gMonthDay
    | xsd:time
    | xsd:dateTime
  }?
sch:pattern [
  id =
    "tei_customization-att.datable.w3c-att-datable-w3c-when-constraint-rule-1"
  "\x{a}" ~
  "      "
  sch:rule [
    context = "tei:*[@when]"
    "\x{a}" ~
    "        "
    sch:report [
      test = "@notBefore|@notAfter|@from|@to"
      role = "nonfatal"
      "The @when attribute cannot be used with any other att.datable.w3c attributes."
    ]
    "\x{a}" ~
    "      "
  ]
  "\x{a}" ~
  "   "
]
sch:pattern [
  id =
    "tei_customization-att.datable.w3c-att-datable-w3c-from-constraint-rule-2"
  "\x{a}" ~
  "      "
  sch:rule [
    context = "tei:*[@from]"
    "\x{a}" ~
    "        "
    sch:report [
      test = "@notBefore"
      role = "nonfatal"
      "The @from and @notBefore attributes cannot be used together."
    ]
    "\x{a}" ~
    "      "
  ]
  "\x{a}" ~
  "   "
]
sch:pattern [
  id =
    "tei_customization-att.datable.w3c-att-datable-w3c-to-constraint-rule-3"
  "\x{a}" ~
  "      "
  sch:rule [
    context = "tei:*[@to]"
    "\x{a}" ~
    "        "
    sch:report [
      test = "@notAfter"
      role = "nonfatal"
      "The @to and @notAfter attributes cannot be used together."
    ]
    "\x{a}" ~
    "      "
  ]
  "\x{a}" ~
  "   "
]
cust_att.datable.attributes =
  cust_att.datable.w3c.attributes,
  cust_att.datable.iso.attributes,
  cust_att.datable.custom.attributes,
  cust_att.datable.attribute.calendar,
  cust_att.datable.attribute.period
cust_att.datable.attribute.calendar =
  
  ## indicates the system or calendar to which the date represented by the content of this element belongs.
  attribute calendar { xsd:anyURI }?
sch:pattern [
  id =
    "tei_customization-att.datable-calendar-calendar-constraint-rule-4"
  "\x{a}" ~
  "      "
  sch:rule [
    context = "tei:*[@calendar]"
    "\x{a}" ~
    "            "
    sch:assert [
      test = "string-length(.) gt 0"
      " @calendar indicates the system or calendar to\x{a}" ~
      "              which the date represented by the content of this element belongs, but this\x{a}" ~
      "              "
      sch:name [ ]
      " element has no textual content."
    ]
    "\x{a}" ~
    "          "
  ]
  "\x{a}" ~
  "   "
]
cust_att.datable.attribute.period =
  
  ## supplies a pointer to some location defining a named period of time within which the datable item is understood to have occurred.
  attribute period { xsd:anyURI }?
cust_att.declarable.attributes = cust_att.declarable.attribute.default
cust_att.declarable.attribute.default =
  
  ## indicates whether or not this element is selected by default when its parent is selected.
  [ a:defaultValue = "false" ]
  attribute default {
    
    ## This element is selected if its parent is selected
    "true"
    | 
      ## This element can only be selected explicitly, unless it is the only one of its kind, in which case it is selected if its parent is selected.
      "false"
  }?
cust_att.declaring.attributes = cust_att.declaring.attribute.decls
cust_att.declaring.attribute.decls =
  
  ## identifies one or more declarable elements within the header, which are understood to apply to the element bearing this attribute and its content.
  attribute decls {
    list { xsd:anyURI+ }
  }?
cust_att.fragmentable.attributes = cust_att.fragmentable.attribute.part
cust_att.fragmentable.attribute.part =
  
  ## specifies whether or not its parent element is fragmented in some way, typically by some other overlapping structure: for example a speech which is divided between two or more verse stanzas, a paragraph which is split across a page division, a verse line which is divided between two speakers.
  [ a:defaultValue = "N" ]
  attribute part {
    
    ## (yes) the element is fragmented in some (unspecified) respect
    "Y"
    | 
      ## (no) the element is not fragmented, or no claim is made as to its completeness
      "N"
    | 
      ## (initial) this is the initial part of a fragmented element
      "I"
    | 
      ## (medial) this is a medial part of a fragmented element
      "M"
    | 
      ## (final) this is the final part of a fragmented element
      "F"
  }?
cust_att.divLike.attributes =
  cust_att.fragmentable.attributes,
  cust_att.divLike.attribute.org,
  cust_att.divLike.attribute.sample
cust_att.divLike.attribute.org =
  
  ## (organization) specifies how the content of the division is organized.
  [ a:defaultValue = "uniform" ]
  attribute org {
    
    ## no claim is made about the sequence in which the immediate contents of this division are to be processed, or their inter-relationships.
    "composite"
    | 
      ## the immediate contents of this element are regarded as forming a logical unit, to be processed in sequence.
      "uniform"
  }?
cust_att.divLike.attribute.sample =
  
  ## indicates whether this division is a sample of the original source and if so, from which part.
  [ a:defaultValue = "complete" ]
  attribute sample {
    
    ## division lacks material present at end in source.
    "initial"
    | 
      ## division lacks material at start and end.
      "medial"
    | 
      ## division lacks material at start.
      "final"
    | 
      ## position of sampled material within original unknown.
      "unknown"
    | 
      ## division is not a sample.
      "complete"
  }?
cust_att.docStatus.attributes = cust_att.docStatus.attribute.status
cust_att.docStatus.attribute.status =
  
  ## describes the status of a document either currently or, when associated with a dated element, at the time indicated.
  ## Sample values include: 1] approved; 2] candidate; 3] cleared; 4] deprecated; 5] draft; 6] embargoed; 7] expired; 8] frozen; 9] galley; 10] proposed; 11] published; 12] recommendation; 13] submitted; 14] unfinished; 15] withdrawn
  [ a:defaultValue = "draft" ]
  attribute status {
    xsd:token { pattern = "[^\p{C}\p{Z}]+" }
  }?
cust_att.editLike.attributes =
  cust_att.editLike.attribute.evidence,
  cust_att.editLike.attribute.instant
cust_att.editLike.attribute.evidence =
  
  ## indicates the nature of the evidence supporting the reliability or accuracy of the intervention or interpretation.
  ## Suggested values include: 1] internal; 2] external; 3] conjecture
  attribute evidence {
    list {
      (
       ## there is internal evidence to support the intervention.
       "internal"
       | 
         ## there is external evidence to support the intervention.
         "external"
       | 
         ## the intervention or interpretation has been made by the editor, cataloguer, or scholar on the basis of their expertise.
         "conjecture"
       | xsd:token { pattern = "[^\p{C}\p{Z}]+" })+
    }
  }?
cust_att.editLike.attribute.instant =
  
  ## indicates whether this is an instant revision or not.
  [ a:defaultValue = "false" ]
  attribute instant {
    xsd:boolean
    | (
       ##
       "unknown"
       | 
         ##
         "inapplicable")
  }?
cust_att.global.source.attributes =
  cust_att.global.source.attribute.source
cust_att.global.source.attribute.source =
  
  ## specifies the source from which some aspect of this element is drawn.
  attribute source {
    list { xsd:anyURI+ }
  }?
cust_att.global.attributes =
  cust_att.global.source.attributes,
  cust_att.global.attribute.xmlid,
  cust_att.global.attribute.n,
  cust_att.global.attribute.xmllang,
  cust_att.global.attribute.xmlbase,
  cust_att.global.attribute.xmlspace
cust_att.global.attribute.xmlid =
  
  ## (identifier) provides a unique identifier for the element bearing the attribute.
  attribute xml:id { xsd:ID }?
sch:pattern [
  id =
    "tei_customization-att.global-xmlid-unique_xmlIDs-constraint-report-4"
  "\x{a}" ~
  "      "
  sch:rule [
    context = "@xml:id"
    "\x{a}" ~
    "         "
    sch:let [ name = "myID" value = "normalize-space(.)" ]
    "\x{a}" ~
    "         "
    sch:report [
      test =
        "../(ancestor::*|preceding::*)/@xml:id[ normalize-space(.) eq $myID ]"
      'The @xml:id "'
      sch:value-of [ select = "." ]
      '" on ＜'
      sch:value-of [ select = "name(..)" ]
      "＞ duplicates an @xml:id found earlier in the document"
    ]
    "\x{a}" ~
    "      "
  ]
  "\x{a}" ~
  "   "
]
cust_att.global.attribute.n =
  
  ## (number) gives a number (or other label) for an element, which is not necessarily unique within the document.
  attribute n { xsd:string }?
cust_att.global.attribute.xmllang =
  [
    a:documentation [
      "(language) indicates the language of the element content using a tag generated according to "
      ns1:a [
        href = "http://www.rfc-editor.org/rfc/bcp/bcp47.txt"
        "BCP 47"
      ]
      "."
    ]
  ]
  attribute xml:lang {
    xsd:language
    | (
       ##
       "")
  }?
cust_att.global.attribute.xmlbase =
  
  ## provides a base URI reference with which applications can resolve relative URI references into absolute URI references.
  attribute xml:base { xsd:anyURI }?
cust_att.global.attribute.xmlspace =
  
  ## signals an intention about how white space should be managed by applications.
  attribute xml:space {
    
    ## signals that the application's default white-space processing modes are acceptable
    "default"
    | 
      ## indicates the intent that applications preserve all white space
      "preserve"
  }?
cust_att.internetMedia.attributes =
  cust_att.internetMedia.attribute.mimeType
cust_att.internetMedia.attribute.mimeType =
  
  ## (MIME media type) specifies the applicable multimedia internet mail extension (MIME) media type
  attribute mimeType {
    list {
      xsd:token { pattern = "[^\p{C}\p{Z}]+" }+
    }
  }?
cust_att.media.attributes =
  cust_att.internetMedia.attributes,
  cust_att.media.attribute.width,
  cust_att.media.attribute.height,
  cust_att.media.attribute.scale
cust_att.media.attribute.width =
  
  ## Where the media are displayed, indicates the display width
  attribute width {
    xsd:token {
      pattern =
        "[\-+]?\d+(\.\d+)?(%|cm|mm|in|pt|pc|px|em|ex|gd|rem|vw|vh|vm)"
    }
  }?
cust_att.media.attribute.height =
  
  ## Where the media are displayed, indicates the display height
  attribute height {
    xsd:token {
      pattern =
        "[\-+]?\d+(\.\d+)?(%|cm|mm|in|pt|pc|px|em|ex|gd|rem|vw|vh|vm)"
    }
  }?
cust_att.media.attribute.scale =
  
  ## Where the media are displayed, indicates a scale factor to be applied when generating the desired display size
  attribute scale {
    xsd:double
    | xsd:token { pattern = "(\-?[\d]+/\-?[\d]+)" }
    | xsd:decimal
  }?
cust_att.resourced.attributes = cust_att.resourced.attribute.url
cust_att.resourced.attribute.url =
  
  ## (uniform resource locator) specifies the URL from which the media concerned may be obtained.
  attribute url { xsd:anyURI }
cust_att.measurement.attributes =
  cust_att.measurement.attribute.unit,
  cust_att.measurement.attribute.unitRef,
  cust_att.measurement.attribute.quantity,
  cust_att.measurement.attribute.commodity
cust_att.measurement.attribute.unit =
  
  ## (unit) indicates the units used for the measurement, usually using the standard symbol for the desired units.
  ## Suggested values include: 1] m (metre); 2] kg (kilogram); 3] s (second); 4] Hz (hertz); 5] Pa (pascal); 6] Ω (ohm); 7] L (litre); 8] t (tonne); 9] ha (hectare); 10] Å (ångström); 11] mL (millilitre); 12] cm (centimetre); 13] dB (decibel); 14] kbit (kilobit); 15] Kibit (kibibit); 16] kB (kilobyte); 17] KiB (kibibyte); 18] MB (megabyte); 19] MiB (mebibyte)
  attribute unit {
    
    ## (metre) SI base unit of length
    "m"
    | 
      ## (kilogram) SI base unit of mass
      "kg"
    | 
      ## (second) SI base unit of time
      "s"
    | 
      ## (hertz) SI unit of frequency
      "Hz"
    | 
      ## (pascal) SI unit of pressure or stress
      "Pa"
    | 
      ## (ohm) SI unit of electric resistance
      "Ω"
    | 
      ## (litre) 1 dm³
      "L"
    | 
      ## (tonne) 10³ kg
      "t"
    | 
      ## (hectare) 1 hm²
      "ha"
    | 
      ## (ångström) 10⁻¹⁰ m
      "Å"
    | 
      ## (millilitre) 
      "mL"
    | 
      ## (centimetre) 
      "cm"
    | 
      ## (decibel) see remarks, below
      "dB"
    | 
      ## (kilobit) 10³ or 1000 bits
      "kbit"
    | 
      ## (kibibit) 2¹⁰ or 1024 bits
      "Kibit"
    | 
      ## (kilobyte) 10³ or 1000 bytes
      "kB"
    | 
      ## (kibibyte) 2¹⁰ or 1024 bytes
      "KiB"
    | 
      ## (megabyte) 10⁶ or 1 000 000 bytes
      "MB"
    | 
      ## (mebibyte) 2²⁰ or 1 048 576 bytes
      "MiB"
    | xsd:token { pattern = "[^\p{C}\p{Z}]+" }
  }?
cust_att.measurement.attribute.unitRef =
  [
    a:documentation [
      "points to a unique identifier stored in the "
      ns1:code [ "@xml:id" ]
      " of a "
      ns1:code [ "<unitDef>" ]
      " element that defines a unit of measure."
    ]
  ]
  attribute unitRef { xsd:anyURI }?
cust_att.measurement.attribute.quantity =
  
  ## (quantity) specifies the number of the specified units that comprise the measurement
  attribute quantity {
    xsd:double
    | xsd:token { pattern = "(\-?[\d]+/\-?[\d]+)" }
    | xsd:decimal
  }?
cust_att.measurement.attribute.commodity =
  
  ## (commodity) indicates the substance that is being measured
  attribute commodity {
    list {
      xsd:token { pattern = "[^\p{C}\p{Z}]+" }+
    }
  }?
sch:pattern [
  id =
    "tei_customization-att.measurement-att-measurement-unitRef-constraint-rule-5"
  "\x{a}" ~
  "      "
  sch:rule [
    context = "tei:*[@unitRef]"
    "\x{a}" ~
    "        "
    sch:report [
      test = "@unit"
      role = "info"
      "The @unit attribute may be unnecessary when @unitRef is present."
    ]
    "\x{a}" ~
    "      "
  ]
  "\x{a}" ~
  "   "
]
cust_att.naming.attributes =
  cust_att.canonical.attributes,
  cust_att.naming.attribute.role,
  cust_att.naming.attribute.nymRef
cust_att.naming.attribute.role =
  
  ## may be used to specify further information about the entity referenced by this name in the form of a set of whitespace-separated values, for example the occupation of a person, or the status of a place.
  attribute role {
    list {
      xsd:token { pattern = "[^\p{C}\p{Z}]+" }+
    }
  }?
cust_att.naming.attribute.nymRef =
  
  ## (reference to the canonical name) provides a means of locating the canonical form (nym) of the names associated with the object named by the element bearing it.
  attribute nymRef {
    list { xsd:anyURI+ }
  }?
cust_att.notated.attributes = cust_att.notated.attribute.notation
cust_att.notated.attribute.notation =
  
  ## names the notation used for the content of the element.
  attribute notation {
    xsd:token { pattern = "[^\p{C}\p{Z}]+" }
  }?
cust_att.placement.attributes = cust_att.placement.attribute.place
cust_att.placement.attribute.place =
  
  ## specifies where this item is placed.
  ## Suggested values include: 1] top; 2] bottom; 3] margin; 4] opposite; 5] overleaf; 6] above; 7] right; 8] below; 9] left; 10] end; 11] inline; 12] inspace
  attribute place {
    list {
      (
       ## at the top of the page
       "top"
       | 
         ## at the foot of the page
         "bottom"
       | 
         ## in the margin (left, right, or both)
         "margin"
       | 
         ## on the opposite, i.e. facing, page
         "opposite"
       | 
         ## on the other side of the leaf
         "overleaf"
       | 
         ## above the line
         "above"
       | 
         ## to the right, e.g. to the right of a vertical line of text, or to the right of a figure
         "right"
       | 
         ## below the line
         "below"
       | 
         ## to the left, e.g. to the left of a vertical line of text, or to the left of a figure
         "left"
       | 
         ## at the end of e.g. chapter or volume.
         "end"
       | 
         ## within the body of the text.
         "inline"
       | 
         ## in a predefined space, for example left by an earlier scribe.
         "inspace"
       | xsd:token { pattern = "[^\p{C}\p{Z}]+" })+
    }
  }?
cust_att.typed.attributes =
  cust_att.typed.attribute.type, cust_att.typed.attribute.subtype
cust_att.typed.attribute.type =
  
  ## characterizes the element in some sense, using any convenient classification scheme or typology.
  attribute type {
    xsd:token { pattern = "[^\p{C}\p{Z}]+" }
  }?
cust_att.typed.attribute.subtype =
  
  ## (subtype) provides a sub-categorization of the element, if needed
  attribute subtype {
    xsd:token { pattern = "[^\p{C}\p{Z}]+" }
  }?
sch:pattern [
  id = "tei_customization-att.typed-subtypeTyped-constraint-rule-6"
  "\x{a}" ~
  "      "
  sch:rule [
    context = "tei:*[@subtype]"
    "\x{a}" ~
    "        "
    sch:assert [
      test = "@type"
      "The "
      sch:name [ ]
      " element should not be categorized in detail with @subtype unless also categorized in general with @type"
    ]
    "\x{a}" ~
    "      "
  ]
  "\x{a}" ~
  "   "
]
cust_att.pointing.attributes =
  cust_att.pointing.attribute.targetLang,
  cust_att.pointing.attribute.target,
  cust_att.pointing.attribute.evaluate
cust_att.pointing.attribute.targetLang =
  [
    a:documentation [
      "specifies the language of the content to be found at the destination referenced by "
      ns1:code [ "@target" ]
      ", using a language tag generated according to "
      ns1:a [
        href = "http://www.rfc-editor.org/rfc/bcp/bcp47.txt"
        "BCP 47"
      ]
      "."
    ]
  ]
  attribute targetLang {
    xsd:language
    | (
       ##
       "")
  }?
sch:pattern [
  id =
    "tei_customization-att.pointing-targetLang-targetLang-constraint-rule-7"
  "\x{a}" ~
  "      "
  sch:rule [
    context = "tei:*[not(self::tei:schemaSpec)][@targetLang]"
    "\x{a}" ~
    "            "
    sch:assert [
      test = "@target"
      "@targetLang should only be used on "
      sch:name [ ]
      " if @target is specified."
    ]
    "\x{a}" ~
    "          "
  ]
  "\x{a}" ~
  "   "
]
cust_att.pointing.attribute.target =
  
  ## specifies the destination of the reference by supplying one or more URI References
  attribute target {
    list { xsd:anyURI+ }
  }?
cust_att.pointing.attribute.evaluate =
  
  ## (evaluate) specifies the intended meaning when the target of a pointer is itself a pointer.
  attribute evaluate {
    
    ## if the element pointed to is itself a pointer, then the target of that pointer will be taken, and so on, until an element is found which is not a pointer.
    "all"
    | 
      ## if the element pointed to is itself a pointer, then its target (whether a pointer or not) is taken as the target of this pointer.
      "one"
    | 
      ## no further evaluation of targets is carried out beyond that needed to find the element specified in the pointer's target.
      "none"
  }?
cust_att.sortable.attributes = cust_att.sortable.attribute.sortKey
cust_att.sortable.attribute.sortKey =
  
  ## supplies the sort key for this element in an index, list or group which contains it.
  attribute sortKey {
    xsd:token { pattern = "[^\p{C}\p{Z}]+" }
  }?
cust_att.styleDef.attributes =
  cust_att.styleDef.attribute.scheme,
  cust_att.styleDef.attribute.schemeVersion
cust_att.styleDef.attribute.scheme =
  
  ## identifies the language used to describe the rendition.
  attribute scheme {
    
    ## Cascading Stylesheet Language
    "css"
    | 
      ## Extensible Stylesheet Language Formatting Objects
      "xslfo"
    | 
      ## Informal free text description
      "free"
    | 
      ## A user-defined rendition description language
      "other"
  }?
cust_att.styleDef.attribute.schemeVersion =
  [
    a:documentation [
      "supplies a version number for the style language provided in "
      ns1:code [ "@scheme" ]
      "."
    ]
  ]
  attribute schemeVersion {
    xsd:token { pattern = "[\d]+[a-z]*[\d]*(\.[\d]+[a-z]*[\d]*){0,3}" }
  }?
sch:pattern [
  id =
    "tei_customization-att.styleDef-schemeVersion-schemeVersionRequiresScheme-constraint-rule-8"
  "\x{a}" ~
  "      "
  sch:rule [
    context = "tei:*[@schemeVersion]"
    "\x{a}" ~
    "            "
    sch:assert [
      test = "@scheme and not(@scheme = 'free')"
      "\x{a}" ~
      "              @schemeVersion can only be used if @scheme is specified.\x{a}" ~
      "            "
    ]
    "\x{a}" ~
    "          "
  ]
  "\x{a}" ~
  "   "
]
cust_att.timed.attributes =
  cust_att.timed.attribute.start, cust_att.timed.attribute.end
cust_att.timed.attribute.start =
  
  ## indicates the location within a temporal alignment at which this element begins.
  attribute start { xsd:anyURI }?
cust_att.timed.attribute.end =
  
  ## indicates the location within a temporal alignment at which this element ends.
  attribute end { xsd:anyURI }?
cust_att.transcriptional.attributes =
  cust_att.editLike.attributes,
  cust_att.written.attributes,
  cust_att.transcriptional.attribute.status,
  cust_att.transcriptional.attribute.cause,
  cust_att.transcriptional.attribute.seq
cust_att.transcriptional.attribute.status =
  
  ## indicates the effect of the intervention, for example in the case of a deletion, strikeouts which include too much or too little text, or in the case of an addition, an insertion which duplicates some of the text already present.
  ## Sample values include: 1] duplicate; 2] duplicate-partial; 3] excessStart; 4] excessEnd; 5] shortStart; 6] shortEnd; 7] partial; 8] unremarkable
  [ a:defaultValue = "unremarkable" ]
  attribute status {
    xsd:token { pattern = "[^\p{C}\p{Z}]+" }
  }?
cust_att.transcriptional.attribute.cause =
  
  ## documents the presumed cause for the intervention.
  attribute cause {
    xsd:token { pattern = "[^\p{C}\p{Z}]+" }
  }?
cust_att.transcriptional.attribute.seq =
  
  ## (sequence) assigns a sequence number related to the order in which the encoded features carrying this attribute are believed to have occurred.
  attribute seq { xsd:nonNegativeInteger }?
cust_att.citing.attributes =
  cust_att.citing.attribute.unit,
  cust_att.citing.attribute.from,
  cust_att.citing.attribute.to
cust_att.citing.attribute.unit =
  
  ## identifies the unit of information conveyed by the element, e.g. columns, pages, volume, entry.
  ## Suggested values include: 1] volume (volume); 2] issue; 3] page (page); 4] line; 5] chapter (chapter); 6] part; 7] column; 8] entry
  attribute unit {
    
    ## (volume) the element contains a volume number.
    "volume"
    | 
      ## the element contains an issue number, or volume and issue numbers.
      "issue"
    | 
      ## (page) the element contains a page number or page range.
      "page"
    | 
      ## the element contains a line number or line range.
      "line"
    | 
      ## (chapter) the element contains a chapter indication (number and/or title)
      "chapter"
    | 
      ## the element identifies a part of a book or collection.
      "part"
    | 
      ## the element identifies a column.
      "column"
    | 
      ## the element identifies an entry number or label in a list of entries.
      "entry"
    | xsd:token { pattern = "[^\p{C}\p{Z}]+" }
  }?
cust_att.citing.attribute.from =
  [
    a:documentation [
      "specifies the starting point of the range of units indicated by the "
      ns1:code [ "@unit" ]
      " attribute."
    ]
  ]
  attribute from {
    xsd:token { pattern = "[^\p{C}\p{Z}]+" }
  }?
cust_att.citing.attribute.to =
  [
    a:documentation [
      "specifies the end-point of the range of units indicated by the "
      ns1:code [ "@unit" ]
      " attribute."
    ]
  ]
  attribute to {
    xsd:token { pattern = "[^\p{C}\p{Z}]+" }
  }?
cust_model.nameLike.agent = cust_name | cust_orgName | cust_persName
cust_model.nameLike.agent_alternation =
  cust_name | cust_orgName | cust_persName
cust_model.nameLike.agent_sequence =
  cust_name, cust_orgName, cust_persName
cust_model.nameLike.agent_sequenceOptional =
  cust_name?, cust_orgName?, cust_persName?
cust_model.nameLike.agent_sequenceOptionalRepeatable =
  cust_name*, cust_orgName*, cust_persName*
cust_model.nameLike.agent_sequenceRepeatable =
  cust_name+, cust_orgName+, cust_persName+
cust_model.segLike = notAllowed
cust_model.hiLike = cust_hi | cust_q
cust_model.hiLike_alternation = cust_hi | cust_q
cust_model.hiLike_sequence = cust_hi, cust_q
cust_model.hiLike_sequenceOptional = cust_hi?, cust_q?
cust_model.hiLike_sequenceOptionalRepeatable = cust_hi*, cust_q*
cust_model.hiLike_sequenceRepeatable = cust_hi+, cust_q+
cust_model.emphLike =
  cust_foreign
  | cust_emph
  | cust_mentioned
  | cust_soCalled
  | cust_gloss
  | cust_term
  | cust_title
  | cust_code
  | cust_ident
cust_model.emphLike_alternation =
  cust_foreign
  | cust_emph
  | cust_mentioned
  | cust_soCalled
  | cust_gloss
  | cust_term
  | cust_title
  | cust_code
  | cust_ident
cust_model.emphLike_sequence =
  cust_foreign,
  cust_emph,
  cust_mentioned,
  cust_soCalled,
  cust_gloss,
  cust_term,
  cust_title,
  cust_code,
  cust_ident
cust_model.emphLike_sequenceOptional =
  cust_foreign?,
  cust_emph?,
  cust_mentioned?,
  cust_soCalled?,
  cust_gloss?,
  cust_term?,
  cust_title?,
  cust_code?,
  cust_ident?
cust_model.emphLike_sequenceOptionalRepeatable =
  cust_foreign*,
  cust_emph*,
  cust_mentioned*,
  cust_soCalled*,
  cust_gloss*,
  cust_term*,
  cust_title*,
  cust_code*,
  cust_ident*
cust_model.emphLike_sequenceRepeatable =
  cust_foreign+,
  cust_emph+,
  cust_mentioned+,
  cust_soCalled+,
  cust_gloss+,
  cust_term+,
  cust_title+,
  cust_code+,
  cust_ident+
cust_model.highlighted = cust_model.hiLike | cust_model.emphLike
cust_model.dateLike = cust_date | cust_time
cust_model.dateLike_alternation = cust_date | cust_time
cust_model.dateLike_sequence = cust_date, cust_time
cust_model.dateLike_sequenceOptional = cust_date?, cust_time?
cust_model.dateLike_sequenceOptionalRepeatable = cust_date*, cust_time*
cust_model.dateLike_sequenceRepeatable = cust_date+, cust_time+
cust_model.measureLike = cust_num | cust_unit
cust_model.measureLike_alternation = cust_num | cust_unit
cust_model.measureLike_sequence = cust_num, cust_unit
cust_model.measureLike_sequenceOptional = cust_num?, cust_unit?
cust_model.measureLike_sequenceOptionalRepeatable =
  cust_num*, cust_unit*
cust_model.measureLike_sequenceRepeatable = cust_num+, cust_unit+
cust_model.egLike = cust_eg | cust_egXML
cust_model.egLike_alternation = cust_eg | cust_egXML
cust_model.egLike_sequence = cust_eg, cust_egXML
cust_model.egLike_sequenceOptional = cust_eg?, cust_egXML?
cust_model.egLike_sequenceOptionalRepeatable = cust_eg*, cust_egXML*
cust_model.egLike_sequenceRepeatable = cust_eg+, cust_egXML+
cust_model.graphicLike = cust_media | cust_graphic | cust_formula
cust_model.offsetLike = notAllowed
cust_model.offsetLike_alternation = notAllowed
cust_model.offsetLike_sequence = empty
cust_model.offsetLike_sequenceOptional = empty
cust_model.offsetLike_sequenceOptionalRepeatable = empty
cust_model.offsetLike_sequenceRepeatable = notAllowed
cust_model.pPart.msdesc = notAllowed
cust_model.pPart.editorial = cust_choice | cust_abbr | cust_expan
cust_model.pPart.editorial_alternation =
  cust_choice | cust_abbr | cust_expan
cust_model.pPart.editorial_sequence = cust_choice, cust_abbr, cust_expan
cust_model.pPart.editorial_sequenceOptional =
  cust_choice?, cust_abbr?, cust_expan?
cust_model.pPart.editorial_sequenceOptionalRepeatable =
  cust_choice*, cust_abbr*, cust_expan*
cust_model.pPart.editorial_sequenceRepeatable =
  cust_choice+, cust_abbr+, cust_expan+
cust_model.pPart.transcriptional = notAllowed
cust_model.pPart.transcriptional_alternation = notAllowed
cust_model.pPart.transcriptional_sequence = empty
cust_model.pPart.transcriptional_sequenceOptional = empty
cust_model.pPart.transcriptional_sequenceOptionalRepeatable = empty
cust_model.pPart.transcriptional_sequenceRepeatable = notAllowed
cust_model.pPart.edit =
  cust_model.pPart.editorial | cust_model.pPart.transcriptional
cust_model.ptrLike = cust_ptr | cust_ref
cust_model.lPart = notAllowed
cust_model.global.meta = notAllowed
cust_model.milestoneLike = notAllowed
cust_model.gLike = notAllowed
cust_model.oddDecl =
  cust_moduleSpec
  | cust_specGrp
  | cust_specGrpRef
  | cust_elementSpec
  | cust_classSpec
  | cust_dataSpec
  | cust_macroSpec
  | cust_listRef
  | cust_outputRendition
  | cust_constraintSpec
cust_model.oddDecl_alternation =
  cust_moduleSpec
  | cust_specGrp
  | cust_specGrpRef
  | cust_elementSpec
  | cust_classSpec
  | cust_dataSpec
  | cust_macroSpec
  | cust_listRef
  | cust_outputRendition
  | cust_constraintSpec
cust_model.oddDecl_sequence =
  cust_moduleSpec,
  cust_specGrp,
  cust_specGrpRef,
  cust_elementSpec,
  cust_classSpec,
  cust_dataSpec,
  cust_macroSpec,
  cust_listRef,
  cust_outputRendition,
  cust_constraintSpec
cust_model.oddDecl_sequenceOptional =
  cust_moduleSpec?,
  cust_specGrp?,
  cust_specGrpRef?,
  cust_elementSpec?,
  cust_classSpec?,
  cust_dataSpec?,
  cust_macroSpec?,
  cust_listRef?,
  cust_outputRendition?,
  cust_constraintSpec?
cust_model.oddDecl_sequenceOptionalRepeatable =
  cust_moduleSpec*,
  cust_specGrp*,
  cust_specGrpRef*,
  cust_elementSpec*,
  cust_classSpec*,
  cust_dataSpec*,
  cust_macroSpec*,
  cust_listRef*,
  cust_outputRendition*,
  cust_constraintSpec*
cust_model.oddDecl_sequenceRepeatable =
  cust_moduleSpec+,
  cust_specGrp+,
  cust_specGrpRef+,
  cust_elementSpec+,
  cust_classSpec+,
  cust_dataSpec+,
  cust_macroSpec+,
  cust_listRef+,
  cust_outputRendition+,
  cust_constraintSpec+
cust_model.oddRef =
  cust_classRef
  | cust_elementRef
  | cust_macroRef
  | cust_moduleRef
  | cust_dataRef
cust_model.phrase.xml = cust_att | cust_gi | cust_tag | cust_val
cust_model.specDescLike = cust_specList | cust_specDesc
cust_model.biblLike = cust_bibl | cust_biblFull
cust_model.biblLike_alternation = cust_bibl | cust_biblFull
cust_model.biblLike_sequence = cust_bibl, cust_biblFull
cust_model.biblLike_sequenceOptional = cust_bibl?, cust_biblFull?
cust_model.biblLike_sequenceOptionalRepeatable =
  cust_bibl*, cust_biblFull*
cust_model.biblLike_sequenceRepeatable = cust_bibl+, cust_biblFull+
cust_model.headLike = cust_head
cust_model.headLike_alternation = cust_head
cust_model.headLike_sequence = cust_head
cust_model.headLike_sequenceOptional = cust_head?
cust_model.headLike_sequenceOptionalRepeatable = cust_head*
cust_model.headLike_sequenceRepeatable = cust_head+
cust_model.labelLike = cust_desc | cust_label
cust_model.labelLike_alternation = cust_desc | cust_label
cust_model.labelLike_sequence = cust_desc, cust_label
cust_model.labelLike_sequenceOptional = cust_desc?, cust_label?
cust_model.labelLike_sequenceOptionalRepeatable =
  cust_desc*, cust_label*
cust_model.labelLike_sequenceRepeatable = cust_desc+, cust_label+
cust_model.listLike = cust_list | cust_table
cust_model.listLike_alternation = cust_list | cust_table
cust_model.listLike_sequence = cust_list, cust_table
cust_model.listLike_sequenceOptional = cust_list?, cust_table?
cust_model.listLike_sequenceOptionalRepeatable = cust_list*, cust_table*
cust_model.listLike_sequenceRepeatable = cust_list+, cust_table+
cust_model.noteLike = cust_note | cust_noteGrp
cust_model.lLike = notAllowed
cust_model.lLike_alternation = notAllowed
cust_model.lLike_sequence = empty
cust_model.lLike_sequenceOptional = empty
cust_model.lLike_sequenceOptionalRepeatable = empty
cust_model.lLike_sequenceRepeatable = notAllowed
cust_model.pLike = cust_p
cust_model.pLike_alternation = cust_p
cust_model.pLike_sequence = cust_p
cust_model.pLike_sequenceOptional = cust_p?
cust_model.pLike_sequenceOptionalRepeatable = cust_p*
cust_model.pLike_sequenceRepeatable = cust_p+
cust_model.stageLike = notAllowed
cust_model.stageLike_alternation = notAllowed
cust_model.stageLike_sequence = empty
cust_model.stageLike_sequenceOptional = empty
cust_model.stageLike_sequenceOptionalRepeatable = empty
cust_model.stageLike_sequenceRepeatable = notAllowed
cust_model.entryPart = notAllowed
cust_model.global.edit = notAllowed
cust_model.divPart =
  cust_model.lLike | cust_model.pLike | cust_schemaSpec
cust_model.placeNamePart = cust_placeName
cust_model.placeNamePart_alternation = cust_placeName
cust_model.placeNamePart_sequence = cust_placeName
cust_model.placeNamePart_sequenceOptional = cust_placeName?
cust_model.placeNamePart_sequenceOptionalRepeatable = cust_placeName*
cust_model.placeNamePart_sequenceRepeatable = cust_placeName+
cust_model.placeStateLike = cust_model.placeNamePart
cust_model.placeStateLike_alternation =
  cust_model.placeNamePart_alternation
cust_model.placeStateLike_sequence = cust_model.placeNamePart_sequence
cust_model.placeStateLike_sequenceOptional =
  cust_model.placeNamePart_sequenceOptional?
cust_model.placeStateLike_sequenceOptionalRepeatable =
  cust_model.placeNamePart_sequenceOptionalRepeatable*
cust_model.placeStateLike_sequenceRepeatable =
  cust_model.placeNamePart_sequenceRepeatable+
cust_model.publicationStmtPart.agency =
  cust_publisher | cust_distributor | cust_authority
cust_model.publicationStmtPart.detail =
  cust_model.ptrLike
  | cust_address
  | cust_date
  | cust_pubPlace
  | cust_idno
  | cust_availability
cust_model.availabilityPart = cust_licence
cust_model.descLike = cust_desc
cust_model.glossLike = cust_gloss | cust_equiv | cust_altIdent
cust_model.quoteLike = cust_quote | cust_cit
cust_model.quoteLike_alternation = cust_quote | cust_cit
cust_model.quoteLike_sequence = cust_quote, cust_cit
cust_model.quoteLike_sequenceOptional = cust_quote?, cust_cit?
cust_model.quoteLike_sequenceOptionalRepeatable = cust_quote*, cust_cit*
cust_model.quoteLike_sequenceRepeatable = cust_quote+, cust_cit+
cust_model.attributable = cust_model.quoteLike | cust_said
cust_model.attributable_alternation =
  cust_model.quoteLike_alternation | cust_said
cust_model.attributable_sequence =
  cust_model.quoteLike_sequence, cust_said
cust_model.attributable_sequenceOptional =
  cust_model.quoteLike_sequenceOptional?, cust_said?
cust_model.attributable_sequenceOptionalRepeatable =
  cust_model.quoteLike_sequenceOptionalRepeatable*, cust_said*
cust_model.attributable_sequenceRepeatable =
  cust_model.quoteLike_sequenceRepeatable+, cust_said+
cust_model.respLike =
  cust_author
  | cust_editor
  | cust_respStmt
  | cust_meeting
  | cust_sponsor
  | cust_funder
  | cust_principal
cust_model.divWrapper = cust_meeting
cust_model.divTopPart = cust_model.headLike
cust_model.divTop = cust_model.divWrapper | cust_model.divTopPart
cust_model.frontPart.drama = notAllowed
cust_model.pLike.front = cust_head
cust_model.divBottomPart = notAllowed
cust_model.divBottom = cust_model.divWrapper | cust_model.divBottomPart
cust_model.choicePart = cust_abbr | cust_expan
cust_model.imprintPart =
  cust_publisher | cust_biblScope | cust_pubPlace | cust_distributor
cust_model.addressLike = cust_email | cust_address
cust_model.addressLike_alternation = cust_email | cust_address
cust_model.addressLike_sequence = cust_email, cust_address
cust_model.addressLike_sequenceOptional = cust_email?, cust_address?
cust_model.addressLike_sequenceOptionalRepeatable =
  cust_email*, cust_address*
cust_model.addressLike_sequenceRepeatable = cust_email+, cust_address+
cust_model.nameLike =
  cust_model.nameLike.agent
  | cust_model.offsetLike
  | cust_model.placeStateLike
  | cust_rs
  | cust_idno
  | cust_model.persNamePart
cust_model.nameLike_alternation =
  cust_model.nameLike.agent_alternation
  | cust_model.offsetLike_alternation
  | cust_model.placeStateLike_alternation
  | cust_rs
  | cust_idno
  | cust_model.persNamePart_alternation
cust_model.nameLike_sequence =
  cust_model.nameLike.agent_sequence,
  cust_model.offsetLike_sequence,
  cust_model.placeStateLike_sequence,
  cust_rs,
  cust_idno,
  cust_model.persNamePart_sequence
cust_model.nameLike_sequenceOptional =
  cust_model.nameLike.agent_sequenceOptional?,
  cust_model.offsetLike_sequenceOptional?,
  cust_model.placeStateLike_sequenceOptional?,
  cust_rs?,
  cust_idno?,
  cust_model.persNamePart_sequenceOptional?
cust_model.nameLike_sequenceOptionalRepeatable =
  cust_model.nameLike.agent_sequenceOptionalRepeatable*,
  cust_model.offsetLike_sequenceOptionalRepeatable*,
  cust_model.placeStateLike_sequenceOptionalRepeatable*,
  cust_rs*,
  cust_idno*,
  cust_model.persNamePart_sequenceOptionalRepeatable*
cust_model.nameLike_sequenceRepeatable =
  cust_model.nameLike.agent_sequenceRepeatable+,
  cust_model.offsetLike_sequenceRepeatable+,
  cust_model.placeStateLike_sequenceRepeatable+,
  cust_rs+,
  cust_idno+,
  cust_model.persNamePart_sequenceRepeatable+
cust_model.global =
  cust_model.global.meta
  | cust_model.milestoneLike
  | cust_model.noteLike
  | cust_model.global.edit
  | cust_figure
cust_model.biblPart =
  cust_model.respLike
  | cust_model.imprintPart
  | cust_citedRange
  | cust_bibl
  | cust_relatedItem
  | cust_textLang
  | cust_edition
  | cust_extent
  | cust_availability
cust_model.frontPart = cust_model.frontPart.drama | cust_divGen
cust_model.addrPart =
  cust_model.nameLike
  | cust_addrLine
  | cust_street
  | cust_postCode
  | cust_postBox
cust_model.pPart.data =
  cust_model.dateLike
  | cust_model.measureLike
  | cust_model.addressLike
  | cust_model.nameLike
cust_model.inter =
  cust_model.egLike
  | cust_model.oddDecl
  | cust_model.biblLike
  | cust_model.labelLike
  | cust_model.listLike
  | cust_model.stageLike
  | cust_model.attributable
cust_model.common = cust_model.divPart | cust_model.inter | cust_q
cust_model.phrase =
  cust_model.segLike
  | cust_model.highlighted
  | cust_model.graphicLike
  | cust_model.pPart.msdesc
  | cust_model.pPart.edit
  | cust_model.ptrLike
  | cust_model.lPart
  | cust_model.phrase.xml
  | cust_model.specDescLike
  | cust_model.pPart.data
  | cust_ruby
cust_model.limitedPhrase =
  cust_model.hiLike
  | cust_model.emphLike
  | cust_model.pPart.msdesc
  | cust_model.pPart.editorial
  | cust_model.ptrLike
  | cust_model.phrase.xml
  | cust_model.pPart.data
cust_model.divLike = cust_div
cust_model.divGenLike = cust_divGen
cust_model.div1Like = notAllowed
cust_model.teiHeaderPart = cust_encodingDesc | cust_xenoData
cust_model.sourceDescPart = notAllowed
cust_model.encodingDescPart =
  cust_schemaRef
  | cust_projectDesc
  | cust_styleDefDecl
  | cust_listPrefixDef
  | cust_unitDecl
  | cust_schemaSpec
cust_att.citeStructurePart.attributes =
  cust_att.citeStructurePart.attribute.use
cust_att.citeStructurePart.attribute.use =
  [
    a:documentation [
      "(use) supplies an XPath selection pattern using the syntax defined in . The XPath pattern is relative to the context given in "
      ns1:code [ "@match" ]
      ", which will either be a sibling attribute in the case of  or on the parent  in the case of ."
    ]
  ]
  attribute use { text }
cust_att.formula.attributes = cust_att.formula.attribute.formula
cust_att.formula.attribute.formula =
  [
    a:documentation [
      "A "
      ns1:code [ "@formula" ]
      " is provided to describe a mathematical calculation such as a conversion between measurement systems."
    ]
  ]
  attribute formula { text }?
cust_model.correspActionPart =
  cust_model.dateLike
  | cust_model.addressLike
  | cust_model.nameLike
  | cust_note
  | cust_noteGrp
cust_model.correspContextPart =
  cust_model.ptrLike | cust_model.pLike | cust_note | cust_noteGrp
cust_model.resource = cust_text
cust_att.personal.attributes =
  cust_att.naming.attributes,
  cust_att.personal.attribute.full,
  cust_att.personal.attribute.sort
cust_att.personal.attribute.full =
  
  ## indicates whether the name component is given in full, as an abbreviation or simply as an initial.
  [ a:defaultValue = "yes" ]
  attribute full {
    
    ## (yes) the name component is spelled out in full.
    "yes"
    | 
      ## (abbreviated) the name component is given in an abbreviated form.
      "abb"
    | 
      ## (initial letter) the name component is indicated only by one initial.
      "init"
  }?
cust_att.personal.attribute.sort =
  
  ## (sort) specifies the sort order of the name component in relation to others within the name.
  attribute sort { xsd:nonNegativeInteger }?
cust_p =
  
  ## (paragraph) marks paragraphs in prose. [3.1. Paragraphs 7.2.5. Speech Contents]
  element tei:p {
    cust_macro.paraContent
    >> sch:pattern [
         id =
           "tei_customization-p-abstractModel-structure-p-constraint-report-6"
         "\x{a}" ~
         "            "
         sch:rule [
           context = "tei:p"
           "\x{a}" ~
           "               "
           sch:report [
             test =
               "not(ancestor::tei:floatingText) and (ancestor::tei:p or ancestor::tei:ab)          and not(parent::tei:exemplum                |parent::tei:item                |parent::tei:note                |parent::tei:q                |parent::tei:quote                |parent::tei:remarks                |parent::tei:said                |parent::tei:sp                |parent::tei:stage                |parent::tei:cell                |parent::tei:figure                )"
             "\x{a}" ~
             "        Abstract model violation: Paragraphs may not occur inside other paragraphs or ab elements.\x{a}" ~
             "      "
           ]
           "\x{a}" ~
           "            "
         ]
         "\x{a}" ~
         "         "
       ]
    >> sch:pattern [
         id =
           "tei_customization-p-abstractModel-structure-l-constraint-report-7"
         "\x{a}" ~
         "            "
         sch:rule [
           context = "tei:p"
           "\x{a}" ~
           "               "
           sch:report [
             test =
               "ancestor::tei:l[not(.//tei:note//tei:p[. = current()])]"
             "\x{a}" ~
             "        Abstract model violation: Lines may not contain higher-level structural elements such as div, p, or ab.\x{a}" ~
             "      "
           ]
           "\x{a}" ~
           "            "
         ]
         "\x{a}" ~
         "         "
       ],
    cust_att.global.attributes,
    cust_att.declaring.attributes,
    cust_att.fragmentable.attributes,
    cust_att.written.attributes,
    empty
  }
cust_foreign =
  
  ## (foreign) identifies a word or phrase as belonging to some language other than that of the surrounding text. [3.3.2.1. Foreign Words or Expressions]
  element tei:foreign {
    cust_macro.phraseSeq, cust_att.global.attributes, empty
  }
cust_emph =
  
  ## (emphasized) marks words or phrases which are stressed or emphasized for linguistic or rhetorical effect. [3.3.2.2. Emphatic Words and Phrases 3.3.2. Emphasis, Foreign Words, and Unusual Language]
  element tei:emph {
    cust_macro.paraContent, cust_att.global.attributes, empty
  }
cust_hi =
  
  ## (highlighted) marks a word or phrase as graphically distinct from the surrounding text, for reasons concerning which no claim is made. [3.3.2.2. Emphatic Words and Phrases 3.3.2. Emphasis, Foreign Words, and Unusual Language]
  element tei:hi {
    cust_macro.paraContent,
    cust_att.global.attributes,
    cust_att.written.attributes,
    empty
  }
cust_said =
  
  ## (speech or thought) indicates passages thought or spoken aloud, whether explicitly indicated in the source or not, whether directly or indirectly reported, whether by real people or fictional characters. [3.3.3. Quotation]
  element tei:said {
    cust_macro.specialPara,
    cust_att.global.attributes,
    cust_att.ascribed.directed.attributes,
    
    ## may be used to indicate whether the quoted matter is regarded as having been vocalized or signed.
    attribute aloud {
      xsd:boolean
      | (
         ##
         "unknown"
         | 
           ##
           "inapplicable")
    }?,
    
    ## may be used to indicate whether the quoted matter is regarded as direct or indirect speech.
    [ a:defaultValue = "true" ]
    attribute direct {
      xsd:boolean
      | (
         ##
         "unknown"
         | 
           ##
           "inapplicable")
    }?,
    empty
  }
cust_quote =
  
  ## (quotation) contains a phrase or passage attributed by the narrator or author to some agency external to the text. [3.3.3. Quotation 4.3.1. Grouped Texts]
  element tei:quote {
    cust_macro.specialPara,
    cust_att.global.attributes,
    cust_att.typed.attributes,
    cust_att.notated.attributes,
    empty
  }
cust_q =
  
  ## (quoted) contains material which is distinguished from the surrounding text using quotation marks or a similar method, for any one of a variety of reasons including, but not limited to: direct speech or thought, technical terms or jargon, authorial distance, quotations from elsewhere, and passages that are mentioned but not used. [3.3.3. Quotation]
  element tei:q {
    cust_macro.specialPara,
    cust_att.global.attributes,
    cust_att.ascribed.directed.attributes,
    
    ## (type) may be used to indicate whether the offset passage is spoken or thought, or to characterize it more finely.
    ## Suggested values include: 1] spoken (spoken); 2] thought (thought); 3] written (written); 4] soCalled (so called); 5] foreign (foreign); 6] distinct (distinct); 7] term; 8] emph (emph); 9] mentioned (mentioned)
    attribute type {
      
      ## (spoken) representation of speech
      "spoken"
      | 
        ## (thought) representation of thought, e.g. internal monologue
        "thought"
      | 
        ## (written) quotation from a written source
        "written"
      | 
        ## (so called) authorial distance
        "soCalled"
      | 
        ## (foreign) 
        "foreign"
      | 
        ## (distinct) linguistically distinct
        "distinct"
      | 
        ## technical term
        "term"
      | 
        ## (emph) rhetorically emphasized
        "emph"
      | 
        ## (mentioned) refering to itself, not its normal referent
        "mentioned"
      | xsd:token { pattern = "[^\p{C}\p{Z}]+" }
    }?,
    empty
  }
cust_cit =
  
  ## (cited quotation) contains a quotation from some other document, together with a bibliographic reference to its source. In a dictionary it may contain an example text with at least one occurrence of the word form, used in the sense being described, or a translation of the headword, or an example. [3.3.3. Quotation 4.3.1. Grouped Texts 9.3.5.1. Examples]
  element tei:cit {
    (cust_model.biblLike
     | cust_model.egLike
     | cust_model.entryPart
     | cust_model.global
     | cust_model.graphicLike
     | cust_model.ptrLike
     | cust_model.attributable
     | cust_q)+,
    cust_att.global.attributes,
    cust_att.typed.attributes,
    empty
  }
cust_mentioned =
  
  ## marks words or phrases mentioned, not used. [3.3.3. Quotation]
  element tei:mentioned {
    cust_macro.phraseSeq, cust_att.global.attributes, empty
  }
cust_soCalled =
  
  ## (so called) contains a word or phrase for which the author or narrator indicates a disclaiming of responsibility, for example by the use of scare quotes or italics. [3.3.3. Quotation]
  element tei:soCalled {
    cust_macro.phraseSeq, cust_att.global.attributes, empty
  }
cust_desc =
  
  ## (description) contains a brief description of the object documented by its parent element, typically a documentation element or an entity. [22.4.1. Description of Components]
  element tei:desc {
    cust_macro.limitedContent
    >> sch:pattern [
         id =
           "tei_customization-desc-deprecationInfo-only-in-deprecated-constraint-rule-9"
         "\x{a}" ~
         "            "
         sch:rule [
           context = "tei:desc[ @type eq 'deprecationInfo']"
           "\x{a}" ~
           "               "
           sch:assert [
             test = "../@validUntil"
             "Information about a\x{a}" ~
             "        deprecation should only be present in a specification element\x{a}" ~
             "        that is being deprecated: that is, only an element that has a\x{a}" ~
             "        @validUntil attribute should have a child <desc\x{a}" ~
             '        type="deprecationInfo">.'
           ]
           "\x{a}" ~
           "            "
         ]
         "\x{a}" ~
         "         "
       ],
    cust_att.global.attributes,
    cust_att.translatable.attributes,
    cust_att.typed.attribute.subtype,
    
    ## characterizes the element in some sense, using any convenient classification scheme or typology.
    attribute type {
      xsd:token { pattern = "[^\p{C}\p{Z}]+" }
    }?,
    empty
  }
cust_gloss =
  
  ## (gloss) identifies a phrase or word used to provide a gloss or definition for some other word or phrase. [3.4.1. Terms and Glosses 22.4.1. Description of Components]
  element tei:gloss {
    cust_macro.phraseSeq,
    cust_att.global.attributes,
    cust_att.declaring.attributes,
    cust_att.translatable.attributes,
    cust_att.typed.attributes,
    cust_att.pointing.attributes,
    cust_att.cReferencing.attributes,
    empty
  }
cust_term =
  
  ## (term) contains a single-word, multi-word, or symbolic designation which is regarded as a technical term. [3.4.1. Terms and Glosses]
  element tei:term {
    cust_macro.phraseSeq,
    cust_att.global.attributes,
    cust_att.declaring.attributes,
    cust_att.pointing.attributes,
    cust_att.typed.attributes,
    cust_att.canonical.attributes,
    cust_att.sortable.attributes,
    cust_att.cReferencing.attributes,
    empty
  }
cust_ruby =
  
  ## (ruby container) contains a passage of base text along with its associated ruby gloss(es). [3.4.2. Ruby Annotations]
  element tei:ruby {
    (cust_rb, cust_rt+),
    cust_att.global.attributes,
    cust_att.typed.attributes,
    empty
  }
cust_rb =
  
  ## (ruby base) contains the base text annotated by a ruby gloss. [3.4.2. Ruby Annotations]
  element tei:rb {
    cust_macro.phraseSeq,
    cust_att.global.attributes,
    cust_att.typed.attributes,
    empty
  }
cust_rt =
  
  ## (ruby text) contains a ruby text, an annotation closely associated with a passage of the main text. [3.4.2. Ruby Annotations]
  element tei:rt {
    cust_macro.phraseSeq,
    cust_att.global.attributes,
    cust_att.typed.attributes,
    cust_att.placement.attributes,
    cust_att.transcriptional.attributes,
    (
     ## supplies a pointer to the base being glossed by this ruby text.
     attribute target { xsd:anyURI }?)
    >> sch:pattern [
         id =
           "tei_customization-rt-target-rt-target-not-span-constraint-report-8"
         "\x{a}" ~
         "            "
         sch:rule [
           context = "tei:rt/@target"
           "\x{a}" ~
           "               "
           sch:report [
             test = "../@from | ../@to"
             "When target= is\x{a}" ~
             "            present, neither from= nor to= should be."
           ]
           "\x{a}" ~
           "            "
         ]
         "\x{a}" ~
         "         "
       ],
    (
     ## points to the starting point of the span of text being glossed by this ruby text.
     attribute from { xsd:anyURI }?)
    >> sch:pattern [
         id = "tei_customization-rt-from-rt-from-constraint-assert-6"
         "\x{a}" ~
         "            "
         sch:rule [
           context = "tei:rt/@from"
           "\x{a}" ~
           "               "
           sch:assert [
             test = "../@to"
             "When from= is present, the to=\x{a}" ~
             "            attribute of "
             sch:name [ ]
             " is required."
           ]
           "\x{a}" ~
           "            "
         ]
         "\x{a}" ~
         "         "
       ],
    (
     ## points to the ending point of the span of text being glossed.
     attribute to { xsd:anyURI }?)
    >> sch:pattern [
         id = "tei_customization-rt-to-rt-to-constraint-assert-7"
         "\x{a}" ~
         "            "
         sch:rule [
           context = "tei:rt/@to"
           "\x{a}" ~
           "               "
           sch:assert [
             test = "../@from"
             "When to= is present, the from=\x{a}" ~
             "            attribute of "
             sch:name [ ]
             " is required."
           ]
           "\x{a}" ~
           "            "
         ]
         "\x{a}" ~
         "         "
       ],
    empty
  }
cust_choice =
  
  ## (choice) groups a number of alternative encodings for the same point in a text. [3.5. Simple Editorial Changes]
  element tei:choice {
    (cust_model.choicePart | cust_choice)+,
    cust_att.global.attributes,
    empty
  }
cust_name =
  
  ## (name, proper noun) contains a proper noun or noun phrase. [3.6.1. Referring Strings]
  element tei:name {
    cust_macro.phraseSeq,
    cust_att.global.attributes,
    cust_att.personal.attributes,
    cust_att.datable.attributes,
    cust_att.editLike.attributes,
    cust_att.typed.attributes,
    empty
  }
cust_rs =
  
  ## (referencing string) contains a general purpose name or referring string. [13.2.1. Personal Names 3.6.1. Referring Strings]
  element tei:rs {
    cust_macro.phraseSeq,
    cust_att.global.attributes,
    cust_att.naming.attributes,
    cust_att.typed.attributes,
    empty
  }
cust_email =
  
  ## (electronic mail address) contains an email address identifying a location to which email messages can be delivered. [3.6.2. Addresses]
  element tei:email {
    cust_macro.phraseSeq, cust_att.global.attributes, empty
  }
cust_address =
  
  ## (address) contains a postal address, for example of a publisher, an organization, or an individual. [3.6.2. Addresses 2.2.4. Publication, Distribution, Licensing, etc. 3.12.2.4. Imprint, Size of a Document, and Reprint Information]
  element tei:address {
    (cust_model.global*, (cust_model.addrPart, cust_model.global*)+),
    cust_att.global.attributes,
    empty
  }
cust_addrLine =
  
  ## (address line) contains one line of a postal address. [3.6.2. Addresses 2.2.4. Publication, Distribution, Licensing, etc. 3.12.2.4. Imprint, Size of a Document, and Reprint Information]
  element tei:addrLine {
    cust_macro.phraseSeq, cust_att.global.attributes, empty
  }
cust_street =
  
  ## contains a full street address including any name or number identifying a building as well as the name of the street or route on which it is located. [3.6.2. Addresses]
  element tei:street {
    cust_macro.phraseSeq, cust_att.global.attributes, empty
  }
cust_postCode =
  
  ## (postal code) contains a numerical or alphanumeric code used as part of a postal address to simplify sorting or delivery of mail. [3.6.2. Addresses]
  element tei:postCode { text, cust_att.global.attributes, empty }
cust_postBox =
  
  ## (postal box or post office box) contains a number or other identifier for some postal delivery point other than a street address. [3.6.2. Addresses]
  element tei:postBox { text, cust_att.global.attributes, empty }
cust_num =
  
  ## (number) contains a number, written in any form. [3.6.3. Numbers and
  ## Measures]
  element tei:num {
    cust_macro.phraseSeq,
    cust_att.global.attributes,
    cust_att.typed.attribute.subtype,
    cust_att.ranging.attributes,
    
    ## indicates the type of numeric value.
    ## Suggested values include: 1] cardinal; 2] ordinal; 3] fraction; 4] percentage
    attribute type {
      
      ## absolute number, e.g. 21, 21.5
      "cardinal"
      | 
        ## ordinal number, e.g. 21st
        "ordinal"
      | 
        ## fraction, e.g. one half or three-quarters
        "fraction"
      | 
        ## a percentage
        "percentage"
      | xsd:token { pattern = "[^\p{C}\p{Z}]+" }
    }?,
    
    ## supplies the value of the number in standard form.
    attribute value {
      xsd:double
      | xsd:token { pattern = "(\-?[\d]+/\-?[\d]+)" }
      | xsd:decimal
    }?,
    empty
  }
cust_unit =
  
  ## contains a symbol, a word or a phrase referring to a unit of measurement in any kind of formal or informal system. [3.6.3. Numbers and
  ## Measures]
  element tei:unit {
    cust_macro.phraseSeq,
    cust_att.global.attributes,
    cust_att.typed.attributes,
    cust_att.measurement.attributes,
    empty
  }
cust_date =
  
  ## (date) contains a date in any format. [3.6.4. Dates and Times 2.2.4. Publication, Distribution, Licensing, etc. 2.6. The Revision Description 3.12.2.4. Imprint, Size of a Document, and Reprint Information 15.2.3. The Setting Description 13.4. Dates]
  element tei:date {
    (text | cust_model.gLike | cust_model.phrase | cust_model.global)*,
    cust_att.global.attributes,
    cust_att.canonical.attributes,
    cust_att.datable.attributes,
    cust_att.editLike.attributes,
    cust_att.dimensions.attributes,
    cust_att.typed.attributes,
    empty
  }
cust_time =
  
  ## (time) contains a phrase defining a time of day in any format. [3.6.4. Dates and Times]
  element tei:time {
    (text | cust_model.gLike | cust_model.phrase | cust_model.global)*,
    cust_att.global.attributes,
    cust_att.datable.attributes,
    cust_att.canonical.attributes,
    cust_att.editLike.attributes,
    cust_att.dimensions.attributes,
    cust_att.typed.attributes,
    empty
  }
cust_abbr =
  
  ## (abbreviation) contains an abbreviation of any sort. [3.6.5. Abbreviations and Their Expansions]
  element tei:abbr {
    cust_macro.phraseSeq,
    cust_att.global.attributes,
    cust_att.typed.attribute.subtype,
    
    ## (type) allows the encoder to classify the abbreviation according to some convenient typology.
    ## Sample values include: 1] suspension (suspension); 2] contraction (contraction); 3] brevigraph; 4] superscription (superscription); 5] acronym (acronym); 6] title (title); 7] organization (organization); 8] geographic (geographic)
    attribute type {
      xsd:token { pattern = "[^\p{C}\p{Z}]+" }
    }?,
    empty
  }
cust_expan =
  
  ## (expansion) contains the expansion of an abbreviation. [3.6.5. Abbreviations and Their Expansions]
  element tei:expan {
    cust_macro.phraseSeq,
    cust_att.global.attributes,
    cust_att.editLike.attributes,
    empty
  }
cust_ptr =
  
  ## (pointer) defines a pointer to another location. [3.7. Simple Links and Cross-References 16.1. Links]
  element tei:ptr {
    empty
    >> sch:pattern [
         id = "tei_customization-ptr-ptrAtts-constraint-report-9"
         "\x{a}" ~
         "            "
         sch:rule [
           context = "tei:ptr"
           "\x{a}" ~
           "               "
           sch:report [
             test = "@target and @cRef"
             "Only one of the\x{a}" ~
             "attributes @target and @cRef may be supplied on "
             sch:name [ ]
             "."
           ]
           "\x{a}" ~
           "            "
         ]
         "\x{a}" ~
         "         "
       ],
    cust_att.cReferencing.attributes,
    cust_att.declaring.attributes,
    cust_att.global.attributes,
    cust_att.internetMedia.attributes,
    cust_att.pointing.attributes,
    cust_att.typed.attributes,
    empty
  }
cust_ref =
  
  ## (reference) defines a reference to another location, possibly modified by additional text or comment. [3.7. Simple Links and Cross-References 16.1. Links]
  element tei:ref {
    cust_macro.paraContent
    >> sch:pattern [
         id = "tei_customization-ref-refAtts-constraint-report-10"
         "\x{a}" ~
         "            "
         sch:rule [
           context = "tei:ref"
           "\x{a}" ~
           "               "
           sch:report [
             test = "@target and @cRef"
             "Only one of the\x{a}" ~
             "	attributes @target' and @cRef' may be supplied on "
             sch:name [ ]
             "\x{a}" ~
             "               "
           ]
           "\x{a}" ~
           "            "
         ]
         "\x{a}" ~
         "         "
       ],
    cust_att.cReferencing.attributes,
    cust_att.declaring.attributes,
    cust_att.global.attributes,
    cust_att.internetMedia.attributes,
    cust_att.pointing.attributes,
    cust_att.typed.attributes,
    empty
  }
cust_list =
  
  ## (list) contains any sequence of items organized as a list. [3.8. Lists]
  element tei:list {
    ((cust_model.divTop | cust_model.global | cust_desc*)*,
     ((cust_item, cust_model.global*)+
      | (cust_headLabel?,
         cust_headItem?,
         (cust_label,
          cust_model.global*,
          cust_item,
          cust_model.global*)+)),
     (cust_model.divBottom, cust_model.global*)*)
    >> sch:pattern [
         id =
           "tei_customization-list-gloss-list-must-have-labels-constraint-rule-10"
         "\x{a}" ~
         "            "
         sch:rule [
           context = "tei:list[@type='gloss']"
           "\x{a}" ~
           "	              "
           sch:assert [
             test = "tei:label"
             'The content of a "gloss" list should include a sequence of one or more pairs of a label element followed by an item element'
           ]
           "\x{a}" ~
           "            "
         ]
         "\x{a}" ~
         "         "
       ],
    cust_att.global.attributes,
    cust_att.sortable.attributes,
    cust_att.typed.attribute.subtype,
    
    ## (type) describes the nature of the items in the list.
    ## Suggested values include: 1] gloss (gloss); 2] index (index); 3] instructions (instructions); 4] litany (litany); 5] syllogism (syllogism)
    attribute type {
      [
        a:documentation [
          "(gloss) each list item glosses some term or concept, which is given by a "
          ns1:code [ "<label>" ]
          " element preceding the list item."
        ]
      ]
      "gloss"
      | 
        ## (index) each list item is an entry in an index such as the alphabetical topical index at the back of a print volume.
        "index"
      | 
        ## (instructions) each list item is a step in a sequence of instructions, as in a recipe.
        "instructions"
      | 
        ## (litany) each list item is one of a sequence of petitions, supplications or invocations, typically in a religious ritual.
        "litany"
      | 
        ## (syllogism) each list item is part of an argument consisting of two or more propositions and a final conclusion derived from them.
        "syllogism"
      | xsd:token { pattern = "[^\p{C}\p{Z}]+" }
    }?,
    empty
  }
cust_item =
  
  ## (item) contains one component of a list. [3.8. Lists 2.6. The Revision Description]
  element tei:item {
    cust_macro.specialPara,
    cust_att.global.attributes,
    cust_att.sortable.attributes,
    empty
  }
cust_label =
  
  ## (label) contains any label or heading used to identify part of a text, typically but not exclusively in a list or glossary. [3.8. Lists]
  element tei:label {
    cust_macro.phraseSeq,
    cust_att.global.attributes,
    cust_att.typed.attributes,
    cust_att.placement.attributes,
    cust_att.written.attributes,
    empty
  }
cust_head =
  
  ## (heading) contains any type of heading, for example the title of a section, or the heading of a list, glossary, manuscript description, etc. [4.2.1. Headings and Trailers]
  element tei:head {
    (text
     | cust_model.gLike
     | cust_model.phrase
     | cust_model.inter
     | cust_model.lLike
     | cust_model.global)*,
    cust_att.global.attributes,
    cust_att.typed.attributes,
    cust_att.placement.attributes,
    cust_att.written.attributes,
    empty
  }
cust_headLabel =
  
  ## (heading for list labels) contains the heading for the label or term column in a glossary list or similar structured list. [3.8. Lists]
  element tei:headLabel {
    cust_macro.phraseSeq, cust_att.global.attributes, empty
  }
cust_headItem =
  
  ## (heading for list items) contains the heading for the item or gloss column in a glossary list or similar structured list. [3.8. Lists]
  element tei:headItem {
    cust_macro.phraseSeq, cust_att.global.attributes, empty
  }
cust_note =
  
  ## (note) contains a note or annotation. [3.9.1. Notes and Simple Annotation 2.2.6. The Notes Statement 3.12.2.8. Notes and Statement of Language 9.3.5.4. Notes within Entries]
  element tei:note {
    cust_macro.specialPara,
    cust_att.global.attributes,
    cust_att.placement.attributes,
    cust_att.pointing.attributes,
    cust_att.typed.attributes,
    cust_att.written.attributes,
    cust_att.anchoring.attributes,
    empty
  }
cust_noteGrp =
  
  ## contains a group of notes [3.9.1.1. Encoding Grouped Notes]
  element tei:noteGrp {
    (cust_desc*, (cust_note | cust_noteGrp)+),
    cust_att.global.attributes,
    cust_att.placement.attributes,
    cust_att.pointing.attributes,
    cust_att.typed.attributes,
    cust_att.written.attributes,
    cust_att.anchoring.attributes,
    empty
  }
cust_media =
  
  ## indicates the location of any form of external media such as an audio or video clip etc. [3.10. Graphics and Other Non-textual Components]
  element tei:media {
    cust_model.descLike*,
    cust_att.typed.attributes,
    cust_att.global.attributes,
    cust_att.media.attribute.width,
    cust_att.media.attribute.height,
    cust_att.media.attribute.scale,
    cust_att.resourced.attributes,
    cust_att.declaring.attributes,
    cust_att.timed.attributes,
    
    ## (MIME media type) specifies the applicable multimedia internet mail extension (MIME) media type
    attribute mimeType {
      list {
        xsd:token { pattern = "[^\p{C}\p{Z}]+" }+
      }
    },
    empty
  }
cust_graphic =
  
  ## (graphic) indicates the location of a graphic or illustration, either forming part of a text, or providing an image of it. [3.10. Graphics and Other Non-textual Components 11.1. Digital Facsimiles]
  element tei:graphic {
    cust_model.descLike*,
    cust_att.global.attributes,
    cust_att.media.attributes,
    cust_att.resourced.attributes,
    cust_att.declaring.attributes,
    empty
  }
cust_author =
  
  ## (author) in a bibliographic reference, contains the name(s) of an author, personal or corporate, of a work; for example in the same form as that provided by a recognized bibliographic name authority. [3.12.2.2. Titles, Authors, and Editors 2.2.1. The Title Statement]
  element tei:author {
    cust_macro.phraseSeq,
    cust_att.global.attributes,
    cust_att.naming.attributes,
    cust_att.datable.attributes,
    empty
  }
cust_editor =
  
  ## contains a secondary statement of responsibility for a bibliographic item, for example the name of an individual, institution or organization, (or of several such) acting as editor, compiler, translator, etc. [3.12.2.2. Titles, Authors, and Editors]
  element tei:editor {
    cust_macro.phraseSeq,
    cust_att.global.attributes,
    cust_att.naming.attributes,
    cust_att.datable.attributes,
    empty
  }
cust_respStmt =
  
  ## (statement of responsibility) supplies a statement of responsibility for the intellectual content of a text, edition, recording, or series, where the specialized elements for authors, editors, etc. do not suffice or do not apply. May also be used to encode information about individuals or organizations which have played a role in the production or distribution of a bibliographic work. [3.12.2.2. Titles, Authors, and Editors 2.2.1. The Title Statement 2.2.2. The Edition Statement 2.2.5. The Series Statement]
  element tei:respStmt {
    (((cust_resp+, cust_model.nameLike.agent+)
      | (cust_model.nameLike.agent+, cust_resp+)),
     cust_note*),
    cust_att.global.attributes,
    cust_att.canonical.attributes,
    empty
  }
cust_resp =
  
  ## (responsibility) contains a phrase describing the nature of a person's intellectual responsibility, or an organization's role in the production or distribution of a work. [3.12.2.2. Titles, Authors, and Editors 2.2.1. The Title Statement 2.2.2. The Edition Statement 2.2.5. The Series Statement]
  element tei:resp {
    cust_macro.phraseSeq.limited,
    cust_att.global.attributes,
    cust_att.canonical.attributes,
    cust_att.datable.attributes,
    empty
  }
cust_title =
  
  ## (title) contains a title for any kind of work. [3.12.2.2. Titles, Authors, and Editors 2.2.1. The Title Statement 2.2.5. The Series Statement]
  element tei:title {
    cust_macro.paraContent,
    cust_att.global.attributes,
    cust_att.typed.attribute.subtype,
    cust_att.canonical.attributes,
    cust_att.datable.attributes,
    
    ## classifies the title according to some convenient typology.
    ## Sample values include: 1] main; 2] sub (subordinate); 3] alt (alternate); 4] short; 5] desc (descriptive)
    attribute type {
      xsd:token { pattern = "[^\p{C}\p{Z}]+" }
    }?,
    
    ## indicates the bibliographic level for a title, that is, whether it identifies an article, book, journal, series, or unpublished material.
    attribute level {
      
      ## (analytic) the title applies to an analytic item, such as an article, poem, or other work published as part of a larger item.
      "a"
      | 
        ## (monographic) the title applies to a monograph such as a book or other item considered to be a distinct publication, including single volumes of multi-volume works
        "m"
      | 
        ## (journal) the title applies to any serial or periodical publication such as a journal, magazine, or newspaper
        "j"
      | 
        ## (series) the title applies to a series of otherwise distinct publications such as a collection
        "s"
      | 
        ## (unpublished) the title applies to any unpublished material (including theses and dissertations unless published by a commercial press)
        "u"
    }?,
    empty
  }
cust_meeting =
  
  ## contains the formalized descriptive title for a meeting or conference, for use in a bibliographic description for an item derived from such a meeting, or as a heading or preamble to publications emanating from it. [3.12.2.2. Titles, Authors, and Editors]
  element tei:meeting {
    cust_macro.limitedContent,
    cust_att.global.attributes,
    cust_att.datable.attributes,
    cust_att.canonical.attributes,
    empty
  }
cust_publisher =
  
  ## (publisher) provides the name of the organization responsible for the publication or distribution of a bibliographic item. [3.12.2.4. Imprint, Size of a Document, and Reprint Information 2.2.4. Publication, Distribution, Licensing, etc.]
  element tei:publisher {
    cust_macro.phraseSeq,
    cust_att.global.attributes,
    cust_att.canonical.attributes,
    empty
  }
cust_biblScope =
  
  ## (scope of bibliographic reference) defines the scope of a bibliographic reference, for example as a list of page numbers, or a named subdivision of a larger work. [3.12.2.5. Scopes and Ranges in Bibliographic Citations]
  element tei:biblScope {
    cust_macro.phraseSeq,
    cust_att.global.attributes,
    cust_att.citing.attributes,
    empty
  }
cust_citedRange =
  
  ## (cited range) defines the range of cited content, often represented by pages or other units [3.12.2.5. Scopes and Ranges in Bibliographic Citations]
  element tei:citedRange {
    cust_macro.phraseSeq,
    cust_att.global.attributes,
    cust_att.pointing.attributes,
    cust_att.citing.attributes,
    empty
  }
cust_pubPlace =
  
  ## (publication place) contains the name of the place where a bibliographic item was published. [3.12.2.4. Imprint, Size of a Document, and Reprint Information]
  element tei:pubPlace {
    cust_macro.phraseSeq,
    cust_att.global.attributes,
    cust_att.naming.attributes,
    empty
  }
cust_bibl =
  
  ## (bibliographic citation) contains a loosely-structured bibliographic citation of which the sub-components may or may not be explicitly tagged. [3.12.1. Methods of Encoding Bibliographic References and Lists of References 2.2.7. The Source Description 15.3.2. Declarable Elements]
  element tei:bibl {
    (text
     | cust_model.gLike
     | cust_model.highlighted
     | cust_model.pPart.data
     | cust_model.pPart.edit
     | cust_model.segLike
     | cust_model.ptrLike
     | cust_model.biblPart
     | cust_model.global)*,
    cust_att.global.attributes,
    cust_att.declarable.attributes,
    cust_att.typed.attributes,
    cust_att.sortable.attributes,
    cust_att.docStatus.attributes,
    empty
  }
cust_relatedItem =
  
  ## contains or references some other bibliographic item which is related to the present one in some specified manner, for example as a constituent or alternative version of it. [3.12.2.7. Related Items]
  element tei:relatedItem {
    ((cust_model.biblLike | cust_model.ptrLike)?)
    >> sch:pattern [
         id =
           "tei_customization-relatedItem-targetorcontent1-constraint-report-11"
         "\x{a}" ~
         "            "
         sch:rule [
           context = "tei:relatedItem"
           "\x{a}" ~
           "               "
           sch:report [
             test = "@target and count( child::* ) > 0"
             "\x{a}" ~
             "If the @target attribute on "
             sch:name [ ]
             " is used, the\x{a}" ~
             "relatedItem element must be empty"
           ]
           "\x{a}" ~
           "               "
           sch:assert [
             test = "@target or child::*"
             "A relatedItem element should have either a 'target' attribute\x{a}" ~
             "        or a child element to indicate the related bibliographic item"
           ]
           "\x{a}" ~
           "            "
         ]
         "\x{a}" ~
         "         "
       ],
    cust_att.global.attributes,
    cust_att.typed.attributes,
    
    ## points to the related bibliographic element by means of an absolute or relative URI reference
    attribute target { xsd:anyURI }?,
    empty
  }
cust_divGen =
  
  ## (automatically generated text division) indicates the location at which a textual division generated automatically by a text-processing application is to appear. [3.9.2. Index Entries]
  element tei:divGen {
    cust_model.headLike*,
    cust_att.global.attributes,
    cust_att.typed.attribute.subtype,
    
    ##
    attribute type {
      
      ## (Catalogue of Attributes) 
      "attcat"
      | 
        ## (Catalogue of Attribute Classes) 
        "attclasscat"
      | 
        ## (Catalogue of Elements) 
        "elementcat"
      | 
        ## (Catalogue of Macros) 
        "macrocat"
      | 
        ## (Catalogue of Model Classes) 
        "modelclasscat"
      | 
        ## (Catalogue of Deprecations) 
        "deprecationcat"
      | 
        ## (Table of Contents) 
        "toc"
    }?,
    empty
  }
cust_textLang =
  
  ## (text language) describes the languages and writing systems identified within the bibliographic work being described, rather than its description. [3.12.2.4. Imprint, Size of a Document, and Reprint Information 10.6.6. Languages and Writing Systems]
  element tei:textLang {
    cust_macro.phraseSeq,
    cust_att.global.attributes,
    
    ## (main language) supplies a code which identifies the chief language used in the bibliographic work.
    attribute mainLang {
      xsd:language
      | (
         ##
         "")
    }?,
    
    ## (other languages) one or more codes identifying any other languages used in the bibliographic work.
    attribute otherLangs {
      list {
        (xsd:language
         | (
            ##
            ""))*
      }
    }?,
    empty
  }
cust_att.patternReplacement.attributes =
  cust_att.patternReplacement.attribute.matchPattern,
  cust_att.patternReplacement.attribute.replacementPattern
cust_att.patternReplacement.attribute.matchPattern =
  
  ## specifies a regular expression against which the values of other attributes can be matched.
  attribute matchPattern { xsd:token }
cust_att.patternReplacement.attribute.replacementPattern =
  [
    a:documentation [
      "specifies a replacement pattern, that is, the skeleton of a relative or absolute URI containing references to groups in the "
      ns1:code [ "@matchPattern" ]
      " which, once subpattern substitution has been performed, complete the URI."
    ]
  ]
  attribute replacementPattern { text }
cust_teiHeader =
  
  ## (TEI header) supplies descriptive and declarative metadata associated with a digital resource or set of resources. [2.1.1. The TEI Header and Its Components 15.1. Varieties of Composite Text]
  element tei:teiHeader {
    (cust_fileDesc, cust_model.teiHeaderPart*, cust_revisionDesc?),
    cust_att.global.attributes,
    empty
  }
cust_fileDesc =
  
  ## (file description) contains a full bibliographic description of an electronic file. [2.2. The File Description 2.1.1. The TEI Header and Its Components]
  element tei:fileDesc {
    ((cust_titleStmt,
      cust_editionStmt?,
      cust_extent?,
      cust_publicationStmt,
      cust_seriesStmt*,
      cust_notesStmt?),
     cust_sourceDesc+),
    cust_att.global.attributes,
    empty
  }
cust_titleStmt =
  
  ## (title statement) groups information about the title of a work and those responsible for its content. [2.2.1. The Title Statement 2.2. The File Description]
  element tei:titleStmt {
    (cust_title+, cust_model.respLike*),
    cust_att.global.attributes,
    empty
  }
cust_sponsor =
  
  ## (sponsor) specifies the name of a sponsoring organization or institution. [2.2.1. The Title Statement]
  element tei:sponsor {
    cust_macro.phraseSeq.limited,
    cust_att.global.attributes,
    cust_att.canonical.attributes,
    cust_att.datable.attributes,
    empty
  }
cust_funder =
  
  ## (funding body) specifies the name of an individual, institution, or organization responsible for the funding of a project or text. [2.2.1. The Title Statement]
  element tei:funder {
    cust_macro.phraseSeq.limited,
    cust_att.global.attributes,
    cust_att.canonical.attributes,
    cust_att.datable.attributes,
    empty
  }
cust_principal =
  
  ## (principal researcher) supplies the name of the principal researcher responsible for the creation of an electronic text. [2.2.1. The Title Statement]
  element tei:principal {
    cust_macro.phraseSeq.limited,
    cust_att.global.attributes,
    cust_att.canonical.attributes,
    cust_att.datable.attributes,
    empty
  }
cust_editionStmt =
  
  ## (edition statement) groups information relating to one edition of a text. [2.2.2. The Edition Statement 2.2. The File Description]
  element tei:editionStmt {
    (cust_model.pLike+ | (cust_edition, cust_model.respLike*)),
    cust_att.global.attributes,
    empty
  }
cust_edition =
  
  ## (edition) describes the particularities of one edition of a text. [2.2.2. The Edition Statement]
  element tei:edition {
    cust_macro.phraseSeq, cust_att.global.attributes, empty
  }
cust_extent =
  
  ## (extent) describes the approximate size of a text stored on some carrier medium or of some other object, digital or non-digital, specified in any convenient units. [2.2.3. Type and Extent of File 2.2. The File Description 3.12.2.4. Imprint, Size of a Document, and Reprint Information 10.7.1. Object Description]
  element tei:extent {
    cust_macro.phraseSeq, cust_att.global.attributes, empty
  }
cust_publicationStmt =
  
  ## (publication statement) groups information concerning the publication or distribution of an electronic or other text. [2.2.4. Publication, Distribution, Licensing, etc. 2.2. The File Description]
  element tei:publicationStmt {
    ((cust_model.publicationStmtPart.agency,
      cust_model.publicationStmtPart.detail*)+
     | cust_model.pLike+),
    cust_att.global.attributes,
    empty
  }
cust_distributor =
  
  ## (distributor) supplies the name of a person or other agency responsible for the distribution of a text. [2.2.4. Publication, Distribution, Licensing, etc.]
  element tei:distributor {
    cust_macro.phraseSeq,
    cust_att.global.attributes,
    cust_att.canonical.attributes,
    empty
  }
cust_authority =
  
  ## (release authority) supplies the name of a person or other agency responsible for making a work available, other than a publisher or distributor. [2.2.4. Publication, Distribution, Licensing, etc.]
  element tei:authority {
    cust_macro.phraseSeq.limited,
    cust_att.global.attributes,
    cust_att.canonical.attributes,
    empty
  }
cust_idno =
  
  ## (identifier) supplies any form of identifier used to identify some object, such as a bibliographic item, a person, a title, an organization, etc. in a standardized way. [13.3.1. Basic Principles 2.2.4. Publication, Distribution, Licensing, etc. 2.2.5. The Series Statement 3.12.2.4. Imprint, Size of a Document, and Reprint Information]
  element tei:idno {
    (text | cust_model.gLike | cust_idno)*,
    cust_att.global.attributes,
    cust_att.sortable.attributes,
    cust_att.datable.attributes,
    cust_att.typed.attribute.subtype,
    
    ## 
    ## Suggested values include: 1] doi (Digital Object Identifier); 2] isbn (International Standard Book Number); 3] url
    attribute type {
      
      ## (Digital Object Identifier) 
      "doi"
      | 
        ## (International Standard Book Number) 
        "isbn"
      | 
        ## any form of web address
        "url"
      | xsd:token { pattern = "[^\p{C}\p{Z}]+" }
    }?,
    empty
  }
cust_availability =
  
  ## (availability) supplies information about the availability of a text, for example any restrictions on its use or distribution, its copyright status, any licence applying to it, etc. [2.2.4. Publication, Distribution, Licensing, etc.]
  element tei:availability {
    (cust_model.availabilityPart | cust_model.pLike)+,
    cust_att.global.attributes,
    cust_att.declarable.attributes,
    
    ## (status) supplies a code identifying the current availability of the text.
    attribute status {
      
      ## (free) the text is freely available.
      "free"
      | 
        ## (unknown) the status of the text is unknown.
        "unknown"
      | 
        ## (restricted) the text is not freely available.
        "restricted"
    }?,
    empty
  }
cust_licence =
  
  ## contains information about a licence or other legal agreement applicable to the text. [2.2.4. Publication, Distribution, Licensing, etc.]
  element tei:licence {
    cust_macro.specialPara,
    cust_att.global.attributes,
    cust_att.pointing.attributes,
    cust_att.datable.attributes,
    empty
  }
cust_seriesStmt =
  
  ## (series statement) groups information about the series, if any, to which a publication belongs. [2.2.5. The Series Statement 2.2. The File Description]
  element tei:seriesStmt {
    (cust_model.pLike+
     | (cust_title+,
        (cust_editor | cust_respStmt)*,
        (cust_idno | cust_biblScope)*)),
    cust_att.global.attributes,
    cust_att.declarable.attributes,
    empty
  }
cust_notesStmt =
  
  ## (notes statement) collects together any notes providing information about a text additional to that recorded in other parts of the bibliographic description. [2.2.6. The Notes Statement 2.2. The File Description]
  element tei:notesStmt {
    (cust_model.noteLike | cust_relatedItem)+,
    cust_att.global.attributes,
    empty
  }
cust_sourceDesc =
  
  ## (source description) describes the source(s) from which an electronic text was derived or generated, typically a bibliographic description in the case of a digitized text, or a phrase such as "born digital" for a text which has no previous existence. [2.2.7. The Source Description]
  element tei:sourceDesc {
    (cust_model.pLike+
     | (cust_model.biblLike
        | cust_model.sourceDescPart
        | cust_model.listLike)+),
    cust_att.global.attributes,
    cust_att.declarable.attributes,
    empty
  }
cust_biblFull =
  
  ## (fully-structured bibliographic citation) contains a fully-structured bibliographic citation, in which all components of the TEI file description are present. [3.12.1. Methods of Encoding Bibliographic References and Lists of References 2.2. The File Description 2.2.7. The Source Description 15.3.2. Declarable Elements]
  element tei:biblFull {
    (((cust_titleStmt,
       cust_editionStmt?,
       cust_extent?,
       cust_publicationStmt,
       cust_seriesStmt*,
       cust_notesStmt?),
      cust_sourceDesc*)
     | cust_fileDesc),
    cust_att.global.attributes,
    cust_att.declarable.attributes,
    cust_att.sortable.attributes,
    cust_att.docStatus.attributes,
    empty
  }
cust_encodingDesc =
  
  ## (encoding description) documents the relationship between an electronic text and the source or sources from which it was derived. [2.3. The Encoding Description 2.1.1. The TEI Header and Its Components]
  element tei:encodingDesc {
    (cust_model.encodingDescPart | cust_model.pLike)+,
    cust_att.global.attributes,
    empty
  }
cust_schemaRef =
  
  ## (schema reference) describes or points to a related customization or schema file [2.3.10. The Schema Specification]
  element tei:schemaRef {
    cust_model.descLike?,
    cust_att.global.attributes,
    cust_att.typed.attributes,
    cust_att.resourced.attributes,
    
    ## the identifier used for the customization or schema
    attribute key { xsd:NCName }?,
    empty
  }
cust_projectDesc =
  
  ## (project description) describes in detail the aim or purpose for which an electronic file was encoded, together with any other relevant information concerning the process by which it was assembled or collected. [2.3.1. The Project Description 2.3. The Encoding Description 15.3.2. Declarable Elements]
  element tei:projectDesc {
    cust_model.pLike+,
    cust_att.global.attributes,
    cust_att.declarable.attributes,
    empty
  }
cust_styleDefDecl =
  
  ## (style definition language declaration) specifies the name of the formal language in which style or renditional information is supplied elsewhere in the document. The specific version of the scheme may also be supplied. [2.3.5. The Default Style Definition Language Declaration]
  element tei:styleDefDecl {
    cust_model.pLike*,
    cust_att.global.attributes,
    cust_att.declarable.attributes,
    cust_att.styleDef.attributes,
    empty
  }
cust_citeStructure =
  
  ## (citation structure) declares a structure and method for citing the current document. [3.11.4. Declaring Reference Systems 16.2.5.4. Citation Structures]
  element tei:citeStructure {
    (cust_citeData*, cust_citeStructure*, cust_model.descLike*),
    cust_att.global.attributes,
    cust_att.citeStructurePart.attributes,
    (
     ## (delimiter) supplies a delimiting string preceding the structural component.
     attribute delim {
       xsd:string { pattern = ".+" }
     }?)
    >> sch:pattern [
         id =
           "tei_customization-citeStructure-delim-citestructure-inner-delim-constraint-rule-11"
         "\x{a}" ~
         "            "
         sch:rule [
           context = "tei:citeStructure[parent::tei:citeStructure]"
           "\x{a}" ~
           "               "
           sch:assert [
             test = "@delim"
             "A "
             sch:name [ ]
             " with a parent "
             sch:name [ ]
             " must have a @delim attribute."
           ]
           "\x{a}" ~
           "            "
         ]
         "\x{a}" ~
         "         "
       ],
    [
      a:documentation [
        "(match) supplies an XPath selection pattern using the syntax defined in  which identifies a set of nodes which are citable structural components. The expression may be absolute (beginning with ) or relative. "
        ns1:code [ "@match" ]
        " on a "
        ns1:code [ "<citeStructure>" ]
        " without a "
        ns1:code [ "<citeStructure>" ]
        " parent must be an absolute XPath. If it is relative, its context is set by the "
        ns1:code [ "@match" ]
        " of the parent "
        ns1:code [ "<citeStructure>" ]
        "."
      ]
    ]
    attribute match { text }
    >> sch:pattern [
         id =
           "tei_customization-citeStructure-match-citestructure-outer-match-constraint-rule-12"
         "\x{a}" ~
         "            "
         sch:rule [
           context = "tei:citeStructure[not(parent::tei:citeStructure)]"
           "\x{a}" ~
           "               "
           sch:assert [
             test = "starts-with(@match,'/')"
             "An XPath in @match on the outer "
             sch:name [ ]
             " must start with '/'."
           ]
           "\x{a}" ~
           "            "
         ]
         "\x{a}" ~
         "         "
       ]
    >> sch:pattern [
         id =
           "tei_customization-citeStructure-match-citestructure-inner-match-constraint-rule-13"
         "\x{a}" ~
         "            "
         sch:rule [
           context = "tei:citeStructure[parent::tei:citeStructure]"
           "\x{a}" ~
           "               "
           sch:assert [
             test = "not(starts-with(@match,'/'))"
             "An XPath in @match must not start with '/' except on the outer "
             sch:name [ ]
             "."
           ]
           "\x{a}" ~
           "            "
         ]
         "\x{a}" ~
         "         "
       ],
    [
      a:documentation [
        "(unit) describes the structural unit indicated by the "
        ns1:code [ "<citeStructure>" ]
        ".\x{a}" ~
        "Sample values include: 1] book; 2] chapter; 3] entry; 4] poem; 5] letter; 6] line; 7] section; 8] verse; 9] volume"
      ]
    ]
    attribute unit {
      xsd:token { pattern = "[^\p{C}\p{Z}]+" }
    }?,
    empty
  }
cust_citeData =
  
  ## (citation data) specifies how information may be extracted from citation structures. [3.11.4. Declaring Reference Systems 16.2.5.4. Citation Structures]
  element tei:citeData {
    empty,
    cust_att.global.attributes,
    cust_att.citeStructurePart.attributes,
    
    ## (property) A URI indicating a property definition.
    attribute property { xsd:anyURI },
    empty
  }
cust_prefixDef =
  
  ## (prefix definition) defines a prefixing scheme used in teidata.pointer values, showing how abbreviated URIs using the scheme may be expanded into full URIs. [16.2.3. Using Abbreviated Pointers]
  element tei:prefixDef {
    cust_model.pLike*,
    cust_att.global.attributes,
    cust_att.patternReplacement.attributes,
    
    ## supplies a name which functions as the prefix for an abbreviated pointing scheme such as a private URI scheme. The prefix constitutes the text preceding the first colon.
    attribute ident {
      xsd:token { pattern = "[a-z][a-z0-9\+\.\-]*" }
    },
    empty
  }
cust_listPrefixDef =
  
  ## (list of prefix definitions) contains a list of definitions of prefixing schemes used in teidata.pointer values, showing how abbreviated URIs using each scheme may be expanded into full URIs. [16.2.3. Using Abbreviated Pointers]
  element tei:listPrefixDef {
    (cust_desc*, (cust_prefixDef | cust_listPrefixDef)+),
    cust_att.global.attributes,
    empty
  }
cust_unitDecl =
  
  ## (unit declarations) provides information about units of measurement that are not members of the International System of Units. [2.3.9. The Unit Declaration]
  element tei:unitDecl {
    cust_unitDef+,
    cust_att.canonical.attributes,
    cust_att.datable.attributes,
    cust_att.global.attributes,
    empty
  }
cust_unitDef =
  
  ## (unit definition) contains descriptive information related to a specific unit of measurement. [2.3.9. The Unit Declaration]
  element tei:unitDef {
    (cust_model.labelLike
     | cust_model.placeNamePart?
     | cust_conversion?
     | cust_unit?)+,
    cust_att.global.attributes,
    cust_att.datable.attributes,
    cust_att.canonical.attributes,
    cust_att.typed.attributes,
    empty
  }
cust_conversion =
  
  ## defines how to calculate one unit of measure in terms of another. [2.3.9. The Unit Declaration]
  element tei:conversion {
    empty,
    cust_att.global.attributes,
    cust_att.datable.attributes,
    cust_att.formula.attributes,
    [
      a:documentation [
        "indicates a source unit of measure that is to be converted into another unit indicated in "
        ns1:code [ "@toUnit" ]
        "."
      ]
    ]
    attribute fromUnit { xsd:anyURI },
    [
      a:documentation [
        "the target unit of measurement for a conversion from a source unit referenced in "
        ns1:code [ "@fromUnit" ]
        "."
      ]
    ]
    attribute toUnit { xsd:anyURI },
    empty
  }
cust_calendar =
  
  ## (calendar) describes a calendar or dating system used in a dating formula in the text. [2.4.5. Calendar Description]
  element tei:calendar {
    cust_model.pLike+,
    cust_att.global.attributes,
    cust_att.pointing.attributes,
    empty
  }
cust_correspAction =
  
  ## (correspondence action) contains a structured description of the place, the name of a person/organization and the date related to the sending/receiving of a message or any other action related to the correspondence. [2.4.6. Correspondence Description]
  element tei:correspAction {
    (cust_model.correspActionPart+ | cust_model.pLike+),
    cust_att.global.attributes,
    cust_att.typed.attribute.subtype,
    cust_att.sortable.attributes,
    
    ## describes the nature of the action.
    ## Suggested values include: 1] sent; 2] received; 3] transmitted; 4] redirected; 5] forwarded
    attribute type {
      
      ## information concerning the sending or dispatch of a message.
      "sent"
      | 
        ## information concerning the receipt of a message.
        "received"
      | 
        ## information concerning the transmission of a message, i.e. between the dispatch and the next receipt, redirect or forwarding.
        "transmitted"
      | 
        ## information concerning the redirection of an unread message.
        "redirected"
      | 
        ## information concerning the forwarding of a message.
        "forwarded"
      | xsd:token { pattern = "[^\p{C}\p{Z}]+" }
    }?,
    empty
  }
cust_correspContext =
  
  ## (correspondence context) provides references to preceding or following correspondence related to this piece of correspondence. [2.4.6. Correspondence Description]
  element tei:correspContext {
    cust_model.correspContextPart+, cust_att.global.attributes, empty
  }
cust_xenoData =
  
  ## (non-TEI metadata) provides a container element into which metadata in non-TEI formats may be placed. [2.5. Non-TEI Metadata]
  element tei:xenoData {
    (text | anyElement-xenoData),
    cust_att.global.attributes,
    cust_att.declarable.attributes,
    cust_att.typed.attributes,
    empty
  }
cust_revisionDesc =
  
  ## (revision description) summarizes the revision history for a file. [2.6. The Revision Description 2.1.1. The TEI Header and Its Components]
  element tei:revisionDesc {
    (cust_list | cust_listChange | cust_change+),
    cust_att.global.attributes,
    cust_att.docStatus.attributes,
    empty
  }
cust_change =
  
  ## (change) documents a change or set of changes made during the production of a source document, or during the revision of an electronic file. [2.6. The Revision Description 2.4.1. Creation 11.7. Identifying Changes and Revisions]
  element tei:change {
    cust_macro.specialPara,
    cust_att.ascribed.attributes,
    cust_att.datable.attributes,
    cust_att.docStatus.attributes,
    cust_att.global.attributes,
    cust_att.typed.attributes,
    
    ## (target) points to one or more elements that belong to this change.
    attribute target {
      list { xsd:anyURI+ }
    }?,
    empty
  }
cust_listChange =
  
  ## groups a number of change descriptions associated with either the creation of a source text or the revision of an encoded text. [2.6. The Revision Description 11.7. Identifying Changes and Revisions]
  element tei:listChange {
    (cust_desc*, (cust_listChange | cust_change)+),
    cust_att.global.attributes,
    cust_att.sortable.attributes,
    cust_att.typed.attributes,
    [
      a:defaultValue = "true"
      a:documentation [
        "indicates whether the ordering of its child "
        ns1:code [ "<change>" ]
        " elements is to be considered significant or not"
      ]
    ]
    attribute ordered { xsd:boolean }?,
    empty
  }
cust_TEI =
  [
    a:documentation [
      "(TEI document) contains a single TEI-conformant document, combining a single TEI header with one or more members of the model.resource class. Multiple "
      ns1:code [ "<TEI>" ]
      " elements may be combined within a "
      ns1:code [ "<TEI>" ]
      " (or "
      ns1:code [ "<teiCorpus>" ]
      ") element. [4. Default Text Structure 15.1. Varieties of Composite Text]"
    ]
  ]
  element tei:TEI {
    (cust_teiHeader,
     ((cust_model.resource+, cust_TEI*) | cust_TEI+))
    >> sch:ns [ prefix = "tei" uri = "http://www.tei-c.org/ns/1.0" ]
    >> sch:ns [ prefix = "xs" uri = "http://www.w3.org/2001/XMLSchema" ]
    >> sch:ns [
         prefix = "rng"
         uri = "http://relaxng.org/ns/structure/1.0"
       ],
    cust_att.global.attributes,
    cust_att.typed.attributes,
    
    ## specifies the version number of the TEI Guidelines against which this document is valid.
    attribute version {
      xsd:token { pattern = "[\d]+(\.[\d]+){0,2}" }
    }?,
    empty
  }
cust_text =
  
  ## (text) contains a single text of any kind, whether unitary or composite, for example a poem or drama, a collection of essays, a novel, a dictionary, or a corpus sample. [4. Default Text Structure 15.1. Varieties of Composite Text]
  element tei:text {
    (cust_model.global*,
     (cust_front, cust_model.global*)?,
     (cust_body),
     cust_model.global*,
     (cust_back, cust_model.global*)?),
    cust_att.global.attributes,
    cust_att.declaring.attributes,
    cust_att.typed.attributes,
    cust_att.written.attributes,
    empty
  }
cust_body =
  
  ## (text body) contains the whole body of a single unitary text, excluding any front or back matter. [4. Default Text Structure]
  element tei:body {
    (cust_model.global*,
     (cust_model.divTop, (cust_model.global | cust_model.divTop)*)?,
     (cust_model.divGenLike,
      (cust_model.global | cust_model.divGenLike)*)?,
     ((cust_model.divLike,
       (cust_model.global | cust_model.divGenLike)*)+
      | (cust_model.div1Like,
         (cust_model.global | cust_model.divGenLike)*)+
      | ((cust_model.common, cust_model.global*)+,
         ((cust_model.divLike,
           (cust_model.global | cust_model.divGenLike)*)+
          | (cust_model.div1Like,
             (cust_model.global | cust_model.divGenLike)*)+)?)),
     (cust_model.divBottom, cust_model.global*)*),
    cust_att.global.attributes,
    cust_att.declaring.attributes,
    empty
  }
cust_div =
  
  ## (text division) contains a subdivision of the front, body, or back of a text. [4.1. Divisions of the Body]
  element tei:div {
    ((cust_model.divTop | cust_model.global)*,
     ((((cust_model.divLike | cust_model.divGenLike),
        cust_model.global*)+
       | ((cust_model.common, cust_model.global*)+,
          ((cust_model.divLike | cust_model.divGenLike),
           cust_model.global*)*)),
      (cust_model.divBottom, cust_model.global*)*)?)
    >> sch:pattern [
         id =
           "tei_customization-div-abstractModel-structure-l-constraint-report-12"
         "\x{a}" ~
         "            "
         sch:rule [
           context = "tei:div"
           "\x{a}" ~
           "               "
           sch:report [
             test = "ancestor::tei:l"
             "\x{a}" ~
             "        Abstract model violation: Lines may not contain higher-level structural elements such as div.\x{a}" ~
             "      "
           ]
           "\x{a}" ~
           "            "
         ]
         "\x{a}" ~
         "         "
       ]
    >> sch:pattern [
         id =
           "tei_customization-div-abstractModel-structure-p-constraint-report-13"
         "\x{a}" ~
         "            "
         sch:rule [
           context = "tei:div"
           "\x{a}" ~
           "               "
           sch:report [
             test =
               "ancestor::tei:p or ancestor::tei:ab and not(ancestor::tei:floatingText)"
             "\x{a}" ~
             "        Abstract model violation: p and ab may not contain higher-level structural elements such as div.\x{a}" ~
             "      "
           ]
           "\x{a}" ~
           "            "
         ]
         "\x{a}" ~
         "         "
       ],
    cust_att.global.attributes,
    cust_att.divLike.attributes,
    cust_att.typed.attribute.subtype,
    cust_att.declaring.attributes,
    cust_att.written.attributes,
    
    ## 
    ## Suggested values include: 1] section; 2] subsection; 3] subsubsection
    attribute type {
      
      ##
      "section"
      | 
        ##
        "subsection"
      | 
        ##
        "subsubsection"
      | xsd:token { pattern = "[^\p{C}\p{Z}]+" }
    }?,
    empty
  }
cust_front =
  
  ## (front matter) contains any prefatory matter (headers, abstracts, title page, prefaces, dedications, etc.) found at the start of a document, before the main body. [4.6. Title Pages 4. Default Text Structure]
  element tei:front {
    ((cust_model.frontPart
      | cust_model.pLike
      | cust_model.pLike.front
      | cust_model.global)*,
     (((cust_model.div1Like,
        (cust_model.div1Like
         | cust_model.frontPart
         | cust_model.global)*)
       | (cust_model.divLike,
          (cust_model.divLike
           | cust_model.frontPart
           | cust_model.global)*)),
      (cust_model.divBottom,
       (cust_model.divBottom | cust_model.global)*)?)?),
    cust_att.global.attributes,
    cust_att.declaring.attributes,
    empty
  }
cust_back =
  
  ## (back matter) contains any appendixes, etc. following the main part of a text. [4.7. Back Matter 4. Default Text Structure]
  element tei:back {
    ((cust_model.frontPart
      | cust_model.pLike.front
      | cust_model.pLike
      | cust_model.listLike
      | cust_model.global)*,
     ((cust_model.div1Like,
       (cust_model.frontPart
        | cust_model.div1Like
        | cust_model.global)*)
      | (cust_model.divLike,
         (cust_model.frontPart
          | cust_model.divLike
          | cust_model.global)*))?,
     (cust_model.divBottomPart,
      (cust_model.divBottomPart | cust_model.global)*)?),
    cust_att.global.attributes,
    cust_att.declaring.attributes,
    empty
  }
cust_att.translatable.attributes =
  cust_att.translatable.attribute.versionDate
cust_att.translatable.attribute.versionDate =
  
  ## specifies the date on which the source text was extracted and sent to the translator
  attribute versionDate {
    xsd:date { pattern = "(19[789][0-9]|[2-9][0-9]{3}).*" }
    | xsd:dateTime { pattern = "(19[789][0-9]|[2-9][0-9]{3}).*" }
  }?
cust_att.predicate.attributes = cust_att.predicate.attribute.predicate
cust_att.predicate.attribute.predicate =
  
  ## the condition under which the element bearing this attribute applies, given as an XPath predicate expression.
  attribute predicate { text }?
cust_att.repeatable.attributes =
  cust_att.repeatable.attribute.minOccurs,
  cust_att.repeatable.attribute.maxOccurs
cust_att.repeatable.attribute.minOccurs =
  
  ## (minimum number of occurences) indicates the smallest number of times this component may occur.
  [ a:defaultValue = "1" ]
  attribute minOccurs { xsd:nonNegativeInteger }?
cust_att.repeatable.attribute.maxOccurs =
  
  ## (maximum number of occurences) indicates the largest number of times this component may occur.
  [ a:defaultValue = "1" ]
  attribute maxOccurs {
    xsd:nonNegativeInteger
    | (
       ##
       "unbounded")
  }?
sch:pattern [
  id =
    "tei_customization-att.repeatable-MINandMAXoccurs-constraint-rule-14"
  "\x{a}" ~
  "      "
  sch:rule [
    context = "*[ @minOccurs  and  @maxOccurs ]"
    "\x{a}" ~
    "        "
    sch:let [ name = "min" value = "@minOccurs cast as xs:integer" ]
    "\x{a}" ~
    "        "
    sch:let [
      name = "max"
      value =
        "if ( normalize-space( @maxOccurs ) eq 'unbounded')                         then -1                         else @maxOccurs cast as xs:integer"
    ]
    "\x{a}" ~
    "        "
    sch:assert [
      test = "$max eq -1  or  $max ge $min"
      "@maxOccurs should be greater than or equal to @minOccurs"
    ]
    "\x{a}" ~
    "      "
  ]
  "\x{a}" ~
  "      "
  sch:rule [
    context = "*[ @minOccurs  and  not( @maxOccurs ) ]"
    "\x{a}" ~
    "        "
    sch:assert [
      test = "@minOccurs cast as xs:integer lt 2"
      "When @maxOccurs is not specified, @minOccurs must be 0 or 1"
    ]
    "\x{a}" ~
    "      "
  ]
  "\x{a}" ~
  "   "
]
cust_model.contentPart =
  cust_classRef
  | cust_elementRef
  | cust_macroRef
  | cust_sequence
  | cust_alternate
  | cust_dataRef
  | cust_textNode
  | cust_anyElement
  | cust_empty
cust_att.combinable.attributes =
  cust_att.deprecated.attributes, cust_att.combinable.attribute.mode
cust_att.combinable.attribute.mode =
  
  ## specifies the effect of this declaration on its parent object.
  [ a:defaultValue = "add" ]
  attribute mode {
    
    ## this declaration is added to the current definitions
    "add"
    | 
      ## if present already, the whole of the declaration for this object is removed from the current setup
      "delete"
    | 
      ## this declaration changes the declaration of the same name in the current definition
      "change"
    | 
      ## this declaration replaces the declaration of the same name in the current definition
      "replace"
  }?
cust_att.identified.attributes =
  cust_att.combinable.attributes,
  cust_att.identified.attribute.module,
  cust_att.identified.attribute.ident,
  cust_att.identified.attribute.predeclare
cust_att.identified.attribute.module =
  
  ##
  attribute module {
    
    ##
    "analysis"
    | 
      ##
      "certainty"
    | 
      ##
      "core"
    | 
      ##
      "corpus"
    | 
      ##
      "dictionaries"
    | 
      ##
      "drama"
    | 
      ##
      "figures"
    | 
      ##
      "gaiji"
    | 
      ##
      "header"
    | 
      ##
      "iso-fs"
    | 
      ##
      "linking"
    | 
      ##
      "msdescription"
    | 
      ##
      "namesdates"
    | 
      ##
      "nets"
    | 
      ##
      "spoken"
    | 
      ##
      "tagdocs"
    | 
      ##
      "tei"
    | 
      ##
      "textcrit"
    | 
      ##
      "textstructure"
    | 
      ##
      "transcr"
    | 
      ##
      "verse"
  }?
cust_att.identified.attribute.ident =
  
  ## supplies the identifier by which this element may be referenced.
  attribute ident { xsd:Name }
cust_att.identified.attribute.predeclare =
  
  ## says whether this object should be predeclared in the tei infrastructure module.
  [ a:defaultValue = "false" ] attribute predeclare { xsd:boolean }?
sch:pattern [
  id =
    "tei_customization-att.identified-spec-in-module-constraint-rule-16"
  "\x{a}" ~
  "      "
  sch:rule [
    context =
      "tei:elementSpec[@module]|tei:classSpec[@module]|tei:macroSpec[@module]"
    "\x{a}" ~
    "        "
    sch:assert [
      test =
        "         (not(ancestor::tei:schemaSpec | ancestor::tei:TEI | ancestor::tei:teiCorpus)) or         (not(@module) or          (not(//tei:moduleSpec) and not(//tei:moduleRef))  or         (//tei:moduleSpec[@ident = current()/@module]) or          (//tei:moduleRef[@key = current()/@module]))         "
      "\x{a}" ~
      "        Specification "
      sch:value-of [ select = "@ident" ]
      ': the value of the module attribute ("'
      sch:value-of [ select = "@module" ]
      '") \x{a}' ~
      "should correspond to an existing module, via a moduleSpec or\x{a}" ~
      "      moduleRef"
    ]
    "\x{a}" ~
    "      "
  ]
  "\x{a}" ~
  "   "
]
cust_att.deprecated.attributes =
  cust_att.deprecated.attribute.validUntil
cust_att.deprecated.attribute.validUntil =
  
  ## provides a date before which the construct being defined will not be removed.
  attribute validUntil { xsd:date }?
sch:pattern [
  id =
    "tei_customization-att.deprecated-validUntil-deprecation-two-month-warning-constraint-rule-17"
  "\x{a}" ~
  "      "
  sch:rule [
    context = "tei:*[@validUntil]"
    "\x{a}" ~
    "            "
    sch:let [
      name = "advance_warning_period"
      value = "current-date() + xs:dayTimeDuration('P60D')"
    ]
    "\x{a}" ~
    "            "
    sch:let [
      name = "me_phrase"
      value =
        "if (@ident)                                                then concat('The ', @ident )                                                else concat('This ',                                                            local-name(.),                                                            ' of ',                                                            ancestor::tei:*[@ident][1]/@ident )"
    ]
    "\x{a}" ~
    "            "
    sch:assert [
      test = "@validUntil cast as xs:date  ge  current-date()"
      "\x{a}" ~
      "              "
      sch:value-of [
        select =
          "                  concat( $me_phrase,                          ' construct is outdated (as of ',                          @validUntil,                          '); ODD processors may ignore it, and its use is no longer supported'                        )"
      ]
      "\x{a}" ~
      "         "
    ]
    "\x{a}" ~
    "              "
    sch:assert [
      role = "nonfatal"
      test = "@validUntil cast as xs:date  ge  $advance_warning_period"
      "\x{a}" ~
      "                "
      sch:value-of [
        select =
          "concat( $me_phrase, ' construct becomes outdated on ', @validUntil )"
      ]
      "\x{a}" ~
      "              "
    ]
    "\x{a}" ~
    "          "
  ]
  "\x{a}" ~
  "   "
]
sch:pattern [
  id =
    "tei_customization-att.deprecated-validUntil-deprecation-should-be-explained-constraint-rule-18"
  "\x{a}" ~
  "      "
  sch:rule [
    context =
      "tei:*[@validUntil][ not( self::valDesc | self::valList | self::defaultVal )]"
    "\x{a}" ~
    "            "
    sch:assert [
      test = "child::tei:desc[ @type eq 'deprecationInfo']"
      "\x{a}" ~
      "              A deprecated construct should include, whenever possible, an explanation, but this "
      sch:value-of [ select = "name(.)" ]
      ' does not have a child <desc type="deprecationInfo">'
    ]
    "\x{a}" ~
    "          "
  ]
  "\x{a}" ~
  "   "
]
cust_att.namespaceable.attributes = cust_att.namespaceable.attribute.ns
cust_att.namespaceable.attribute.ns =
  
  ## (namespace) specifies the namespace to which this element belongs
  [ a:defaultValue = "http://www.tei-c.org/ns/1.0" ]
  attribute ns { xsd:anyURI }?
cust_att =
  
  ## (attribute) contains the name of an attribute appearing within running text. [22. Documentation Elements]
  element tei:att {
    xsd:Name,
    cust_att.global.attributes,
    
    ## (scheme) supplies an identifier for the scheme in which this name is defined.
    ## Sample values include: 1] TEI (Text Encoding Initiative); 2] DBK (Docbook); 3] XX (unknown); 4] imaginary (imaginary); 5] XHTML (XHTML); 6] XML (XML); 7] XI (XI)
    [ a:defaultValue = "TEI" ]
    attribute scheme {
      xsd:token { pattern = "[^\p{C}\p{Z}]+" }
    }?,
    empty
  }
cust_code =
  
  ## contains literal code from some formal language such as a programming language. [22.1.1. Phrase Level Terms]
  element tei:code {
    text,
    cust_att.global.attributes,
    
    ## (formal language) a name identifying the formal language in which the code is expressed
    attribute lang {
      xsd:token { pattern = "[^\p{C}\p{Z}]+" }
    }?,
    empty
  }
cust_eg =
  
  ## (example) contains any kind of illustrative example. [22.5. Element Specifications 22.5.3. Attribute List Specification]
  element tei:eg {
    cust_macro.phraseSeq, cust_att.global.attributes, empty
  }
cust_egXML =
  [
    a:documentation [
      "(example of XML) a single XML fragment demonstrating the use of some XML, such as elements, attributes, or processing instructions, etc., in which the "
      ns1:code [ "<egXML>" ]
      " element functions as the root element. [22.1.1. Phrase Level Terms]"
    ]
  ]
  element teix:egXML {
    (text | cust_egXML | anyElement-egXML)*,
    cust_att.global.attributes,
    
    ## indicates the intended validity of the example with respect to a schema.
    [ a:defaultValue = "true" ]
    attribute valid {
      
      ## the example is intended to be fully valid, assuming that its root element, or a provided root element, could have been used as a possible root element in the schema concerned.
      "true"
      | 
        ## the example could be transformed into a valid document by inserting any number of valid attributes and child elements anywhere within it; or it is valid against a version of the schema concerned in which the provision of character data, list, element, or attribute values has been made optional.
        "feasible"
      | 
        ## the example is not intended to be valid, and contains deliberate errors.
        "false"
    }?,
    empty
  }
cust_gi =
  
  ## (element name) contains the name (generic identifier) of an element. [22. Documentation Elements 22.5. Element Specifications]
  element tei:gi {
    xsd:Name,
    cust_att.global.attributes,
    
    ## 
    ## Suggested values include: 1] imaginary; 2] extreme (Extreme conference proceedings markup); 3] DBK (Docbook); 4] SMIL; 5] Schematron; 6] HTML (XHTML); 7] SVG; 8] WWP; 9] DHQ
    attribute scheme {
      
      ##
      "imaginary"
      | 
        ## (Extreme conference proceedings markup) 
        "extreme"
      | 
        ## (Docbook) 
        "DBK"
      | 
        ##
        "SMIL"
      | 
        ##
        "Schematron"
      | 
        ## (XHTML) 
        "HTML"
      | 
        ##
        "SVG"
      | 
        ##
        "WWP"
      | 
        ##
        "DHQ"
      | xsd:token { pattern = "[^\p{C}\p{Z}]+" }
    }?,
    empty
  }
cust_ident =
  [
    a:documentation [
      "(identifier) contains an identifier or name for an object of some kind in a formal language. "
      ns1:code [ "<ident>" ]
      " is used for tokens such as variable names, class names, type names, function names etc. in formal programming languages. [22.1.1. Phrase Level Terms]"
    ]
  ]
  element tei:ident {
    text,
    cust_att.global.attributes,
    cust_att.typed.attribute.subtype,
    
    ## 
    ## Suggested values include: 1] ge (general entity name); 2] rng (RELAX NG identifier); 3] frag (DTD fragment identifier); 4] macro; 5] ns (namespace); 6] schema; 7] pe (parameter entity name); 8] datatype; 9] file; 10] module; 11] class
    attribute type {
      
      ## (general entity name) 
      "ge"
      | 
        ## (RELAX NG identifier) 
        "rng"
      | 
        ## (DTD fragment identifier) 
        "frag"
      | 
        ##
        "macro"
      | 
        ## (namespace) 
        "ns"
      | 
        ##
        "schema"
      | 
        ## (parameter entity name) 
        "pe"
      | 
        ##
        "datatype"
      | 
        ##
        "file"
      | 
        ##
        "module"
      | 
        ##
        "class"
      | xsd:token { pattern = "[^\p{C}\p{Z}]+" }
    }?,
    empty
  }
cust_tag =
  
  ## (tag) contains text of a complete start- or end-tag, possibly including attribute specifications, but excluding the opening and closing markup delimiter characters. [22. Documentation Elements]
  element tei:tag {
    text,
    cust_att.global.attributes,
    cust_att.typed.attribute.subtype,
    
    ## indicates the type of XML tag intended
    attribute type {
      xsd:token { pattern = "[^\p{C}\p{Z}]+" }
    }?,
    
    ## supplies the name of the schema in which this tag is defined.
    ## Sample values include: 1] TEI (text encoding initiative); 2] DBK (docbook); 3] XX (unknown); 4] Schematron; 5] HTML
    [ a:defaultValue = "TEI" ]
    attribute scheme {
      xsd:token { pattern = "[^\p{C}\p{Z}]+" }
    }?,
    empty
  }
cust_val =
  
  ## (value) contains a single attribute value. [22. Documentation Elements 22.5.3. Attribute List Specification]
  element tei:val { text, cust_att.global.attributes, empty }
cust_specList =
  
  ## (specification list) marks where a list of descriptions is to be inserted into the prose documentation. [22.1.2. Element and Attribute Descriptions]
  element tei:specList {
    cust_specDesc+, cust_att.global.attributes, empty
  }
cust_specDesc =
  
  ## (specification description) indicates that a description of the specified element, class, or macro should be included at this point within a document. [22.1.2. Element and Attribute Descriptions]
  element tei:specDesc {
    empty,
    cust_att.global.attributes,
    
    ## (identifier) supplies the identifier of the documentary element or class for which a description is to be obtained.
    attribute key { xsd:Name },
    
    ## (attributes) supplies attribute names for which descriptions should additionally be obtained.
    attribute atts {
      list { xsd:Name* }
    }?,
    empty
  }
cust_classRef =
  
  ## points to the specification for an attribute or model class which is to be included in a schema [22.6. Class Specifications]
  element tei:classRef {
    empty,
    cust_att.global.attributes,
    cust_att.repeatable.attributes,
    
    ## 
    ## Suggested values include: 1] att.anchoring (anchoring); 2] att.ascribed; 3] att.ascribed.directed; 4] att.breaking; 5] att.cReferencing; 6] att.canonical; 7] att.citeStructurePart; 8] att.citing; 9] att.combinable; 10] att.coordinated; 11] att.damaged; 12] att.datable; 13] att.datable.custom; 14] att.datable.iso; 15] att.datable.w3c; 16] att.datcat; 17] att.declarable; 18] att.declaring; 19] att.deprecated; 20] att.dimensions; 21] att.divLike; 22] att.docStatus; 23] att.duration; 24] att.duration.iso; 25] att.duration.w3c; 26] att.editLike; 27] att.edition; 28] att.enjamb (enjambement); 29] att.entryLike; 30] att.formula; 31] att.fragmentable; 32] att.gaijiProp; 33] att.global; 34] att.global.analytic; 35] att.global.change; 36] att.global.facs; 37] att.global.linking; 38] att.global.rendition; 39] att.global.responsibility; 40] att.global.source; 41] att.handFeatures; 42] att.identified; 43] att.internetMedia; 44] att.interpLike; 45] att.lexicographic; 46] att.lexicographic.normalized; 47] att.linguistic; 48] att.measurement; 49] att.media; 50] att.metrical; 51] att.milestoneUnit; 52] att.msClass; 53] att.msExcerpt (manuscript excerpt); 54] att.namespaceable; 55] att.naming; 56] att.notated; 57] att.partials; 58] att.patternReplacement; 59] att.personal (attributes for components of names usually, but not necessarily, personal names); 60] att.placement; 61] att.pointing; 62] att.pointing.group; 63] att.predicate; 64] att.ranging; 65] att.rdgPart; 66] att.repeatable; 67] att.resourced; 68] att.scoping; 69] att.segLike; 70] att.sortable; 71] att.spanning; 72] att.styleDef; 73] att.tableDecoration; 74] att.textCritical; 75] att.timed; 76] att.transcriptional; 77] att.translatable; 78] att.typed; 79] att.witnessed; 80] att.written; 81] model.addrPart; 82] model.addressLike; 83] model.annotationLike; 84] model.annotationPart.body; 85] model.applicationLike; 86] model.attributable; 87] model.availabilityPart; 88] model.biblLike; 89] model.biblPart; 90] model.castItemPart; 91] model.catDescPart; 92] model.certLike; 93] model.choicePart; 94] model.common; 95] model.contentPart; 96] model.correspActionPart; 97] model.correspContextPart; 98] model.correspDescPart; 99] model.dateLike; 100] model.descLike; 101] model.describedResource; 102] model.dimLike; 103] model.div1Like; 104] model.div2Like; 105] model.div3Like; 106] model.div4Like; 107] model.div5Like; 108] model.div6Like; 109] model.div7Like; 110] model.divBottom; 111] model.divBottomPart; 112] model.divGenLike; 113] model.divLike; 114] model.divPart; 115] model.divPart.spoken; 116] model.divTop; 117] model.divTopPart; 118] model.divWrapper; 119] model.editorialDeclPart; 120] model.egLike; 121] model.emphLike; 122] model.encodingDescPart; 123] model.entryLike; 124] model.entryPart; 125] model.entryPart.top; 126] model.eventLike; 127] model.featureVal; 128] model.featureVal.complex; 129] model.featureVal.single; 130] model.formPart; 131] model.frontPart; 132] model.frontPart.drama; 133] model.fsdDeclPart; 134] model.gLike; 135] model.global; 136] model.global.edit; 137] model.global.meta; 138] model.global.spoken; 139] model.glossLike; 140] model.gramPart; 141] model.graphicLike; 142] model.headLike; 143] model.hiLike; 144] model.highlighted; 145] model.imprintPart; 146] model.inter; 147] model.lLike; 148] model.lPart; 149] model.labelLike; 150] model.lexicalRefinement; 151] model.limitedPhrase; 152] model.linePart; 153] model.listLike; 154] model.measureLike; 155] model.milestoneLike; 156] model.morphLike; 157] model.msItemPart; 158] model.msQuoteLike; 159] model.nameLike; 160] model.nameLike.agent; 161] model.noteLike; 162] model.objectLike; 163] model.oddDecl; 164] model.oddRef; 165] model.offsetLike; 166] model.orgPart; 167] model.orgStateLike; 168] model.pLike; 169] model.pLike.front; 170] model.pPart.data; 171] model.pPart.edit; 172] model.pPart.editorial; 173] model.pPart.msdesc; 174] model.pPart.transcriptional; 175] model.persNamePart; 176] model.persStateLike; 177] model.personLike; 178] model.personPart; 179] model.phrase; 180] model.phrase.xml; 181] model.physDescPart; 182] model.placeLike; 183] model.placeNamePart; 184] model.placeStateLike; 185] model.profileDescPart; 186] model.ptrLike; 187] model.ptrLike.form; 188] model.publicationStmtPart.agency; 189] model.publicationStmtPart.detail; 190] model.quoteLike; 191] model.rdgLike; 192] model.rdgPart; 193] model.recordingPart; 194] model.resource; 195] model.respLike; 196] model.segLike; 197] model.settingPart; 198] model.sourceDescPart; 199] model.specDescLike; 200] model.stageLike; 201] model.standOffPart; 202] model.teiHeaderPart; 203] model.textDescPart; 204] model.titlepagePart
    attribute key {
      
      ## (anchoring) 
      "att.anchoring"
      | 
        ##
        "att.ascribed"
      | 
        ##
        "att.ascribed.directed"
      | 
        ##
        "att.breaking"
      | 
        ##
        "att.cReferencing"
      | 
        ##
        "att.canonical"
      | 
        ##
        "att.citeStructurePart"
      | 
        ##
        "att.citing"
      | 
        ##
        "att.combinable"
      | 
        ##
        "att.coordinated"
      | 
        ##
        "att.damaged"
      | 
        ##
        "att.datable"
      | 
        ##
        "att.datable.custom"
      | 
        ##
        "att.datable.iso"
      | 
        ##
        "att.datable.w3c"
      | 
        ##
        "att.datcat"
      | 
        ##
        "att.declarable"
      | 
        ##
        "att.declaring"
      | 
        ##
        "att.deprecated"
      | 
        ##
        "att.dimensions"
      | 
        ##
        "att.divLike"
      | 
        ##
        "att.docStatus"
      | 
        ##
        "att.duration"
      | 
        ##
        "att.duration.iso"
      | 
        ##
        "att.duration.w3c"
      | 
        ##
        "att.editLike"
      | 
        ##
        "att.edition"
      | 
        ## (enjambement) 
        "att.enjamb"
      | 
        ##
        "att.entryLike"
      | 
        ##
        "att.formula"
      | 
        ##
        "att.fragmentable"
      | 
        ##
        "att.gaijiProp"
      | 
        ##
        "att.global"
      | 
        ##
        "att.global.analytic"
      | 
        ##
        "att.global.change"
      | 
        ##
        "att.global.facs"
      | 
        ##
        "att.global.linking"
      | 
        ##
        "att.global.rendition"
      | 
        ##
        "att.global.responsibility"
      | 
        ##
        "att.global.source"
      | 
        ##
        "att.handFeatures"
      | 
        ##
        "att.identified"
      | 
        ##
        "att.internetMedia"
      | 
        ##
        "att.interpLike"
      | 
        ##
        "att.lexicographic"
      | 
        ##
        "att.lexicographic.normalized"
      | 
        ##
        "att.linguistic"
      | 
        ##
        "att.measurement"
      | 
        ##
        "att.media"
      | 
        ##
        "att.metrical"
      | 
        ##
        "att.milestoneUnit"
      | 
        ##
        "att.msClass"
      | 
        ## (manuscript excerpt) 
        "att.msExcerpt"
      | 
        ##
        "att.namespaceable"
      | 
        ##
        "att.naming"
      | 
        ##
        "att.notated"
      | 
        ##
        "att.partials"
      | 
        ##
        "att.patternReplacement"
      | 
        ## (attributes for components of names usually, but not necessarily, personal names) 
        "att.personal"
      | 
        ##
        "att.placement"
      | 
        ##
        "att.pointing"
      | 
        ##
        "att.pointing.group"
      | 
        ##
        "att.predicate"
      | 
        ##
        "att.ranging"
      | 
        ##
        "att.rdgPart"
      | 
        ##
        "att.repeatable"
      | 
        ##
        "att.resourced"
      | 
        ##
        "att.scoping"
      | 
        ##
        "att.segLike"
      | 
        ##
        "att.sortable"
      | 
        ##
        "att.spanning"
      | 
        ##
        "att.styleDef"
      | 
        ##
        "att.tableDecoration"
      | 
        ##
        "att.textCritical"
      | 
        ##
        "att.timed"
      | 
        ##
        "att.transcriptional"
      | 
        ##
        "att.translatable"
      | 
        ##
        "att.typed"
      | 
        ##
        "att.witnessed"
      | 
        ##
        "att.written"
      | 
        ##
        "model.addrPart"
      | 
        ##
        "model.addressLike"
      | 
        ##
        "model.annotationLike"
      | 
        ##
        "model.annotationPart.body"
      | 
        ##
        "model.applicationLike"
      | 
        ##
        "model.attributable"
      | 
        ##
        "model.availabilityPart"
      | 
        ##
        "model.biblLike"
      | 
        ##
        "model.biblPart"
      | 
        ##
        "model.castItemPart"
      | 
        ##
        "model.catDescPart"
      | 
        ##
        "model.certLike"
      | 
        ##
        "model.choicePart"
      | 
        ##
        "model.common"
      | 
        ##
        "model.contentPart"
      | 
        ##
        "model.correspActionPart"
      | 
        ##
        "model.correspContextPart"
      | 
        ##
        "model.correspDescPart"
      | 
        ##
        "model.dateLike"
      | 
        ##
        "model.descLike"
      | 
        ##
        "model.describedResource"
      | 
        ##
        "model.dimLike"
      | 
        ##
        "model.div1Like"
      | 
        ##
        "model.div2Like"
      | 
        ##
        "model.div3Like"
      | 
        ##
        "model.div4Like"
      | 
        ##
        "model.div5Like"
      | 
        ##
        "model.div6Like"
      | 
        ##
        "model.div7Like"
      | 
        ##
        "model.divBottom"
      | 
        ##
        "model.divBottomPart"
      | 
        ##
        "model.divGenLike"
      | 
        ##
        "model.divLike"
      | 
        ##
        "model.divPart"
      | 
        ##
        "model.divPart.spoken"
      | 
        ##
        "model.divTop"
      | 
        ##
        "model.divTopPart"
      | 
        ##
        "model.divWrapper"
      | 
        ##
        "model.editorialDeclPart"
      | 
        ##
        "model.egLike"
      | 
        ##
        "model.emphLike"
      | 
        ##
        "model.encodingDescPart"
      | 
        ##
        "model.entryLike"
      | 
        ##
        "model.entryPart"
      | 
        ##
        "model.entryPart.top"
      | 
        ##
        "model.eventLike"
      | 
        ##
        "model.featureVal"
      | 
        ##
        "model.featureVal.complex"
      | 
        ##
        "model.featureVal.single"
      | 
        ##
        "model.formPart"
      | 
        ##
        "model.frontPart"
      | 
        ##
        "model.frontPart.drama"
      | 
        ##
        "model.fsdDeclPart"
      | 
        ##
        "model.gLike"
      | 
        ##
        "model.global"
      | 
        ##
        "model.global.edit"
      | 
        ##
        "model.global.meta"
      | 
        ##
        "model.global.spoken"
      | 
        ##
        "model.glossLike"
      | 
        ##
        "model.gramPart"
      | 
        ##
        "model.graphicLike"
      | 
        ##
        "model.headLike"
      | 
        ##
        "model.hiLike"
      | 
        ##
        "model.highlighted"
      | 
        ##
        "model.imprintPart"
      | 
        ##
        "model.inter"
      | 
        ##
        "model.lLike"
      | 
        ##
        "model.lPart"
      | 
        ##
        "model.labelLike"
      | 
        ##
        "model.lexicalRefinement"
      | 
        ##
        "model.limitedPhrase"
      | 
        ##
        "model.linePart"
      | 
        ##
        "model.listLike"
      | 
        ##
        "model.measureLike"
      | 
        ##
        "model.milestoneLike"
      | 
        ##
        "model.morphLike"
      | 
        ##
        "model.msItemPart"
      | 
        ##
        "model.msQuoteLike"
      | 
        ##
        "model.nameLike"
      | 
        ##
        "model.nameLike.agent"
      | 
        ##
        "model.noteLike"
      | 
        ##
        "model.objectLike"
      | 
        ##
        "model.oddDecl"
      | 
        ##
        "model.oddRef"
      | 
        ##
        "model.offsetLike"
      | 
        ##
        "model.orgPart"
      | 
        ##
        "model.orgStateLike"
      | 
        ##
        "model.pLike"
      | 
        ##
        "model.pLike.front"
      | 
        ##
        "model.pPart.data"
      | 
        ##
        "model.pPart.edit"
      | 
        ##
        "model.pPart.editorial"
      | 
        ##
        "model.pPart.msdesc"
      | 
        ##
        "model.pPart.transcriptional"
      | 
        ##
        "model.persNamePart"
      | 
        ##
        "model.persStateLike"
      | 
        ##
        "model.personLike"
      | 
        ##
        "model.personPart"
      | 
        ##
        "model.phrase"
      | 
        ##
        "model.phrase.xml"
      | 
        ##
        "model.physDescPart"
      | 
        ##
        "model.placeLike"
      | 
        ##
        "model.placeNamePart"
      | 
        ##
        "model.placeStateLike"
      | 
        ##
        "model.profileDescPart"
      | 
        ##
        "model.ptrLike"
      | 
        ##
        "model.ptrLike.form"
      | 
        ##
        "model.publicationStmtPart.agency"
      | 
        ##
        "model.publicationStmtPart.detail"
      | 
        ##
        "model.quoteLike"
      | 
        ##
        "model.rdgLike"
      | 
        ##
        "model.rdgPart"
      | 
        ##
        "model.recordingPart"
      | 
        ##
        "model.resource"
      | 
        ##
        "model.respLike"
      | 
        ##
        "model.segLike"
      | 
        ##
        "model.settingPart"
      | 
        ##
        "model.sourceDescPart"
      | 
        ##
        "model.specDescLike"
      | 
        ##
        "model.stageLike"
      | 
        ##
        "model.standOffPart"
      | 
        ##
        "model.teiHeaderPart"
      | 
        ##
        "model.textDescPart"
      | 
        ##
        "model.titlepagePart"
      | xsd:token { pattern = "[^\p{C}\p{Z}]+" }
    },
    
    ## supplies a list of class members which are to be included in the schema being defined.
    ## Suggested values include: 1] agent; 2] ana (analysis); 3] anchored (anchored); 4] atLeast; 5] atMost; 6] break; 7] cRef (canonical reference); 8] calendar; 9] cause; 10] cause; 11] cert (certainty); 12] change; 13] class; 14] cols (columns); 15] commodity (commodity); 16] confidence; 17] copyOf; 18] corresp (corresponds); 19] datcat; 20] datingMethod; 21] datingPoint; 22] decls; 23] default; 24] defective; 25] degree; 26] domains; 27] dur (duration); 28] dur-iso (duration); 29] ed (edition); 30] edRef (edition reference); 31] end; 32] enjamb (enjambement); 33] evaluate (evaluate); 34] evidence; 35] exclude; 36] expand (expand); 37] extent; 38] extent; 39] facs (facsimile); 40] formula; 41] from; 42] from; 43] from-custom; 44] from-iso; 45] full; 46] function (function); 47] group; 48] hand; 49] height; 50] ident; 51] inst (instances); 52] instant; 53] join; 54] key; 55] lemma; 56] lemmaRef; 57] location (location); 58] lrx; 59] lry; 60] match; 61] matchPattern; 62] max; 63] maxOccurs (maximum number of occurences); 64] medium; 65] mergedIn (merged into); 66] met (metrical structure, conventional); 67] mimeType (MIME media type); 68] min; 69] minOccurs (minimum number of occurences); 70] mode; 71] module; 72] msd; 73] n (number); 74] name; 75] next; 76] norm (normalized); 77] notAfter; 78] notAfter-custom; 79] notAfter-iso; 80] notBefore; 81] notBefore-custom; 82] notBefore-iso; 83] notation; 84] ns (namespace); 85] nymRef (reference to the canonical name); 86] opt (optional); 87] org (organization); 88] orig (original); 89] part; 90] period; 91] place; 92] points; 93] pos; 94] precision; 95] predeclare; 96] predicate; 97] prev (previous); 98] quantity; 99] quantity (quantity); 100] real (metrical structure, realized); 101] ref (reference); 102] rend (rendition); 103] rendition; 104] replacementPattern; 105] require; 106] resp (responsible party); 107] rhyme (rhyme scheme); 108] role; 109] role (role); 110] rows (rows); 111] sameAs; 112] sample; 113] scale; 114] scheme; 115] schemeVersion; 116] scope; 117] scope; 118] scribe; 119] scribeRef; 120] script; 121] scriptRef; 122] select; 123] seq (sequence); 124] sort (sort); 125] sortKey; 126] source; 127] spanTo; 128] split (split); 129] start; 130] start; 131] status; 132] status; 133] style; 134] subtype (subtype); 135] synch (synchronous); 136] targFunc (target function); 137] target; 138] target; 139] targetEnd (target end); 140] targetLang; 141] to; 142] to; 143] to-custom; 144] to-iso; 145] toWhom; 146] type; 147] type; 148] type; 149] ulx; 150] uly; 151] unit; 152] unit (unit); 153] unit; 154] unit; 155] unitRef; 156] url (uniform resource locator); 157] use (use); 158] validUntil; 159] value; 160] value (value); 161] valueDatcat; 162] varSeq (variant sequence); 163] version; 164] versionDate; 165] when; 166] when-custom; 167] when-iso; 168] who; 169] width; 170] wit (witness or witnesses); 171] wit (witness or witnesses); 172] xml:base; 173] xml:id (identifier); 174] xml:lang (language); 175] xml:space
    attribute include {
      list {
        (
         ## class: att.damaged
         "agent"
         | 
           ## (analysis) class: att.global.analytic
           "ana"
         | 
           ## (anchored) class: att.anchoring
           "anchored"
         | 
           ## class: att.ranging
           "atLeast"
         | 
           ## class: att.ranging
           "atMost"
         | 
           ## class: att.breaking
           "break"
         | 
           ## (canonical reference) class: att.cReferencing
           "cRef"
         | 
           ## class: att.datable
           "calendar"
         | 
           ## class: att.transcriptional
           "cause"
         | 
           ## class: att.textCritical
           "cause"
         | 
           ## (certainty) class: att.global.responsibility
           "cert"
         | 
           ## class: att.global.change
           "change"
         | 
           ## class: att.msClass
           "class"
         | 
           ## (columns) class: att.tableDecoration
           "cols"
         | 
           ## (commodity) class: att.measurement
           "commodity"
         | 
           ## class: att.ranging
           "confidence"
         | 
           ## class: att.global.linking
           "copyOf"
         | 
           ## (corresponds) class: att.global.linking
           "corresp"
         | 
           ## class: att.datcat
           "datcat"
         | 
           ## class: att.datable.custom
           "datingMethod"
         | 
           ## class: att.datable.custom
           "datingPoint"
         | 
           ## class: att.declaring
           "decls"
         | 
           ## class: att.declarable
           "default"
         | 
           ## class: att.msExcerpt
           "defective"
         | 
           ## class: att.damaged
           "degree"
         | 
           ## class: att.pointing.group
           "domains"
         | 
           ## (duration) class: att.duration.w3c
           "dur"
         | 
           ## (duration) class: att.duration.iso
           "dur-iso"
         | 
           ## (edition) class: att.edition
           "ed"
         | 
           ## (edition reference) class: att.edition
           "edRef"
         | 
           ## class: att.timed
           "end"
         | 
           ## (enjambement) class: att.enjamb
           "enjamb"
         | 
           ## (evaluate) class: att.pointing
           "evaluate"
         | 
           ## class: att.editLike
           "evidence"
         | 
           ## class: att.global.linking
           "exclude"
         | 
           ## (expand) class: att.lexicographic
           "expand"
         | 
           ## class: att.dimensions
           "extent"
         | 
           ## class: att.partials
           "extent"
         | 
           ## (facsimile) class: att.global.facs
           "facs"
         | 
           ## class: att.formula
           "formula"
         | 
           ## class: att.datable.w3c
           "from"
         | 
           ## class: att.citing
           "from"
         | 
           ## class: att.datable.custom
           "from-custom"
         | 
           ## class: att.datable.iso
           "from-iso"
         | 
           ## class: att.personal
           "full"
         | 
           ## (function) class: att.segLike
           "function"
         | 
           ## class: att.damaged
           "group"
         | 
           ## class: att.written
           "hand"
         | 
           ## class: att.media
           "height"
         | 
           ## class: att.identified
           "ident"
         | 
           ## (instances) class: att.interpLike
           "inst"
         | 
           ## class: att.editLike
           "instant"
         | 
           ## class: att.linguistic
           "join"
         | 
           ## class: att.canonical
           "key"
         | 
           ## class: att.linguistic
           "lemma"
         | 
           ## class: att.linguistic
           "lemmaRef"
         | 
           ## (location) class: att.lexicographic
           "location"
         | 
           ## class: att.coordinated
           "lrx"
         | 
           ## class: att.coordinated
           "lry"
         | 
           ## class: att.scoping
           "match"
         | 
           ## class: att.patternReplacement
           "matchPattern"
         | 
           ## class: att.ranging
           "max"
         | 
           ## (maximum number of occurences) class: att.repeatable
           "maxOccurs"
         | 
           ## class: att.handFeatures
           "medium"
         | 
           ## (merged into) class: att.lexicographic
           "mergedIn"
         | 
           ## (metrical structure, conventional) class: att.metrical
           "met"
         | 
           ## (MIME media type) class: att.internetMedia
           "mimeType"
         | 
           ## class: att.ranging
           "min"
         | 
           ## (minimum number of occurences) class: att.repeatable
           "minOccurs"
         | 
           ## class: att.combinable
           "mode"
         | 
           ## class: att.identified
           "module"
         | 
           ## class: att.linguistic
           "msd"
         | 
           ## (number) class: att.global
           "n"
         | 
           ## class: att.gaijiProp
           "name"
         | 
           ## class: att.global.linking
           "next"
         | 
           ## (normalized) class: att.lexicographic.normalized
           "norm"
         | 
           ## class: att.datable.w3c
           "notAfter"
         | 
           ## class: att.datable.custom
           "notAfter-custom"
         | 
           ## class: att.datable.iso
           "notAfter-iso"
         | 
           ## class: att.datable.w3c
           "notBefore"
         | 
           ## class: att.datable.custom
           "notBefore-custom"
         | 
           ## class: att.datable.iso
           "notBefore-iso"
         | 
           ## class: att.notated
           "notation"
         | 
           ## (namespace) class: att.namespaceable
           "ns"
         | 
           ## (reference to the canonical name) class: att.naming
           "nymRef"
         | 
           ## (optional) class: att.lexicographic
           "opt"
         | 
           ## (organization) class: att.divLike
           "org"
         | 
           ## (original) class: att.lexicographic.normalized
           "orig"
         | 
           ## class: att.fragmentable
           "part"
         | 
           ## class: att.datable
           "period"
         | 
           ## class: att.placement
           "place"
         | 
           ## class: att.coordinated
           "points"
         | 
           ## class: att.linguistic
           "pos"
         | 
           ## class: att.dimensions
           "precision"
         | 
           ## class: att.identified
           "predeclare"
         | 
           ## class: att.predicate
           "predicate"
         | 
           ## (previous) class: att.global.linking
           "prev"
         | 
           ## class: att.dimensions
           "quantity"
         | 
           ## (quantity) class: att.measurement
           "quantity"
         | 
           ## (metrical structure, realized) class: att.metrical
           "real"
         | 
           ## (reference) class: att.canonical
           "ref"
         | 
           ## (rendition) class: att.global.rendition
           "rend"
         | 
           ## class: att.global.rendition
           "rendition"
         | 
           ## class: att.patternReplacement
           "replacementPattern"
         | 
           ## class: att.textCritical
           "require"
         | 
           ## (responsible party) class: att.global.responsibility
           "resp"
         | 
           ## (rhyme scheme) class: att.metrical
           "rhyme"
         | 
           ## class: att.naming
           "role"
         | 
           ## (role) class: att.tableDecoration
           "role"
         | 
           ## (rows) class: att.tableDecoration
           "rows"
         | 
           ## class: att.global.linking
           "sameAs"
         | 
           ## class: att.divLike
           "sample"
         | 
           ## class: att.media
           "scale"
         | 
           ## class: att.styleDef
           "scheme"
         | 
           ## class: att.styleDef
           "schemeVersion"
         | 
           ## class: att.dimensions
           "scope"
         | 
           ## class: att.handFeatures
           "scope"
         | 
           ## class: att.handFeatures
           "scribe"
         | 
           ## class: att.handFeatures
           "scribeRef"
         | 
           ## class: att.handFeatures
           "script"
         | 
           ## class: att.handFeatures
           "scriptRef"
         | 
           ## class: att.global.linking
           "select"
         | 
           ## (sequence) class: att.transcriptional
           "seq"
         | 
           ## (sort) class: att.personal
           "sort"
         | 
           ## class: att.sortable
           "sortKey"
         | 
           ## class: att.global.source
           "source"
         | 
           ## class: att.spanning
           "spanTo"
         | 
           ## (split) class: att.lexicographic
           "split"
         | 
           ## class: att.timed
           "start"
         | 
           ## class: att.coordinated
           "start"
         | 
           ## class: att.docStatus
           "status"
         | 
           ## class: att.transcriptional
           "status"
         | 
           ## class: att.global.rendition
           "style"
         | 
           ## (subtype) class: att.typed
           "subtype"
         | 
           ## (synchronous) class: att.global.linking
           "synch"
         | 
           ## (target function) class: att.pointing.group
           "targFunc"
         | 
           ## class: att.pointing
           "target"
         | 
           ## class: att.scoping
           "target"
         | 
           ## (target end) class: att.anchoring
           "targetEnd"
         | 
           ## class: att.pointing
           "targetLang"
         | 
           ## class: att.datable.w3c
           "to"
         | 
           ## class: att.citing
           "to"
         | 
           ## class: att.datable.custom
           "to-custom"
         | 
           ## class: att.datable.iso
           "to-iso"
         | 
           ## class: att.ascribed.directed
           "toWhom"
         | 
           ## class: att.typed
           "type"
         | 
           ## class: att.entryLike
           "type"
         | 
           ## class: att.textCritical
           "type"
         | 
           ## class: att.coordinated
           "ulx"
         | 
           ## class: att.coordinated
           "uly"
         | 
           ## class: att.dimensions
           "unit"
         | 
           ## (unit) class: att.measurement
           "unit"
         | 
           ## class: att.milestoneUnit
           "unit"
         | 
           ## class: att.citing
           "unit"
         | 
           ## class: att.measurement
           "unitRef"
         | 
           ## (uniform resource locator) class: att.resourced
           "url"
         | 
           ## (use) class: att.citeStructurePart
           "use"
         | 
           ## class: att.deprecated
           "validUntil"
         | 
           ## class: att.gaijiProp
           "value"
         | 
           ## (value) class: att.lexicographic
           "value"
         | 
           ## class: att.datcat
           "valueDatcat"
         | 
           ## (variant sequence) class: att.textCritical
           "varSeq"
         | 
           ## class: att.gaijiProp
           "version"
         | 
           ## class: att.translatable
           "versionDate"
         | 
           ## class: att.datable.w3c
           "when"
         | 
           ## class: att.datable.custom
           "when-custom"
         | 
           ## class: att.datable.iso
           "when-iso"
         | 
           ## class: att.ascribed
           "who"
         | 
           ## class: att.media
           "width"
         | 
           ## (witness or witnesses) class: att.rdgPart
           "wit"
         | 
           ## (witness or witnesses) class: att.witnessed
           "wit"
         | 
           ## class: att.global
           "xml:base"
         | 
           ## (identifier) class: att.global
           "xml:id"
         | 
           ## (language) class: att.global
           "xml:lang"
         | 
           ## class: att.global
           "xml:space"
         | xsd:token { pattern = "[^\p{C}\p{Z}]+" })*
      }
    }?,
    
    ## supplies a list of class members which are to be excluded from the schema being defined.
    ## Suggested values include: 1] agent; 2] ana (analysis); 3] anchored (anchored); 4] atLeast; 5] atMost; 6] break; 7] cRef (canonical reference); 8] calendar; 9] cause; 10] cause; 11] cert (certainty); 12] change; 13] class; 14] cols (columns); 15] commodity (commodity); 16] confidence; 17] copyOf; 18] corresp (corresponds); 19] datcat; 20] datingMethod; 21] datingPoint; 22] decls; 23] default; 24] defective; 25] degree; 26] domains; 27] dur (duration); 28] dur-iso (duration); 29] ed (edition); 30] edRef (edition reference); 31] end; 32] enjamb (enjambement); 33] evaluate (evaluate); 34] evidence; 35] exclude; 36] expand (expand); 37] extent; 38] extent; 39] facs (facsimile); 40] formula; 41] from; 42] from; 43] from-custom; 44] from-iso; 45] full; 46] function (function); 47] group; 48] hand; 49] height; 50] ident; 51] inst (instances); 52] instant; 53] join; 54] key; 55] lemma; 56] lemmaRef; 57] location (location); 58] lrx; 59] lry; 60] match; 61] matchPattern; 62] max; 63] maxOccurs (maximum number of occurences); 64] medium; 65] mergedIn (merged into); 66] met (metrical structure, conventional); 67] mimeType (MIME media type); 68] min; 69] minOccurs (minimum number of occurences); 70] mode; 71] module; 72] msd; 73] n (number); 74] name; 75] next; 76] norm (normalized); 77] notAfter; 78] notAfter-custom; 79] notAfter-iso; 80] notBefore; 81] notBefore-custom; 82] notBefore-iso; 83] notation; 84] ns (namespace); 85] nymRef (reference to the canonical name); 86] opt (optional); 87] org (organization); 88] orig (original); 89] part; 90] period; 91] place; 92] points; 93] pos; 94] precision; 95] predeclare; 96] predicate; 97] prev (previous); 98] quantity; 99] quantity (quantity); 100] real (metrical structure, realized); 101] ref (reference); 102] rend (rendition); 103] rendition; 104] replacementPattern; 105] require; 106] resp (responsible party); 107] rhyme (rhyme scheme); 108] role; 109] role (role); 110] rows (rows); 111] sameAs; 112] sample; 113] scale; 114] scheme; 115] schemeVersion; 116] scope; 117] scope; 118] scribe; 119] scribeRef; 120] script; 121] scriptRef; 122] select; 123] seq (sequence); 124] sort (sort); 125] sortKey; 126] source; 127] spanTo; 128] split (split); 129] start; 130] start; 131] status; 132] status; 133] style; 134] subtype (subtype); 135] synch (synchronous); 136] targFunc (target function); 137] target; 138] target; 139] targetEnd (target end); 140] targetLang; 141] to; 142] to; 143] to-custom; 144] to-iso; 145] toWhom; 146] type; 147] type; 148] type; 149] ulx; 150] uly; 151] unit; 152] unit (unit); 153] unit; 154] unit; 155] unitRef; 156] url (uniform resource locator); 157] use (use); 158] validUntil; 159] value; 160] value (value); 161] valueDatcat; 162] varSeq (variant sequence); 163] version; 164] versionDate; 165] when; 166] when-custom; 167] when-iso; 168] who; 169] width; 170] wit (witness or witnesses); 171] wit (witness or witnesses); 172] xml:base; 173] xml:id (identifier); 174] xml:lang (language); 175] xml:space
    attribute except {
      list {
        (
         ## class: att.damaged
         "agent"
         | 
           ## (analysis) class: att.global.analytic
           "ana"
         | 
           ## (anchored) class: att.anchoring
           "anchored"
         | 
           ## class: att.ranging
           "atLeast"
         | 
           ## class: att.ranging
           "atMost"
         | 
           ## class: att.breaking
           "break"
         | 
           ## (canonical reference) class: att.cReferencing
           "cRef"
         | 
           ## class: att.datable
           "calendar"
         | 
           ## class: att.transcriptional
           "cause"
         | 
           ## class: att.textCritical
           "cause"
         | 
           ## (certainty) class: att.global.responsibility
           "cert"
         | 
           ## class: att.global.change
           "change"
         | 
           ## class: att.msClass
           "class"
         | 
           ## (columns) class: att.tableDecoration
           "cols"
         | 
           ## (commodity) class: att.measurement
           "commodity"
         | 
           ## class: att.ranging
           "confidence"
         | 
           ## class: att.global.linking
           "copyOf"
         | 
           ## (corresponds) class: att.global.linking
           "corresp"
         | 
           ## class: att.datcat
           "datcat"
         | 
           ## class: att.datable.custom
           "datingMethod"
         | 
           ## class: att.datable.custom
           "datingPoint"
         | 
           ## class: att.declaring
           "decls"
         | 
           ## class: att.declarable
           "default"
         | 
           ## class: att.msExcerpt
           "defective"
         | 
           ## class: att.damaged
           "degree"
         | 
           ## class: att.pointing.group
           "domains"
         | 
           ## (duration) class: att.duration.w3c
           "dur"
         | 
           ## (duration) class: att.duration.iso
           "dur-iso"
         | 
           ## (edition) class: att.edition
           "ed"
         | 
           ## (edition reference) class: att.edition
           "edRef"
         | 
           ## class: att.timed
           "end"
         | 
           ## (enjambement) class: att.enjamb
           "enjamb"
         | 
           ## (evaluate) class: att.pointing
           "evaluate"
         | 
           ## class: att.editLike
           "evidence"
         | 
           ## class: att.global.linking
           "exclude"
         | 
           ## (expand) class: att.lexicographic
           "expand"
         | 
           ## class: att.dimensions
           "extent"
         | 
           ## class: att.partials
           "extent"
         | 
           ## (facsimile) class: att.global.facs
           "facs"
         | 
           ## class: att.formula
           "formula"
         | 
           ## class: att.datable.w3c
           "from"
         | 
           ## class: att.citing
           "from"
         | 
           ## class: att.datable.custom
           "from-custom"
         | 
           ## class: att.datable.iso
           "from-iso"
         | 
           ## class: att.personal
           "full"
         | 
           ## (function) class: att.segLike
           "function"
         | 
           ## class: att.damaged
           "group"
         | 
           ## class: att.written
           "hand"
         | 
           ## class: att.media
           "height"
         | 
           ## class: att.identified
           "ident"
         | 
           ## (instances) class: att.interpLike
           "inst"
         | 
           ## class: att.editLike
           "instant"
         | 
           ## class: att.linguistic
           "join"
         | 
           ## class: att.canonical
           "key"
         | 
           ## class: att.linguistic
           "lemma"
         | 
           ## class: att.linguistic
           "lemmaRef"
         | 
           ## (location) class: att.lexicographic
           "location"
         | 
           ## class: att.coordinated
           "lrx"
         | 
           ## class: att.coordinated
           "lry"
         | 
           ## class: att.scoping
           "match"
         | 
           ## class: att.patternReplacement
           "matchPattern"
         | 
           ## class: att.ranging
           "max"
         | 
           ## (maximum number of occurences) class: att.repeatable
           "maxOccurs"
         | 
           ## class: att.handFeatures
           "medium"
         | 
           ## (merged into) class: att.lexicographic
           "mergedIn"
         | 
           ## (metrical structure, conventional) class: att.metrical
           "met"
         | 
           ## (MIME media type) class: att.internetMedia
           "mimeType"
         | 
           ## class: att.ranging
           "min"
         | 
           ## (minimum number of occurences) class: att.repeatable
           "minOccurs"
         | 
           ## class: att.combinable
           "mode"
         | 
           ## class: att.identified
           "module"
         | 
           ## class: att.linguistic
           "msd"
         | 
           ## (number) class: att.global
           "n"
         | 
           ## class: att.gaijiProp
           "name"
         | 
           ## class: att.global.linking
           "next"
         | 
           ## (normalized) class: att.lexicographic.normalized
           "norm"
         | 
           ## class: att.datable.w3c
           "notAfter"
         | 
           ## class: att.datable.custom
           "notAfter-custom"
         | 
           ## class: att.datable.iso
           "notAfter-iso"
         | 
           ## class: att.datable.w3c
           "notBefore"
         | 
           ## class: att.datable.custom
           "notBefore-custom"
         | 
           ## class: att.datable.iso
           "notBefore-iso"
         | 
           ## class: att.notated
           "notation"
         | 
           ## (namespace) class: att.namespaceable
           "ns"
         | 
           ## (reference to the canonical name) class: att.naming
           "nymRef"
         | 
           ## (optional) class: att.lexicographic
           "opt"
         | 
           ## (organization) class: att.divLike
           "org"
         | 
           ## (original) class: att.lexicographic.normalized
           "orig"
         | 
           ## class: att.fragmentable
           "part"
         | 
           ## class: att.datable
           "period"
         | 
           ## class: att.placement
           "place"
         | 
           ## class: att.coordinated
           "points"
         | 
           ## class: att.linguistic
           "pos"
         | 
           ## class: att.dimensions
           "precision"
         | 
           ## class: att.identified
           "predeclare"
         | 
           ## class: att.predicate
           "predicate"
         | 
           ## (previous) class: att.global.linking
           "prev"
         | 
           ## class: att.dimensions
           "quantity"
         | 
           ## (quantity) class: att.measurement
           "quantity"
         | 
           ## (metrical structure, realized) class: att.metrical
           "real"
         | 
           ## (reference) class: att.canonical
           "ref"
         | 
           ## (rendition) class: att.global.rendition
           "rend"
         | 
           ## class: att.global.rendition
           "rendition"
         | 
           ## class: att.patternReplacement
           "replacementPattern"
         | 
           ## class: att.textCritical
           "require"
         | 
           ## (responsible party) class: att.global.responsibility
           "resp"
         | 
           ## (rhyme scheme) class: att.metrical
           "rhyme"
         | 
           ## class: att.naming
           "role"
         | 
           ## (role) class: att.tableDecoration
           "role"
         | 
           ## (rows) class: att.tableDecoration
           "rows"
         | 
           ## class: att.global.linking
           "sameAs"
         | 
           ## class: att.divLike
           "sample"
         | 
           ## class: att.media
           "scale"
         | 
           ## class: att.styleDef
           "scheme"
         | 
           ## class: att.styleDef
           "schemeVersion"
         | 
           ## class: att.dimensions
           "scope"
         | 
           ## class: att.handFeatures
           "scope"
         | 
           ## class: att.handFeatures
           "scribe"
         | 
           ## class: att.handFeatures
           "scribeRef"
         | 
           ## class: att.handFeatures
           "script"
         | 
           ## class: att.handFeatures
           "scriptRef"
         | 
           ## class: att.global.linking
           "select"
         | 
           ## (sequence) class: att.transcriptional
           "seq"
         | 
           ## (sort) class: att.personal
           "sort"
         | 
           ## class: att.sortable
           "sortKey"
         | 
           ## class: att.global.source
           "source"
         | 
           ## class: att.spanning
           "spanTo"
         | 
           ## (split) class: att.lexicographic
           "split"
         | 
           ## class: att.timed
           "start"
         | 
           ## class: att.coordinated
           "start"
         | 
           ## class: att.docStatus
           "status"
         | 
           ## class: att.transcriptional
           "status"
         | 
           ## class: att.global.rendition
           "style"
         | 
           ## (subtype) class: att.typed
           "subtype"
         | 
           ## (synchronous) class: att.global.linking
           "synch"
         | 
           ## (target function) class: att.pointing.group
           "targFunc"
         | 
           ## class: att.pointing
           "target"
         | 
           ## class: att.scoping
           "target"
         | 
           ## (target end) class: att.anchoring
           "targetEnd"
         | 
           ## class: att.pointing
           "targetLang"
         | 
           ## class: att.datable.w3c
           "to"
         | 
           ## class: att.citing
           "to"
         | 
           ## class: att.datable.custom
           "to-custom"
         | 
           ## class: att.datable.iso
           "to-iso"
         | 
           ## class: att.ascribed.directed
           "toWhom"
         | 
           ## class: att.typed
           "type"
         | 
           ## class: att.entryLike
           "type"
         | 
           ## class: att.textCritical
           "type"
         | 
           ## class: att.coordinated
           "ulx"
         | 
           ## class: att.coordinated
           "uly"
         | 
           ## class: att.dimensions
           "unit"
         | 
           ## (unit) class: att.measurement
           "unit"
         | 
           ## class: att.milestoneUnit
           "unit"
         | 
           ## class: att.citing
           "unit"
         | 
           ## class: att.measurement
           "unitRef"
         | 
           ## (uniform resource locator) class: att.resourced
           "url"
         | 
           ## (use) class: att.citeStructurePart
           "use"
         | 
           ## class: att.deprecated
           "validUntil"
         | 
           ## class: att.gaijiProp
           "value"
         | 
           ## (value) class: att.lexicographic
           "value"
         | 
           ## class: att.datcat
           "valueDatcat"
         | 
           ## (variant sequence) class: att.textCritical
           "varSeq"
         | 
           ## class: att.gaijiProp
           "version"
         | 
           ## class: att.translatable
           "versionDate"
         | 
           ## class: att.datable.w3c
           "when"
         | 
           ## class: att.datable.custom
           "when-custom"
         | 
           ## class: att.datable.iso
           "when-iso"
         | 
           ## class: att.ascribed
           "who"
         | 
           ## class: att.media
           "width"
         | 
           ## (witness or witnesses) class: att.rdgPart
           "wit"
         | 
           ## (witness or witnesses) class: att.witnessed
           "wit"
         | 
           ## class: att.global
           "xml:base"
         | 
           ## (identifier) class: att.global
           "xml:id"
         | 
           ## (language) class: att.global
           "xml:lang"
         | 
           ## class: att.global
           "xml:space"
         | xsd:token { pattern = "[^\p{C}\p{Z}]+" })*
      }
    }?,
    
    ## indicates how references to this class within a content model should be interpreted.
    attribute expand {
      
      ## any one member of the class may appear
      "alternation"
      | 
        ## a single occurrence of all members of the class may appear in sequence
        "sequence"
      | 
        ## a single occurrence of one or more members of the class may appear in sequence 
        "sequenceOptional"
      | 
        ## one or more occurrences of one or more members of the class may appear in sequence. 
        "sequenceOptionalRepeatable"
      | 
        ## one or more occurrences of all members of the class may appear in sequence
        "sequenceRepeatable"
    }?,
    empty
  }
cust_elementRef =
  
  ## points to the specification for some element which is to be included in a schema [22.2. Modules and Schemas]
  element tei:elementRef {
    empty,
    cust_att.global.attributes,
    cust_att.repeatable.attributes,
    
    ##
    attribute key {
      
      ## (TEI document) 
      "TEI"
      | 
        ## (anonymous block) 
        "ab"
      | 
        ## (abbreviation) 
        "abbr"
      | 
        ##
        "abstract"
      | 
        ## (accompanying material) 
        "accMat"
      | 
        ## (acquisition) 
        "acquisition"
      | 
        ## (activity) 
        "activity"
      | 
        ##
        "actor"
      | 
        ## (addition) 
        "add"
      | 
        ## (additional name) 
        "addName"
      | 
        ## (added span of text) 
        "addSpan"
      | 
        ## (additional) 
        "additional"
      | 
        ## (additions) 
        "additions"
      | 
        ## (address line) 
        "addrLine"
      | 
        ## (address) 
        "address"
      | 
        ## (administrative information) 
        "adminInfo"
      | 
        ## (affiliation) 
        "affiliation"
      | 
        ## (age) 
        "age"
      | 
        ## (alternation) 
        "alt"
      | 
        ## (alternation group) 
        "altGrp"
      | 
        ## (alternate identifier) 
        "altIdent"
      | 
        ## (alternative identifier) 
        "altIdentifier"
      | 
        ##
        "alternate"
      | 
        ## (abbreviation marker) 
        "am"
      | 
        ## (analytic level) 
        "analytic"
      | 
        ## (anchor point) 
        "anchor"
      | 
        ##
        "annotation"
      | 
        ##
        "annotationBlock"
      | 
        ##
        "anyElement"
      | 
        ## (apparatus entry) 
        "app"
      | 
        ## (application information) 
        "appInfo"
      | 
        ##
        "application"
      | 
        ## (arc) 
        "arc"
      | 
        ## (argument) 
        "argument"
      | 
        ## (attribute) 
        "att"
      | 
        ## (attribute definition) 
        "attDef"
      | 
        ## (attribute list) 
        "attList"
      | 
        ## (attribute pointer) 
        "attRef"
      | 
        ## (author) 
        "author"
      | 
        ## (release authority) 
        "authority"
      | 
        ## (availability) 
        "availability"
      | 
        ## (back matter) 
        "back"
      | 
        ## (bibliographic citation) 
        "bibl"
      | 
        ## (fully-structured bibliographic citation) 
        "biblFull"
      | 
        ## (scope of bibliographic reference) 
        "biblScope"
      | 
        ## (structured bibliographic citation) 
        "biblStruct"
      | 
        ## (bi-conditional feature-structure constraint) 
        "bicond"
      | 
        ## (binary value) 
        "binary"
      | 
        ##
        "binaryObject"
      | 
        ## (binding) 
        "binding"
      | 
        ## (binding description) 
        "bindingDesc"
      | 
        ## (birth) 
        "birth"
      | 
        ## (bloc) 
        "bloc"
      | 
        ## (text body) 
        "body"
      | 
        ## (broadcast) 
        "broadcast"
      | 
        ## (byline) 
        "byline"
      | 
        ## (character) 
        "c"
      | 
        ## (canonical reference pattern) 
        "cRefPattern"
      | 
        ##
        "caesura"
      | 
        ## (calendar) 
        "calendar"
      | 
        ## (calendar description) 
        "calendarDesc"
      | 
        ## (camera) 
        "camera"
      | 
        ## (caption) 
        "caption"
      | 
        ## (case) 
        "case"
      | 
        ## (cast list grouping) 
        "castGroup"
      | 
        ## (cast list item) 
        "castItem"
      | 
        ## (cast list) 
        "castList"
      | 
        ## (category description) 
        "catDesc"
      | 
        ## (category reference) 
        "catRef"
      | 
        ## (catchwords) 
        "catchwords"
      | 
        ## (category) 
        "category"
      | 
        ## (column beginning) 
        "cb"
      | 
        ## (cell) 
        "cell"
      | 
        ##
        "certainty"
      | 
        ## (change) 
        "change"
      | 
        ## (primary channel) 
        "channel"
      | 
        ## (character) 
        "char"
      | 
        ## (character declarations) 
        "charDecl"
      | 
        ## (character name) 
        "charName"
      | 
        ## (character property) 
        "charProp"
      | 
        ## (choice) 
        "choice"
      | 
        ## (cited quotation) 
        "cit"
      | 
        ## (citation data) 
        "citeData"
      | 
        ## (citation structure) 
        "citeStructure"
      | 
        ## (cited range) 
        "citedRange"
      | 
        ## (clause) 
        "cl"
      | 
        ## (classification code) 
        "classCode"
      | 
        ## (classification declarations) 
        "classDecl"
      | 
        ##
        "classRef"
      | 
        ## (class specification) 
        "classSpec"
      | 
        ## (classes) 
        "classes"
      | 
        ## (climate) 
        "climate"
      | 
        ## (closer) 
        "closer"
      | 
        ##
        "code"
      | 
        ## (collation) 
        "collation"
      | 
        ## (collection) 
        "collection"
      | 
        ## (collocate) 
        "colloc"
      | 
        ## (colophon) 
        "colophon"
      | 
        ## (conditional feature-structure constraint) 
        "cond"
      | 
        ## (condition) 
        "condition"
      | 
        ## (constitution) 
        "constitution"
      | 
        ## (constraint rules) 
        "constraint"
      | 
        ## (constraint on schema) 
        "constraintSpec"
      | 
        ## (content model) 
        "content"
      | 
        ##
        "conversion"
      | 
        ## (correction) 
        "corr"
      | 
        ## (correction principles) 
        "correction"
      | 
        ## (correspondence action) 
        "correspAction"
      | 
        ## (correspondence context) 
        "correspContext"
      | 
        ## (correspondence
        ##     description) 
        "correspDesc"
      | 
        ## (country) 
        "country"
      | 
        ## (creation) 
        "creation"
      | 
        ## (custodial event) 
        "custEvent"
      | 
        ## (custodial history) 
        "custodialHist"
      | 
        ## (damage) 
        "damage"
      | 
        ## (damaged span of text) 
        "damageSpan"
      | 
        ##
        "dataFacet"
      | 
        ##
        "dataRef"
      | 
        ## (datatype specification) 
        "dataSpec"
      | 
        ## (datatype) 
        "datatype"
      | 
        ## (date) 
        "date"
      | 
        ## (dateline) 
        "dateline"
      | 
        ## (death) 
        "death"
      | 
        ## (decoration description) 
        "decoDesc"
      | 
        ## (note on decoration) 
        "decoNote"
      | 
        ## (definition) 
        "def"
      | 
        ## (default feature value) 
        "default"
      | 
        ## (default value) 
        "defaultVal"
      | 
        ## (deletion) 
        "del"
      | 
        ## (deleted span of text) 
        "delSpan"
      | 
        ## (depth) 
        "depth"
      | 
        ## (derivation) 
        "derivation"
      | 
        ## (description) 
        "desc"
      | 
        ## (dictionary scrap) 
        "dictScrap"
      | 
        ##
        "dim"
      | 
        ## (dimensions) 
        "dimensions"
      | 
        ##
        "distinct"
      | 
        ## (distributor) 
        "distributor"
      | 
        ## (district) 
        "district"
      | 
        ## (text division) 
        "div"
      | 
        ## (level-1 text division) 
        "div1"
      | 
        ## (level-2 text division) 
        "div2"
      | 
        ## (level-3 text division) 
        "div3"
      | 
        ## (level-4 text division) 
        "div4"
      | 
        ## (level-5 text division) 
        "div5"
      | 
        ## (level-6 text division) 
        "div6"
      | 
        ## (level-7 text division) 
        "div7"
      | 
        ## (automatically generated text division) 
        "divGen"
      | 
        ## (document author) 
        "docAuthor"
      | 
        ## (document date) 
        "docDate"
      | 
        ## (document edition) 
        "docEdition"
      | 
        ## (document imprint) 
        "docImprint"
      | 
        ## (document title) 
        "docTitle"
      | 
        ## (domain of use) 
        "domain"
      | 
        ## (leaf or terminal node of an embedding tree) 
        "eLeaf"
      | 
        ## (embedding tree) 
        "eTree"
      | 
        ## (edition) 
        "edition"
      | 
        ## (edition statement) 
        "editionStmt"
      | 
        ##
        "editor"
      | 
        ## (editorial practice declaration) 
        "editorialDecl"
      | 
        ## (education) 
        "education"
      | 
        ## (example) 
        "eg"
      | 
        ## (example of XML) 
        "egXML"
      | 
        ##
        "elementRef"
      | 
        ## (element specification) 
        "elementSpec"
      | 
        ## (electronic mail address) 
        "email"
      | 
        ## (emphasized) 
        "emph"
      | 
        ##
        "empty"
      | 
        ## (encoding description) 
        "encodingDesc"
      | 
        ## (entry) 
        "entry"
      | 
        ## (unstructured entry) 
        "entryFree"
      | 
        ## (epigraph) 
        "epigraph"
      | 
        ## (epilogue) 
        "epilogue"
      | 
        ## (equipment) 
        "equipment"
      | 
        ## (equivalent) 
        "equiv"
      | 
        ## (etymology) 
        "etym"
      | 
        ## (event) 
        "event"
      | 
        ## (editorial expansion) 
        "ex"
      | 
        ## (exemplum) 
        "exemplum"
      | 
        ## (expansion) 
        "expan"
      | 
        ## (explicit) 
        "explicit"
      | 
        ## (extent) 
        "extent"
      | 
        ## (feature) 
        "f"
      | 
        ## (feature declaration) 
        "fDecl"
      | 
        ## (feature description (in FSD)) 
        "fDescr"
      | 
        ## (feature library) 
        "fLib"
      | 
        ##
        "facsimile"
      | 
        ## (factuality) 
        "factuality"
      | 
        ## (faith) 
        "faith"
      | 
        ## (description of figure) 
        "figDesc"
      | 
        ## (figure) 
        "figure"
      | 
        ## (file description) 
        "fileDesc"
      | 
        ## (filiation) 
        "filiation"
      | 
        ## (final rubric) 
        "finalRubric"
      | 
        ## (floating text) 
        "floatingText"
      | 
        ## (floruit) 
        "floruit"
      | 
        ## (foliation) 
        "foliation"
      | 
        ## (foreign) 
        "foreign"
      | 
        ## (forename) 
        "forename"
      | 
        ## (forest) 
        "forest"
      | 
        ## (form information group) 
        "form"
      | 
        ## (formula) 
        "formula"
      | 
        ## (front matter) 
        "front"
      | 
        ## (feature structure) 
        "fs"
      | 
        ## (feature-structure constraints) 
        "fsConstraints"
      | 
        ## (feature structure declaration) 
        "fsDecl"
      | 
        ## (feature system description (in FSD)) 
        "fsDescr"
      | 
        ## (feature system declaration) 
        "fsdDecl"
      | 
        ## (feature structure declaration link) 
        "fsdLink"
      | 
        ## (funding body) 
        "funder"
      | 
        ## (feature-value library) 
        "fvLib"
      | 
        ## (forme work) 
        "fw"
      | 
        ## (character or glyph) 
        "g"
      | 
        ## (gap) 
        "gap"
      | 
        ## (gathering beginning) 
        "gb"
      | 
        ## (gender) 
        "gen"
      | 
        ## (generational name component) 
        "genName"
      | 
        ## (geographical coordinates) 
        "geo"
      | 
        ## (geographic coordinates declaration) 
        "geoDecl"
      | 
        ## (geographical feature name) 
        "geogFeat"
      | 
        ## (geographical name) 
        "geogName"
      | 
        ## (element name) 
        "gi"
      | 
        ## (gloss) 
        "gloss"
      | 
        ## (character glyph) 
        "glyph"
      | 
        ## (character glyph name) 
        "glyphName"
      | 
        ## (grammatical information) 
        "gram"
      | 
        ## (grammatical information group) 
        "gramGrp"
      | 
        ## (graph) 
        "graph"
      | 
        ## (graphic) 
        "graphic"
      | 
        ## (group) 
        "group"
      | 
        ## (description of hands) 
        "handDesc"
      | 
        ## (note on hand) 
        "handNote"
      | 
        ##
        "handNotes"
      | 
        ## (handwriting shift) 
        "handShift"
      | 
        ## (heading) 
        "head"
      | 
        ## (heading for list items) 
        "headItem"
      | 
        ## (heading for list labels) 
        "headLabel"
      | 
        ## (height) 
        "height"
      | 
        ## (heraldry) 
        "heraldry"
      | 
        ## (highlighted) 
        "hi"
      | 
        ## (history) 
        "history"
      | 
        ## (homograph) 
        "hom"
      | 
        ## (hyphenation) 
        "hyph"
      | 
        ## (hyphenation) 
        "hyphenation"
      | 
        ## (intermediate (or internal) node) 
        "iNode"
      | 
        ## (inflectional class) 
        "iType"
      | 
        ## (identifier) 
        "ident"
      | 
        ## (identifier) 
        "idno"
      | 
        ##
        "if"
      | 
        ## (if and only if) 
        "iff"
      | 
        ## (imprimatur) 
        "imprimatur"
      | 
        ##
        "imprint"
      | 
        ## (incident) 
        "incident"
      | 
        ##
        "incipit"
      | 
        ## (index entry) 
        "index"
      | 
        ## (institution) 
        "institution"
      | 
        ## (interaction) 
        "interaction"
      | 
        ## (interpretation) 
        "interp"
      | 
        ## (interpretation group) 
        "interpGrp"
      | 
        ## (interpretation) 
        "interpretation"
      | 
        ## (item) 
        "item"
      | 
        ## (join) 
        "join"
      | 
        ## (join group) 
        "joinGrp"
      | 
        ## (keywords) 
        "keywords"
      | 
        ## (kinesic) 
        "kinesic"
      | 
        ## (verse line) 
        "l"
      | 
        ## (label) 
        "label"
      | 
        ## (lacuna end) 
        "lacunaEnd"
      | 
        ## (lacuna start) 
        "lacunaStart"
      | 
        ## (language name) 
        "lang"
      | 
        ## (language knowledge) 
        "langKnowledge"
      | 
        ## (language known) 
        "langKnown"
      | 
        ## (language usage) 
        "langUsage"
      | 
        ## (language) 
        "language"
      | 
        ## (layout) 
        "layout"
      | 
        ## (layout description) 
        "layoutDesc"
      | 
        ## (line beginning) 
        "lb"
      | 
        ## (label) 
        "lbl"
      | 
        ## (leaf) 
        "leaf"
      | 
        ## (lemma) 
        "lem"
      | 
        ## (line group) 
        "lg"
      | 
        ##
        "licence"
      | 
        ##
        "line"
      | 
        ## (link) 
        "link"
      | 
        ## (link group) 
        "linkGrp"
      | 
        ## (list) 
        "list"
      | 
        ##
        "listAnnotation"
      | 
        ## (list of apparatus entries) 
        "listApp"
      | 
        ## (citation list) 
        "listBibl"
      | 
        ##
        "listChange"
      | 
        ## (list of events) 
        "listEvent"
      | 
        ##
        "listForest"
      | 
        ## (list of canonical names) 
        "listNym"
      | 
        ## (list of objects) 
        "listObject"
      | 
        ## (list of organizations) 
        "listOrg"
      | 
        ## (list of persons) 
        "listPerson"
      | 
        ## (list of places) 
        "listPlace"
      | 
        ## (list of prefix definitions) 
        "listPrefixDef"
      | 
        ## (list of references) 
        "listRef"
      | 
        ##
        "listRelation"
      | 
        ##
        "listTranspose"
      | 
        ## (witness list) 
        "listWit"
      | 
        ## (locally-defined property name) 
        "localName"
      | 
        ## (locally defined property) 
        "localProp"
      | 
        ##
        "locale"
      | 
        ## (location) 
        "location"
      | 
        ## (locus) 
        "locus"
      | 
        ## (locus group) 
        "locusGrp"
      | 
        ## (morpheme) 
        "m"
      | 
        ##
        "macroRef"
      | 
        ## (macro specification) 
        "macroSpec"
      | 
        ## (character mapping) 
        "mapping"
      | 
        ## (material) 
        "material"
      | 
        ## (measure) 
        "measure"
      | 
        ## (measure group) 
        "measureGrp"
      | 
        ##
        "media"
      | 
        ##
        "meeting"
      | 
        ##
        "memberOf"
      | 
        ##
        "mentioned"
      | 
        ## (metrical notation declaration) 
        "metDecl"
      | 
        ## (metrical notation symbol) 
        "metSym"
      | 
        ##
        "metamark"
      | 
        ## (milestone) 
        "milestone"
      | 
        ##
        "mod"
      | 
        ##
        "model"
      | 
        ##
        "modelGrp"
      | 
        ##
        "modelSequence"
      | 
        ## (module reference) 
        "moduleRef"
      | 
        ## (module specification) 
        "moduleSpec"
      | 
        ## (monographic level) 
        "monogr"
      | 
        ## (mood) 
        "mood"
      | 
        ## (movement) 
        "move"
      | 
        ## (manuscript contents) 
        "msContents"
      | 
        ## (manuscript description) 
        "msDesc"
      | 
        ## (manuscript fragment) 
        "msFrag"
      | 
        ## (manuscript identifier) 
        "msIdentifier"
      | 
        ## (manuscript item) 
        "msItem"
      | 
        ## (structured manuscript item) 
        "msItemStruct"
      | 
        ## (alternative name) 
        "msName"
      | 
        ## (manuscript part) 
        "msPart"
      | 
        ## (music notation) 
        "musicNotation"
      | 
        ## (name, proper noun) 
        "name"
      | 
        ## (name link) 
        "nameLink"
      | 
        ## (namespace) 
        "namespace"
      | 
        ## (nationality) 
        "nationality"
      | 
        ## (node) 
        "node"
      | 
        ## (normalization) 
        "normalization"
      | 
        ##
        "notatedMusic"
      | 
        ## (note) 
        "note"
      | 
        ##
        "noteGrp"
      | 
        ## (notes statement) 
        "notesStmt"
      | 
        ## (number) 
        "num"
      | 
        ## (number) 
        "number"
      | 
        ## (numeric value) 
        "numeric"
      | 
        ## (canonical name) 
        "nym"
      | 
        ## (orthographic-form reference) 
        "oRef"
      | 
        ##
        "object"
      | 
        ## (object description) 
        "objectDesc"
      | 
        ## (object identifier) 
        "objectIdentifier"
      | 
        ## (name of an object) 
        "objectName"
      | 
        ## (object type) 
        "objectType"
      | 
        ## (occupation) 
        "occupation"
      | 
        ## (offset) 
        "offset"
      | 
        ## (opener) 
        "opener"
      | 
        ## (organization) 
        "org"
      | 
        ## (organization name) 
        "orgName"
      | 
        ## (original form) 
        "orig"
      | 
        ## (origin date) 
        "origDate"
      | 
        ## (origin place) 
        "origPlace"
      | 
        ## (origin) 
        "origin"
      | 
        ## (orthographic form) 
        "orth"
      | 
        ##
        "outputRendition"
      | 
        ## (paragraph) 
        "p"
      | 
        ## (pronunciation reference) 
        "pRef"
      | 
        ##
        "param"
      | 
        ##
        "paramList"
      | 
        ##
        "paramSpec"
      | 
        ## (participation description) 
        "particDesc"
      | 
        ## (path) 
        "path"
      | 
        ## (pause) 
        "pause"
      | 
        ## (page beginning) 
        "pb"
      | 
        ## (punctuation character) 
        "pc"
      | 
        ## (person) 
        "per"
      | 
        ## (performance) 
        "performance"
      | 
        ## (personal name) 
        "persName"
      | 
        ## (personal pronouns) 
        "persPronouns"
      | 
        ## (person) 
        "person"
      | 
        ## (personal group) 
        "personGrp"
      | 
        ##
        "persona"
      | 
        ## (phrase) 
        "phr"
      | 
        ## (physical description) 
        "physDesc"
      | 
        ## (place) 
        "place"
      | 
        ## (place name) 
        "placeName"
      | 
        ## (population) 
        "population"
      | 
        ## (part of speech) 
        "pos"
      | 
        ## (postal box or post office box) 
        "postBox"
      | 
        ## (postal code) 
        "postCode"
      | 
        ##
        "postscript"
      | 
        ##
        "precision"
      | 
        ## (prefix definition) 
        "prefixDef"
      | 
        ## (preparedness) 
        "preparedness"
      | 
        ## (principal researcher) 
        "principal"
      | 
        ## (text-profile description) 
        "profileDesc"
      | 
        ## (project description) 
        "projectDesc"
      | 
        ## (prologue) 
        "prologue"
      | 
        ## (pronunciation) 
        "pron"
      | 
        ## (provenance) 
        "provenance"
      | 
        ## (pointer) 
        "ptr"
      | 
        ## (publication place) 
        "pubPlace"
      | 
        ## (publication statement) 
        "publicationStmt"
      | 
        ## (publisher) 
        "publisher"
      | 
        ##
        "punctuation"
      | 
        ##
        "purpose"
      | 
        ## (quoted) 
        "q"
      | 
        ## (quotation) 
        "quotation"
      | 
        ## (quotation) 
        "quote"
      | 
        ## (ruby base) 
        "rb"
      | 
        ## (reading) 
        "rdg"
      | 
        ## (reading group) 
        "rdgGrp"
      | 
        ## (related entry) 
        "re"
      | 
        ## (recorded history) 
        "recordHist"
      | 
        ## (recording event) 
        "recording"
      | 
        ## (recording statement) 
        "recordingStmt"
      | 
        ##
        "redo"
      | 
        ## (reference) 
        "ref"
      | 
        ## (reference state) 
        "refState"
      | 
        ## (references declaration) 
        "refsDecl"
      | 
        ## (regularization) 
        "reg"
      | 
        ## (region) 
        "region"
      | 
        ##
        "relatedItem"
      | 
        ## (relationship) 
        "relation"
      | 
        ## (remarks) 
        "remarks"
      | 
        ## (rendition) 
        "rendition"
      | 
        ## (repository) 
        "repository"
      | 
        ## (residence) 
        "residence"
      | 
        ## (responsibility) 
        "resp"
      | 
        ## (statement of responsibility) 
        "respStmt"
      | 
        ## (responsibility) 
        "respons"
      | 
        ## (restore) 
        "restore"
      | 
        ##
        "retrace"
      | 
        ## (revision description) 
        "revisionDesc"
      | 
        ##
        "rhyme"
      | 
        ## (role) 
        "role"
      | 
        ## (role description) 
        "roleDesc"
      | 
        ## (role name) 
        "roleName"
      | 
        ## (root node) 
        "root"
      | 
        ## (row) 
        "row"
      | 
        ## (referencing string) 
        "rs"
      | 
        ## (ruby text) 
        "rt"
      | 
        ## (rubric) 
        "rubric"
      | 
        ## (ruby container) 
        "ruby"
      | 
        ## (s-unit) 
        "s"
      | 
        ## (speech or thought) 
        "said"
      | 
        ## (salutation) 
        "salute"
      | 
        ## (sampling declaration) 
        "samplingDecl"
      | 
        ## (schema reference) 
        "schemaRef"
      | 
        ## (schema specification) 
        "schemaSpec"
      | 
        ##
        "scriptDesc"
      | 
        ##
        "scriptNote"
      | 
        ## (script statement) 
        "scriptStmt"
      | 
        ## (seal) 
        "seal"
      | 
        ## (seal description) 
        "sealDesc"
      | 
        ## (second folio) 
        "secFol"
      | 
        ## (secluded text) 
        "secl"
      | 
        ## (arbitrary segment) 
        "seg"
      | 
        ## (segmentation) 
        "segmentation"
      | 
        ##
        "sense"
      | 
        ##
        "sequence"
      | 
        ## (series information) 
        "series"
      | 
        ## (series statement) 
        "seriesStmt"
      | 
        ## (setting) 
        "set"
      | 
        ##
        "setting"
      | 
        ## (setting description) 
        "settingDesc"
      | 
        ## (settlement) 
        "settlement"
      | 
        ## (sex) 
        "sex"
      | 
        ## (shift) 
        "shift"
      | 
        ## (Latin for thus or so
        ##                               ) 
        "sic"
      | 
        ## (signatures) 
        "signatures"
      | 
        ## (signature) 
        "signed"
      | 
        ## (so called) 
        "soCalled"
      | 
        ## (socio-economic status) 
        "socecStatus"
      | 
        ## (sound) 
        "sound"
      | 
        ## (source) 
        "source"
      | 
        ## (source description) 
        "sourceDesc"
      | 
        ##
        "sourceDoc"
      | 
        ## (speech) 
        "sp"
      | 
        ## (speech group) 
        "spGrp"
      | 
        ## (space) 
        "space"
      | 
        ##
        "span"
      | 
        ## (span group) 
        "spanGrp"
      | 
        ##
        "speaker"
      | 
        ## (specification description) 
        "specDesc"
      | 
        ## (specification group) 
        "specGrp"
      | 
        ## (reference to a specification group) 
        "specGrpRef"
      | 
        ## (specification list) 
        "specList"
      | 
        ## (sponsor) 
        "sponsor"
      | 
        ## (stage direction) 
        "stage"
      | 
        ## (stamp) 
        "stamp"
      | 
        ##
        "standOff"
      | 
        ## (state) 
        "state"
      | 
        ## (standard values) 
        "stdVals"
      | 
        ##
        "street"
      | 
        ## (stress) 
        "stress"
      | 
        ## (string value) 
        "string"
      | 
        ## (style definition language declaration) 
        "styleDefDecl"
      | 
        ## (subcategorization) 
        "subc"
      | 
        ## (substitution) 
        "subst"
      | 
        ## (substitution join) 
        "substJoin"
      | 
        ##
        "summary"
      | 
        ## (super entry) 
        "superEntry"
      | 
        ## (supplied) 
        "supplied"
      | 
        ## (support) 
        "support"
      | 
        ## (support description) 
        "supportDesc"
      | 
        ##
        "surface"
      | 
        ##
        "surfaceGrp"
      | 
        ## (surname) 
        "surname"
      | 
        ## (surplus) 
        "surplus"
      | 
        ## (surrogates) 
        "surrogates"
      | 
        ## (syllabification) 
        "syll"
      | 
        ## (symbolic value) 
        "symbol"
      | 
        ## (table) 
        "table"
      | 
        ## (tag) 
        "tag"
      | 
        ## (element usage) 
        "tagUsage"
      | 
        ## (tagging declaration) 
        "tagsDecl"
      | 
        ## (taxonomy) 
        "taxonomy"
      | 
        ## (technical stage direction) 
        "tech"
      | 
        ## (TEI corpus) 
        "teiCorpus"
      | 
        ## (TEI header) 
        "teiHeader"
      | 
        ## (term) 
        "term"
      | 
        ## (terrain) 
        "terrain"
      | 
        ## (text) 
        "text"
      | 
        ## (text classification) 
        "textClass"
      | 
        ## (text description) 
        "textDesc"
      | 
        ## (text language) 
        "textLang"
      | 
        ##
        "textNode"
      | 
        ##
        "then"
      | 
        ## (time) 
        "time"
      | 
        ## (timeline) 
        "timeline"
      | 
        ## (title) 
        "title"
      | 
        ## (title page) 
        "titlePage"
      | 
        ## (title part) 
        "titlePart"
      | 
        ## (title statement) 
        "titleStmt"
      | 
        ## (tense) 
        "tns"
      | 
        ##
        "trailer"
      | 
        ## (trait) 
        "trait"
      | 
        ##
        "transcriptionDesc"
      | 
        ##
        "transpose"
      | 
        ## (tree) 
        "tree"
      | 
        ## (underspecified embedding tree, so called because of its
        ##   characteristic shape when drawn) 
        "triangle"
      | 
        ## (typeface description) 
        "typeDesc"
      | 
        ## (typographic note) 
        "typeNote"
      | 
        ## (utterance) 
        "u"
      | 
        ## (unclear) 
        "unclear"
      | 
        ##
        "undo"
      | 
        ## (Unicode property name) 
        "unicodeName"
      | 
        ## (unicode property) 
        "unicodeProp"
      | 
        ## (unihan property) 
        "unihanProp"
      | 
        ##
        "unit"
      | 
        ## (unit declarations) 
        "unitDecl"
      | 
        ## (unit definition) 
        "unitDef"
      | 
        ## (usage) 
        "usg"
      | 
        ## (value alternation) 
        "vAlt"
      | 
        ## (collection of values) 
        "vColl"
      | 
        ## (value default) 
        "vDefault"
      | 
        ## (value label) 
        "vLabel"
      | 
        ## (merged collection of values) 
        "vMerge"
      | 
        ## (value negation) 
        "vNot"
      | 
        ## (value range) 
        "vRange"
      | 
        ## (value) 
        "val"
      | 
        ## (value description) 
        "valDesc"
      | 
        ##
        "valItem"
      | 
        ## (value list) 
        "valList"
      | 
        ## (value) 
        "value"
      | 
        ## (variant encoding) 
        "variantEncoding"
      | 
        ## (view) 
        "view"
      | 
        ## (vocal) 
        "vocal"
      | 
        ## (word) 
        "w"
      | 
        ## (watermark) 
        "watermark"
      | 
        ##
        "when"
      | 
        ## (width) 
        "width"
      | 
        ## (wit) 
        "wit"
      | 
        ## (witness detail) 
        "witDetail"
      | 
        ## (fragmented witness end) 
        "witEnd"
      | 
        ## (fragmented witness start) 
        "witStart"
      | 
        ## (witness) 
        "witness"
      | 
        ## (writing) 
        "writing"
      | 
        ## (non-TEI metadata) 
        "xenoData"
      | 
        ## (cross-reference phrase) 
        "xr"
      | 
        ##
        "zone"
    },
    empty
  }
cust_macroRef =
  
  ## points to the specification for some pattern which is to be included in a schema [22.7. Macro Specifications]
  element tei:macroRef {
    empty,
    cust_att.global.attributes,
    
    ## 
    ## Suggested values include: 1] macro.limitedContent (paragraph content); 2] macro.paraContent (paragraph content); 3] macro.phraseSeq (phrase sequence); 4] macro.phraseSeq.limited (limited phrase sequence); 5] macro.specialPara ('special' paragraph content); 6] macro.xtext (extended text)
    attribute key {
      
      ## (paragraph content) 
      "macro.limitedContent"
      | 
        ## (paragraph content) 
        "macro.paraContent"
      | 
        ## (phrase sequence) 
        "macro.phraseSeq"
      | 
        ## (limited phrase sequence) 
        "macro.phraseSeq.limited"
      | 
        ## ('special' paragraph content) 
        "macro.specialPara"
      | 
        ## (extended text) 
        "macro.xtext"
      | xsd:token { pattern = "[^\p{C}\p{Z}]+" }
    },
    empty
  }
cust_moduleRef =
  
  ## (module reference) references a module which is to be incorporated into a schema. [22.2. Modules and Schemas]
  element tei:moduleRef {
    (cust_content?)
    >> sch:pattern [
         id =
           "tei_customization-moduleRef-if-url-then-prefix-constraint-rule-19"
         "\x{a}" ~
         "            "
         sch:rule [
           context = "tei:moduleRef[ @url ]"
           "\x{a}" ~
           "                           "
           sch:assert [
             test = "@prefix"
             " a ＜moduleRef＞ that uses the url= attribute should\x{a}" ~
             "                        have a prefix= attribute, too "
           ]
           "\x{a}" ~
           "                        "
         ]
         "\x{a}" ~
         "         "
       ]
    >> sch:pattern [
         id =
           "tei_customization-moduleRef-no-duplicate-modules-constraint-rule-20"
         "\x{a}" ~
         "            "
         sch:rule [
           context = "tei:moduleRef[ @key ]"
           "\x{a}" ~
           "                           "
           sch:let [ name = "mykey" value = "@key" ]
           "\x{a}" ~
           "                           "
           sch:report [
             test = "preceding-sibling::tei:moduleRef[ @key eq $mykey ]"
             "The\x{a}" ~
             "                          '"
             sch:value-of [ select = "@key" ]
             "' module is included (by reference) more\x{a}" ~
             "                        than once"
           ]
           "\x{a}" ~
           "                        "
         ]
         "\x{a}" ~
         "         "
       ]
    >> sch:pattern [
         id =
           "tei_customization-moduleRef-need-required-constraint-rule-21"
         "\x{a}" ~
         "            "
         sch:rule [
           context = "tei:moduleRef[ @except ]"
           "\x{a}" ~
           "                           "
           sch:let [
             name = "exceptions"
             value = "tokenize( @except, '\s+' )"
           ]
           "\x{a}" ~
           "                           \x{a}" ~
           "                           \x{a}" ~
           "                           \x{a}" ~
           "                           \x{a}" ~
           "                           \x{a}" ~
           "                           \x{a}" ~
           "                           "
           sch:report [
             test = "'TEI'=$exceptions"
             "Removing ＜TEI＞ from your schema\x{a}" ~
             "                      guarantees it is not TEI conformant, and will will likely be outright\x{a}" ~
             "                      invalid"
           ]
           "\x{a}" ~
           "                           "
           sch:report [
             test = "'teiHeader'=$exceptions"
             "Removing ＜teiHeader＞ from your\x{a}" ~
             "                      schema guarantees it is not TEI conformant"
           ]
           "\x{a}" ~
           "                           "
           sch:report [
             test = "'fileDesc'=$exceptions"
             "Removing ＜fileDesc＞ from your\x{a}" ~
             "                      schema guarantees it is not TEI conformant"
           ]
           "\x{a}" ~
           "                           "
           sch:report [
             test = "'titleStmt'=$exceptions"
             "Removing ＜titleStmt＞ from your\x{a}" ~
             "                      schema guarantees it is not TEI conformant"
           ]
           "\x{a}" ~
           "                           "
           sch:report [
             test = "'title'=$exceptions"
             "Removing ＜title＞ from your schema\x{a}" ~
             "                      guarantees it is not TEI conformant"
           ]
           "\x{a}" ~
           "                           "
           sch:report [
             test = "'publicationStmt'=$exceptions"
             "Removing\x{a}" ~
             "                      ＜publicationStmt＞ from your schema guarantees it is not TEI\x{a}" ~
             "                      conformant"
           ]
           "\x{a}" ~
           "                           "
           sch:report [
             test = "'sourceDesc'=$exceptions"
             "Removing ＜sourceDesc＞ from\x{a}" ~
             "                      your schema guarantees it is not TEI conformant"
           ]
           "\x{a}" ~
           "                        "
         ]
         "\x{a}" ~
         "         "
       ]
    >> sch:pattern [
         id =
           "tei_customization-moduleRef-include-required-constraint-rule-22"
         "\x{a}" ~
         "            "
         sch:rule [
           context =
             "tei:moduleRef[ @key eq 'textstructure' and @include ]"
           "\x{a}" ~
           "                           "
           sch:let [
             name = "inclusions"
             value = "tokenize( @include, '\s+' )"
           ]
           "\x{a}" ~
           "                           "
           sch:report [
             test = "not('TEI'=$inclusions)"
             "Not including ＜TEI＞ in your\x{a}" ~
             "                            schema guarantees it is not TEI conformant, and will likely be outright\x{a}" ~
             "                            invalid"
           ]
           "\x{a}" ~
           "                        "
         ]
         "\x{a}" ~
         "            "
         sch:rule [
           context = "tei:moduleRef[ @key eq 'header' and @include ]"
           "\x{a}" ~
           "                           "
           sch:let [
             name = "inclusions"
             value = "tokenize( @include, '\s+' )"
           ]
           "\x{a}" ~
           "                           "
           sch:report [
             test = "not('teiHeader'=$inclusions)"
             "Not including ＜teiHeader＞\x{a}" ~
             "                            in your schema guarantees it is not TEI conformant"
           ]
           "\x{a}" ~
           "                        "
         ]
         "\x{a}" ~
         "            "
         sch:rule [
           context = "tei:moduleRef[ @key eq 'header' and @include ]"
           "\x{a}" ~
           "                           "
           sch:let [
             name = "inclusions"
             value = "tokenize( @include, '\s+' )"
           ]
           "\x{a}" ~
           "                           "
           sch:report [
             test = "not('fileDesc'=$inclusions)"
             "Not including ＜fileDesc＞ in\x{a}" ~
             "                            your schema guarantees it is not TEI conformant"
           ]
           "\x{a}" ~
           "                        "
         ]
         "\x{a}" ~
         "            "
         sch:rule [
           context = "tei:moduleRef[ @key eq 'header' and @include ]"
           "\x{a}" ~
           "                           "
           sch:let [
             name = "inclusions"
             value = "tokenize( @include, '\s+' )"
           ]
           "\x{a}" ~
           "                           "
           sch:report [
             test = "not('titleStmt'=$inclusions)"
             "Not including ＜titleStmt＞\x{a}" ~
             "                            in your schema guarantees it is not TEI conformant"
           ]
           "\x{a}" ~
           "                        "
         ]
         "\x{a}" ~
         "            "
         sch:rule [
           context = "tei:moduleRef[ @key eq 'header' and @include ]"
           "\x{a}" ~
           "                           "
           sch:let [
             name = "inclusions"
             value = "tokenize( @include, '\s+' )"
           ]
           "\x{a}" ~
           "                           "
           sch:report [
             test = "not('publicationStmt'=$inclusions)"
             "Not including\x{a}" ~
             "                            ＜publicationStmt＞ in your schema guarantees it is not TEI\x{a}" ~
             "                            conformant"
           ]
           "\x{a}" ~
           "                        "
         ]
         "\x{a}" ~
         "            "
         sch:rule [
           context = "tei:moduleRef[ @key eq 'header' and @include ]"
           "\x{a}" ~
           "                           "
           sch:let [
             name = "inclusions"
             value = "tokenize( @include, '\s+' )"
           ]
           "\x{a}" ~
           "                           "
           sch:report [
             test = "not('sourceDesc'=$inclusions)"
             "Not including\x{a}" ~
             "                            ＜sourceDesc＞ in your schema guarantees it is not TEI\x{a}" ~
             "                            conformant"
           ]
           "\x{a}" ~
           "                        "
         ]
         "\x{a}" ~
         "            "
         sch:rule [
           context = "tei:moduleRef[ @key eq 'core' and @include ]"
           "\x{a}" ~
           "                           "
           sch:let [
             name = "inclusions"
             value = "tokenize( @include, '\s+' )"
           ]
           "\x{a}" ~
           "                           "
           sch:report [
             test = "not('title'=$inclusions)"
             "Not including ＜title＞ in your\x{a}" ~
             "                            schema guarantees it is not TEI conformant"
           ]
           "\x{a}" ~
           "                        "
         ]
         "\x{a}" ~
         "         "
       ]
    >> sch:pattern [
         id =
           "tei_customization-moduleRef-element-is-in-module-constraint-rule-29"
         "\x{a}" ~
         "            "
         sch:rule [
           context = "tei:moduleRef[@key eq 'header']"
           "\x{a}" ~
           "                           "
           sch:let [
             name = "include"
             value = "tokenize( normalize-space(@include),' ')"
           ]
           "\x{a}" ~
           "                           "
           sch:let [
             name = "except"
             value = "tokenize( normalize-space(@except), ' ')"
           ]
           "\x{a}" ~
           "                           "
           sch:assert [
             test =
               "every $gi in $include satisfies $gi = ( 'teiHeader', 'fileDesc', 'titleStmt', 'sponsor', 'funder', 'principal', 'editionStmt', 'edition', 'extent', 'publicationStmt', 'distributor', 'authority', 'idno', 'availability', 'licence', 'seriesStmt', 'notesStmt', 'sourceDesc', 'biblFull', 'encodingDesc', 'schemaRef', 'projectDesc', 'samplingDecl', 'editorialDecl', 'correction', 'normalization', 'quotation', 'hyphenation', 'segmentation', 'stdVals', 'interpretation', 'punctuation', 'tagsDecl', 'tagUsage', 'namespace', 'rendition', 'styleDefDecl', 'refsDecl', 'citeStructure', 'citeData', 'cRefPattern', 'prefixDef', 'listPrefixDef', 'refState', 'classDecl', 'taxonomy', 'category', 'catDesc', 'geoDecl', 'unitDecl', 'unitDef', 'conversion', 'appInfo', 'application', 'profileDesc', 'handNote', 'abstract', 'creation', 'langUsage', 'language', 'textClass', 'keywords', 'classCode', 'catRef', 'calendarDesc', 'calendar', 'correspDesc', 'correspAction', 'correspContext', 'xenoData', 'revisionDesc', 'change', 'scriptNote', 'listChange' )"
             "One or more of the elements included on the '"
             sch:value-of [ select = "@key" ]
             "' ＜moduleRef＞ are not actually available in that module"
           ]
           "\x{a}" ~
           "                           "
           sch:assert [
             test =
               "every $gi in $except  satisfies $gi = ( 'teiHeader', 'fileDesc', 'titleStmt', 'sponsor', 'funder', 'principal', 'editionStmt', 'edition', 'extent', 'publicationStmt', 'distributor', 'authority', 'idno', 'availability', 'licence', 'seriesStmt', 'notesStmt', 'sourceDesc', 'biblFull', 'encodingDesc', 'schemaRef', 'projectDesc', 'samplingDecl', 'editorialDecl', 'correction', 'normalization', 'quotation', 'hyphenation', 'segmentation', 'stdVals', 'interpretation', 'punctuation', 'tagsDecl', 'tagUsage', 'namespace', 'rendition', 'styleDefDecl', 'refsDecl', 'citeStructure', 'citeData', 'cRefPattern', 'prefixDef', 'listPrefixDef', 'refState', 'classDecl', 'taxonomy', 'category', 'catDesc', 'geoDecl', 'unitDecl', 'unitDef', 'conversion', 'appInfo', 'application', 'profileDesc', 'handNote', 'abstract', 'creation', 'langUsage', 'language', 'textClass', 'keywords', 'classCode', 'catRef', 'calendarDesc', 'calendar', 'correspDesc', 'correspAction', 'correspContext', 'xenoData', 'revisionDesc', 'change', 'scriptNote', 'listChange' )"
             "One or more of the elements excepted on the '"
             sch:value-of [ select = "@key" ]
             "' ＜moduleRef＞ are not actually available in that module"
           ]
           "\x{a}" ~
           "                        "
         ]
         "\x{a}" ~
         "            "
         sch:rule [
           context = "tei:moduleRef[@key eq 'core']"
           "\x{a}" ~
           "                           "
           sch:let [
             name = "include"
             value = "tokenize( normalize-space(@include),' ')"
           ]
           "\x{a}" ~
           "                           "
           sch:let [
             name = "except"
             value = "tokenize( normalize-space(@except), ' ')"
           ]
           "\x{a}" ~
           "                           "
           sch:assert [
             test =
               "every $gi in $include satisfies $gi = ( 'p', 'foreign', 'emph', 'hi', 'distinct', 'said', 'quote', 'q', 'cit', 'mentioned', 'soCalled', 'desc', 'gloss', 'term', 'ruby', 'rb', 'rt', 'sic', 'corr', 'choice', 'reg', 'orig', 'gap', 'add', 'del', 'unclear', 'name', 'rs', 'email', 'address', 'addrLine', 'street', 'postCode', 'postBox', 'num', 'measure', 'measureGrp', 'unit', 'date', 'time', 'abbr', 'expan', 'ptr', 'ref', 'list', 'item', 'label', 'head', 'headLabel', 'headItem', 'note', 'noteGrp', 'index', 'media', 'graphic', 'binaryObject', 'milestone', 'gb', 'pb', 'lb', 'cb', 'analytic', 'monogr', 'series', 'author', 'editor', 'respStmt', 'resp', 'title', 'meeting', 'imprint', 'publisher', 'biblScope', 'citedRange', 'pubPlace', 'bibl', 'biblStruct', 'listBibl', 'relatedItem', 'l', 'lg', 'sp', 'speaker', 'stage', 'teiCorpus', 'divGen', 'textLang' )"
             "One or more of the elements included on the '"
             sch:value-of [ select = "@key" ]
             "' ＜moduleRef＞ are not actually available in that module"
           ]
           "\x{a}" ~
           "                           "
           sch:assert [
             test =
               "every $gi in $except  satisfies $gi = ( 'p', 'foreign', 'emph', 'hi', 'distinct', 'said', 'quote', 'q', 'cit', 'mentioned', 'soCalled', 'desc', 'gloss', 'term', 'ruby', 'rb', 'rt', 'sic', 'corr', 'choice', 'reg', 'orig', 'gap', 'add', 'del', 'unclear', 'name', 'rs', 'email', 'address', 'addrLine', 'street', 'postCode', 'postBox', 'num', 'measure', 'measureGrp', 'unit', 'date', 'time', 'abbr', 'expan', 'ptr', 'ref', 'list', 'item', 'label', 'head', 'headLabel', 'headItem', 'note', 'noteGrp', 'index', 'media', 'graphic', 'binaryObject', 'milestone', 'gb', 'pb', 'lb', 'cb', 'analytic', 'monogr', 'series', 'author', 'editor', 'respStmt', 'resp', 'title', 'meeting', 'imprint', 'publisher', 'biblScope', 'citedRange', 'pubPlace', 'bibl', 'biblStruct', 'listBibl', 'relatedItem', 'l', 'lg', 'sp', 'speaker', 'stage', 'teiCorpus', 'divGen', 'textLang' )"
             "One or more of the elements excepted on the '"
             sch:value-of [ select = "@key" ]
             "' ＜moduleRef＞ are not actually available in that module"
           ]
           "\x{a}" ~
           "                        "
         ]
         "\x{a}" ~
         "            "
         sch:rule [
           context = "tei:moduleRef[@key eq 'textstructure']"
           "\x{a}" ~
           "                           "
           sch:let [
             name = "include"
             value = "tokenize( normalize-space(@include),' ')"
           ]
           "\x{a}" ~
           "                           "
           sch:let [
             name = "except"
             value = "tokenize( normalize-space(@except), ' ')"
           ]
           "\x{a}" ~
           "                           "
           sch:assert [
             test =
               "every $gi in $include satisfies $gi = ( 'TEI', 'text', 'body', 'group', 'floatingText', 'div', 'div1', 'div2', 'div3', 'div4', 'div5', 'div6', 'div7', 'trailer', 'byline', 'dateline', 'argument', 'epigraph', 'opener', 'closer', 'salute', 'signed', 'postscript', 'titlePage', 'docTitle', 'titlePart', 'docAuthor', 'imprimatur', 'docEdition', 'docImprint', 'docDate', 'front', 'back' )"
             "One or more of the elements included on the '"
             sch:value-of [ select = "@key" ]
             "' ＜moduleRef＞ are not actually available in that module"
           ]
           "\x{a}" ~
           "                           "
           sch:assert [
             test =
               "every $gi in $except  satisfies $gi = ( 'TEI', 'text', 'body', 'group', 'floatingText', 'div', 'div1', 'div2', 'div3', 'div4', 'div5', 'div6', 'div7', 'trailer', 'byline', 'dateline', 'argument', 'epigraph', 'opener', 'closer', 'salute', 'signed', 'postscript', 'titlePage', 'docTitle', 'titlePart', 'docAuthor', 'imprimatur', 'docEdition', 'docImprint', 'docDate', 'front', 'back' )"
             "One or more of the elements excepted on the '"
             sch:value-of [ select = "@key" ]
             "' ＜moduleRef＞ are not actually available in that module"
           ]
           "\x{a}" ~
           "                        "
         ]
         "\x{a}" ~
         "            "
         sch:rule [
           context = "tei:moduleRef[@key eq 'gaiji']"
           "\x{a}" ~
           "                           "
           sch:let [
             name = "include"
             value = "tokenize( normalize-space(@include),' ')"
           ]
           "\x{a}" ~
           "                           "
           sch:let [
             name = "except"
             value = "tokenize( normalize-space(@except), ' ')"
           ]
           "\x{a}" ~
           "                           "
           sch:assert [
             test =
               "every $gi in $include satisfies $gi = ( 'g', 'charDecl', 'char', 'glyph', 'localProp', 'mapping', 'unihanProp', 'unicodeProp', 'value', 'unicodeName', 'localName', 'glyphName', 'charProp', 'charName' )"
             "One or more of the elements included on the '"
             sch:value-of [ select = "@key" ]
             "' ＜moduleRef＞ are not actually available in that module"
           ]
           "\x{a}" ~
           "                           "
           sch:assert [
             test =
               "every $gi in $except  satisfies $gi = ( 'g', 'charDecl', 'char', 'glyph', 'localProp', 'mapping', 'unihanProp', 'unicodeProp', 'value', 'unicodeName', 'localName', 'glyphName', 'charProp', 'charName' )"
             "One or more of the elements excepted on the '"
             sch:value-of [ select = "@key" ]
             "' ＜moduleRef＞ are not actually available in that module"
           ]
           "\x{a}" ~
           "                        "
         ]
         "\x{a}" ~
         "            "
         sch:rule [
           context = "tei:moduleRef[@key eq 'verse']"
           "\x{a}" ~
           "                           "
           sch:let [
             name = "include"
             value = "tokenize( normalize-space(@include),' ')"
           ]
           "\x{a}" ~
           "                           "
           sch:let [
             name = "except"
             value = "tokenize( normalize-space(@except), ' ')"
           ]
           "\x{a}" ~
           "                           "
           sch:assert [
             test =
               "every $gi in $include satisfies $gi = ( 'metDecl', 'metSym', 'caesura', 'rhyme' )"
             "One or more of the elements included on the '"
             sch:value-of [ select = "@key" ]
             "' ＜moduleRef＞ are not actually available in that module"
           ]
           "\x{a}" ~
           "                           "
           sch:assert [
             test =
               "every $gi in $except  satisfies $gi = ( 'metDecl', 'metSym', 'caesura', 'rhyme' )"
             "One or more of the elements excepted on the '"
             sch:value-of [ select = "@key" ]
             "' ＜moduleRef＞ are not actually available in that module"
           ]
           "\x{a}" ~
           "                        "
         ]
         "\x{a}" ~
         "            "
         sch:rule [
           context = "tei:moduleRef[@key eq 'drama']"
           "\x{a}" ~
           "                           "
           sch:let [
             name = "include"
             value = "tokenize( normalize-space(@include),' ')"
           ]
           "\x{a}" ~
           "                           "
           sch:let [
             name = "except"
             value = "tokenize( normalize-space(@except), ' ')"
           ]
           "\x{a}" ~
           "                           "
           sch:assert [
             test =
               "every $gi in $include satisfies $gi = ( 'set', 'prologue', 'epilogue', 'performance', 'castList', 'castGroup', 'castItem', 'role', 'roleDesc', 'actor', 'spGrp', 'move', 'view', 'camera', 'sound', 'caption', 'tech' )"
             "One or more of the elements included on the '"
             sch:value-of [ select = "@key" ]
             "' ＜moduleRef＞ are not actually available in that module"
           ]
           "\x{a}" ~
           "                           "
           sch:assert [
             test =
               "every $gi in $except  satisfies $gi = ( 'set', 'prologue', 'epilogue', 'performance', 'castList', 'castGroup', 'castItem', 'role', 'roleDesc', 'actor', 'spGrp', 'move', 'view', 'camera', 'sound', 'caption', 'tech' )"
             "One or more of the elements excepted on the '"
             sch:value-of [ select = "@key" ]
             "' ＜moduleRef＞ are not actually available in that module"
           ]
           "\x{a}" ~
           "                        "
         ]
         "\x{a}" ~
         "            "
         sch:rule [
           context = "tei:moduleRef[@key eq 'spoken']"
           "\x{a}" ~
           "                           "
           sch:let [
             name = "include"
             value = "tokenize( normalize-space(@include),' ')"
           ]
           "\x{a}" ~
           "                           "
           sch:let [
             name = "except"
             value = "tokenize( normalize-space(@except), ' ')"
           ]
           "\x{a}" ~
           "                           "
           sch:assert [
             test =
               "every $gi in $include satisfies $gi = ( 'scriptStmt', 'recordingStmt', 'recording', 'equipment', 'broadcast', 'transcriptionDesc', 'u', 'pause', 'vocal', 'kinesic', 'incident', 'writing', 'shift', 'annotationBlock' )"
             "One or more of the elements included on the '"
             sch:value-of [ select = "@key" ]
             "' ＜moduleRef＞ are not actually available in that module"
           ]
           "\x{a}" ~
           "                           "
           sch:assert [
             test =
               "every $gi in $except  satisfies $gi = ( 'scriptStmt', 'recordingStmt', 'recording', 'equipment', 'broadcast', 'transcriptionDesc', 'u', 'pause', 'vocal', 'kinesic', 'incident', 'writing', 'shift', 'annotationBlock' )"
             "One or more of the elements excepted on the '"
             sch:value-of [ select = "@key" ]
             "' ＜moduleRef＞ are not actually available in that module"
           ]
           "\x{a}" ~
           "                        "
         ]
         "\x{a}" ~
         "            "
         sch:rule [
           context = "tei:moduleRef[@key eq 'dictionaries']"
           "\x{a}" ~
           "                           "
           sch:let [
             name = "include"
             value = "tokenize( normalize-space(@include),' ')"
           ]
           "\x{a}" ~
           "                           "
           sch:let [
             name = "except"
             value = "tokenize( normalize-space(@except), ' ')"
           ]
           "\x{a}" ~
           "                           "
           sch:assert [
             test =
               "every $gi in $include satisfies $gi = ( 'superEntry', 'entry', 'entryFree', 'hom', 'sense', 'dictScrap', 'form', 'orth', 'pron', 'hyph', 'syll', 'stress', 'gram', 'gen', 'number', 'case', 'per', 'tns', 'mood', 'iType', 'gramGrp', 'pos', 'subc', 'colloc', 'def', 'etym', 'lang', 'usg', 'lbl', 'xr', 're', 'oRef', 'pRef' )"
             "One or more of the elements included on the '"
             sch:value-of [ select = "@key" ]
             "' ＜moduleRef＞ are not actually available in that module"
           ]
           "\x{a}" ~
           "                           "
           sch:assert [
             test =
               "every $gi in $except  satisfies $gi = ( 'superEntry', 'entry', 'entryFree', 'hom', 'sense', 'dictScrap', 'form', 'orth', 'pron', 'hyph', 'syll', 'stress', 'gram', 'gen', 'number', 'case', 'per', 'tns', 'mood', 'iType', 'gramGrp', 'pos', 'subc', 'colloc', 'def', 'etym', 'lang', 'usg', 'lbl', 'xr', 're', 'oRef', 'pRef' )"
             "One or more of the elements excepted on the '"
             sch:value-of [ select = "@key" ]
             "' ＜moduleRef＞ are not actually available in that module"
           ]
           "\x{a}" ~
           "                        "
         ]
         "\x{a}" ~
         "            "
         sch:rule [
           context = "tei:moduleRef[@key eq 'msdescription']"
           "\x{a}" ~
           "                           "
           sch:let [
             name = "include"
             value = "tokenize( normalize-space(@include),' ')"
           ]
           "\x{a}" ~
           "                           "
           sch:let [
             name = "except"
             value = "tokenize( normalize-space(@except), ' ')"
           ]
           "\x{a}" ~
           "                           "
           sch:assert [
             test =
               "every $gi in $include satisfies $gi = ( 'msDesc', 'catchwords', 'dimensions', 'dim', 'height', 'depth', 'width', 'heraldry', 'locus', 'locusGrp', 'material', 'objectType', 'origDate', 'origPlace', 'secFol', 'signatures', 'stamp', 'watermark', 'msIdentifier', 'institution', 'repository', 'collection', 'altIdentifier', 'msName', 'colophon', 'explicit', 'filiation', 'finalRubric', 'incipit', 'msContents', 'msItem', 'msItemStruct', 'rubric', 'summary', 'physDesc', 'objectDesc', 'supportDesc', 'support', 'collation', 'foliation', 'condition', 'layoutDesc', 'layout', 'handDesc', 'typeDesc', 'typeNote', 'scriptDesc', 'musicNotation', 'decoDesc', 'decoNote', 'additions', 'bindingDesc', 'binding', 'sealDesc', 'seal', 'accMat', 'history', 'origin', 'provenance', 'acquisition', 'additional', 'adminInfo', 'recordHist', 'source', 'custodialHist', 'custEvent', 'surrogates', 'msPart', 'msFrag' )"
             "One or more of the elements included on the '"
             sch:value-of [ select = "@key" ]
             "' ＜moduleRef＞ are not actually available in that module"
           ]
           "\x{a}" ~
           "                           "
           sch:assert [
             test =
               "every $gi in $except  satisfies $gi = ( 'msDesc', 'catchwords', 'dimensions', 'dim', 'height', 'depth', 'width', 'heraldry', 'locus', 'locusGrp', 'material', 'objectType', 'origDate', 'origPlace', 'secFol', 'signatures', 'stamp', 'watermark', 'msIdentifier', 'institution', 'repository', 'collection', 'altIdentifier', 'msName', 'colophon', 'explicit', 'filiation', 'finalRubric', 'incipit', 'msContents', 'msItem', 'msItemStruct', 'rubric', 'summary', 'physDesc', 'objectDesc', 'supportDesc', 'support', 'collation', 'foliation', 'condition', 'layoutDesc', 'layout', 'handDesc', 'typeDesc', 'typeNote', 'scriptDesc', 'musicNotation', 'decoDesc', 'decoNote', 'additions', 'bindingDesc', 'binding', 'sealDesc', 'seal', 'accMat', 'history', 'origin', 'provenance', 'acquisition', 'additional', 'adminInfo', 'recordHist', 'source', 'custodialHist', 'custEvent', 'surrogates', 'msPart', 'msFrag' )"
             "One or more of the elements excepted on the '"
             sch:value-of [ select = "@key" ]
             "' ＜moduleRef＞ are not actually available in that module"
           ]
           "\x{a}" ~
           "                        "
         ]
         "\x{a}" ~
         "            "
         sch:rule [
           context = "tei:moduleRef[@key eq 'transcr']"
           "\x{a}" ~
           "                           "
           sch:let [
             name = "include"
             value = "tokenize( normalize-space(@include),' ')"
           ]
           "\x{a}" ~
           "                           "
           sch:let [
             name = "except"
             value = "tokenize( normalize-space(@except), ' ')"
           ]
           "\x{a}" ~
           "                           "
           sch:assert [
             test =
               "every $gi in $include satisfies $gi = ( 'facsimile', 'sourceDoc', 'surface', 'surfaceGrp', 'zone', 'path', 'addSpan', 'damage', 'damageSpan', 'delSpan', 'ex', 'fw', 'handNotes', 'handShift', 'am', 'restore', 'space', 'subst', 'substJoin', 'supplied', 'surplus', 'secl', 'line', 'listTranspose', 'metamark', 'mod', 'redo', 'retrace', 'transpose', 'undo' )"
             "One or more of the elements included on the '"
             sch:value-of [ select = "@key" ]
             "' ＜moduleRef＞ are not actually available in that module"
           ]
           "\x{a}" ~
           "                           "
           sch:assert [
             test =
               "every $gi in $except  satisfies $gi = ( 'facsimile', 'sourceDoc', 'surface', 'surfaceGrp', 'zone', 'path', 'addSpan', 'damage', 'damageSpan', 'delSpan', 'ex', 'fw', 'handNotes', 'handShift', 'am', 'restore', 'space', 'subst', 'substJoin', 'supplied', 'surplus', 'secl', 'line', 'listTranspose', 'metamark', 'mod', 'redo', 'retrace', 'transpose', 'undo' )"
             "One or more of the elements excepted on the '"
             sch:value-of [ select = "@key" ]
             "' ＜moduleRef＞ are not actually available in that module"
           ]
           "\x{a}" ~
           "                        "
         ]
         "\x{a}" ~
         "            "
         sch:rule [
           context = "tei:moduleRef[@key eq 'textcrit']"
           "\x{a}" ~
           "                           "
           sch:let [
             name = "include"
             value = "tokenize( normalize-space(@include),' ')"
           ]
           "\x{a}" ~
           "                           "
           sch:let [
             name = "except"
             value = "tokenize( normalize-space(@except), ' ')"
           ]
           "\x{a}" ~
           "                           "
           sch:assert [
             test =
               "every $gi in $include satisfies $gi = ( 'app', 'listApp', 'lem', 'rdg', 'rdgGrp', 'witDetail', 'wit', 'listWit', 'witness', 'witStart', 'witEnd', 'lacunaStart', 'lacunaEnd', 'variantEncoding' )"
             "One or more of the elements included on the '"
             sch:value-of [ select = "@key" ]
             "' ＜moduleRef＞ are not actually available in that module"
           ]
           "\x{a}" ~
           "                           "
           sch:assert [
             test =
               "every $gi in $except  satisfies $gi = ( 'app', 'listApp', 'lem', 'rdg', 'rdgGrp', 'witDetail', 'wit', 'listWit', 'witness', 'witStart', 'witEnd', 'lacunaStart', 'lacunaEnd', 'variantEncoding' )"
             "One or more of the elements excepted on the '"
             sch:value-of [ select = "@key" ]
             "' ＜moduleRef＞ are not actually available in that module"
           ]
           "\x{a}" ~
           "                        "
         ]
         "\x{a}" ~
         "            "
         sch:rule [
           context = "tei:moduleRef[@key eq 'namesdates']"
           "\x{a}" ~
           "                           "
           sch:let [
             name = "include"
             value = "tokenize( normalize-space(@include),' ')"
           ]
           "\x{a}" ~
           "                           "
           sch:let [
             name = "except"
             value = "tokenize( normalize-space(@except), ' ')"
           ]
           "\x{a}" ~
           "                           "
           sch:assert [
             test =
               "every $gi in $include satisfies $gi = ( 'orgName', 'persName', 'surname', 'forename', 'genName', 'nameLink', 'addName', 'roleName', 'placeName', 'bloc', 'country', 'region', 'settlement', 'district', 'offset', 'geogName', 'geogFeat', 'affiliation', 'age', 'birth', 'climate', 'death', 'education', 'event', 'faith', 'floruit', 'geo', 'langKnowledge', 'langKnown', 'listOrg', 'listEvent', 'listPerson', 'listPlace', 'listRelation', 'location', 'nationality', 'occupation', 'org', 'person', 'persona', 'personGrp', 'persPronouns', 'place', 'population', 'relation', 'residence', 'sex', 'socecStatus', 'state', 'terrain', 'trait', 'objectName', 'object', 'listObject', 'objectIdentifier', 'nym', 'listNym' )"
             "One or more of the elements included on the '"
             sch:value-of [ select = "@key" ]
             "' ＜moduleRef＞ are not actually available in that module"
           ]
           "\x{a}" ~
           "                           "
           sch:assert [
             test =
               "every $gi in $except  satisfies $gi = ( 'orgName', 'persName', 'surname', 'forename', 'genName', 'nameLink', 'addName', 'roleName', 'placeName', 'bloc', 'country', 'region', 'settlement', 'district', 'offset', 'geogName', 'geogFeat', 'affiliation', 'age', 'birth', 'climate', 'death', 'education', 'event', 'faith', 'floruit', 'geo', 'langKnowledge', 'langKnown', 'listOrg', 'listEvent', 'listPerson', 'listPlace', 'listRelation', 'location', 'nationality', 'occupation', 'org', 'person', 'persona', 'personGrp', 'persPronouns', 'place', 'population', 'relation', 'residence', 'sex', 'socecStatus', 'state', 'terrain', 'trait', 'objectName', 'object', 'listObject', 'objectIdentifier', 'nym', 'listNym' )"
             "One or more of the elements excepted on the '"
             sch:value-of [ select = "@key" ]
             "' ＜moduleRef＞ are not actually available in that module"
           ]
           "\x{a}" ~
           "                        "
         ]
         "\x{a}" ~
         "            "
         sch:rule [
           context = "tei:moduleRef[@key eq 'figures']"
           "\x{a}" ~
           "                           "
           sch:let [
             name = "include"
             value = "tokenize( normalize-space(@include),' ')"
           ]
           "\x{a}" ~
           "                           "
           sch:let [
             name = "except"
             value = "tokenize( normalize-space(@except), ' ')"
           ]
           "\x{a}" ~
           "                           "
           sch:assert [
             test =
               "every $gi in $include satisfies $gi = ( 'table', 'row', 'cell', 'formula', 'notatedMusic', 'figure', 'figDesc' )"
             "One or more of the elements included on the '"
             sch:value-of [ select = "@key" ]
             "' ＜moduleRef＞ are not actually available in that module"
           ]
           "\x{a}" ~
           "                           "
           sch:assert [
             test =
               "every $gi in $except  satisfies $gi = ( 'table', 'row', 'cell', 'formula', 'notatedMusic', 'figure', 'figDesc' )"
             "One or more of the elements excepted on the '"
             sch:value-of [ select = "@key" ]
             "' ＜moduleRef＞ are not actually available in that module"
           ]
           "\x{a}" ~
           "                        "
         ]
         "\x{a}" ~
         "            "
         sch:rule [
           context = "tei:moduleRef[@key eq 'corpus']"
           "\x{a}" ~
           "                           "
           sch:let [
             name = "include"
             value = "tokenize( normalize-space(@include),' ')"
           ]
           "\x{a}" ~
           "                           "
           sch:let [
             name = "except"
             value = "tokenize( normalize-space(@except), ' ')"
           ]
           "\x{a}" ~
           "                           "
           sch:assert [
             test =
               "every $gi in $include satisfies $gi = ( 'textDesc', 'particDesc', 'settingDesc', 'channel', 'constitution', 'derivation', 'domain', 'factuality', 'interaction', 'preparedness', 'purpose', 'setting', 'locale', 'activity' )"
             "One or more of the elements included on the '"
             sch:value-of [ select = "@key" ]
             "' ＜moduleRef＞ are not actually available in that module"
           ]
           "\x{a}" ~
           "                           "
           sch:assert [
             test =
               "every $gi in $except  satisfies $gi = ( 'textDesc', 'particDesc', 'settingDesc', 'channel', 'constitution', 'derivation', 'domain', 'factuality', 'interaction', 'preparedness', 'purpose', 'setting', 'locale', 'activity' )"
             "One or more of the elements excepted on the '"
             sch:value-of [ select = "@key" ]
             "' ＜moduleRef＞ are not actually available in that module"
           ]
           "\x{a}" ~
           "                        "
         ]
         "\x{a}" ~
         "            "
         sch:rule [
           context = "tei:moduleRef[@key eq 'linking']"
           "\x{a}" ~
           "                           "
           sch:let [
             name = "include"
             value = "tokenize( normalize-space(@include),' ')"
           ]
           "\x{a}" ~
           "                           "
           sch:let [
             name = "except"
             value = "tokenize( normalize-space(@except), ' ')"
           ]
           "\x{a}" ~
           "                           "
           sch:assert [
             test =
               "every $gi in $include satisfies $gi = ( 'link', 'linkGrp', 'ab', 'anchor', 'seg', 'when', 'timeline', 'join', 'joinGrp', 'alt', 'altGrp', 'standOff', 'listAnnotation', 'annotation' )"
             "One or more of the elements included on the '"
             sch:value-of [ select = "@key" ]
             "' ＜moduleRef＞ are not actually available in that module"
           ]
           "\x{a}" ~
           "                           "
           sch:assert [
             test =
               "every $gi in $except  satisfies $gi = ( 'link', 'linkGrp', 'ab', 'anchor', 'seg', 'when', 'timeline', 'join', 'joinGrp', 'alt', 'altGrp', 'standOff', 'listAnnotation', 'annotation' )"
             "One or more of the elements excepted on the '"
             sch:value-of [ select = "@key" ]
             "' ＜moduleRef＞ are not actually available in that module"
           ]
           "\x{a}" ~
           "                        "
         ]
         "\x{a}" ~
         "            "
         sch:rule [
           context = "tei:moduleRef[@key eq 'analysis']"
           "\x{a}" ~
           "                           "
           sch:let [
             name = "include"
             value = "tokenize( normalize-space(@include),' ')"
           ]
           "\x{a}" ~
           "                           "
           sch:let [
             name = "except"
             value = "tokenize( normalize-space(@except), ' ')"
           ]
           "\x{a}" ~
           "                           "
           sch:assert [
             test =
               "every $gi in $include satisfies $gi = ( 's', 'cl', 'phr', 'w', 'm', 'c', 'pc', 'span', 'spanGrp', 'interp', 'interpGrp' )"
             "One or more of the elements included on the '"
             sch:value-of [ select = "@key" ]
             "' ＜moduleRef＞ are not actually available in that module"
           ]
           "\x{a}" ~
           "                           "
           sch:assert [
             test =
               "every $gi in $except  satisfies $gi = ( 's', 'cl', 'phr', 'w', 'm', 'c', 'pc', 'span', 'spanGrp', 'interp', 'interpGrp' )"
             "One or more of the elements excepted on the '"
             sch:value-of [ select = "@key" ]
             "' ＜moduleRef＞ are not actually available in that module"
           ]
           "\x{a}" ~
           "                        "
         ]
         "\x{a}" ~
         "            "
         sch:rule [
           context = "tei:moduleRef[@key eq 'iso-fs']"
           "\x{a}" ~
           "                           "
           sch:let [
             name = "include"
             value = "tokenize( normalize-space(@include),' ')"
           ]
           "\x{a}" ~
           "                           "
           sch:let [
             name = "except"
             value = "tokenize( normalize-space(@except), ' ')"
           ]
           "\x{a}" ~
           "                           "
           sch:assert [
             test =
               "every $gi in $include satisfies $gi = ( 'fsdDecl', 'fsDecl', 'fsDescr', 'fsdLink', 'fDecl', 'fDescr', 'vRange', 'vDefault', 'if', 'then', 'fsConstraints', 'cond', 'bicond', 'iff', 'fs', 'f', 'binary', 'symbol', 'numeric', 'string', 'vLabel', 'vColl', 'default', 'vAlt', 'vNot', 'vMerge', 'fLib', 'fvLib' )"
             "One or more of the elements included on the '"
             sch:value-of [ select = "@key" ]
             "' ＜moduleRef＞ are not actually available in that module"
           ]
           "\x{a}" ~
           "                           "
           sch:assert [
             test =
               "every $gi in $except  satisfies $gi = ( 'fsdDecl', 'fsDecl', 'fsDescr', 'fsdLink', 'fDecl', 'fDescr', 'vRange', 'vDefault', 'if', 'then', 'fsConstraints', 'cond', 'bicond', 'iff', 'fs', 'f', 'binary', 'symbol', 'numeric', 'string', 'vLabel', 'vColl', 'default', 'vAlt', 'vNot', 'vMerge', 'fLib', 'fvLib' )"
             "One or more of the elements excepted on the '"
             sch:value-of [ select = "@key" ]
             "' ＜moduleRef＞ are not actually available in that module"
           ]
           "\x{a}" ~
           "                        "
         ]
         "\x{a}" ~
         "            "
         sch:rule [
           context = "tei:moduleRef[@key eq 'nets']"
           "\x{a}" ~
           "                           "
           sch:let [
             name = "include"
             value = "tokenize( normalize-space(@include),' ')"
           ]
           "\x{a}" ~
           "                           "
           sch:let [
             name = "except"
             value = "tokenize( normalize-space(@except), ' ')"
           ]
           "\x{a}" ~
           "                           "
           sch:assert [
             test =
               "every $gi in $include satisfies $gi = ( 'graph', 'node', 'arc', 'tree', 'root', 'iNode', 'leaf', 'eTree', 'triangle', 'eLeaf', 'forest', 'listForest' )"
             "One or more of the elements included on the '"
             sch:value-of [ select = "@key" ]
             "' ＜moduleRef＞ are not actually available in that module"
           ]
           "\x{a}" ~
           "                           "
           sch:assert [
             test =
               "every $gi in $except  satisfies $gi = ( 'graph', 'node', 'arc', 'tree', 'root', 'iNode', 'leaf', 'eTree', 'triangle', 'eLeaf', 'forest', 'listForest' )"
             "One or more of the elements excepted on the '"
             sch:value-of [ select = "@key" ]
             "' ＜moduleRef＞ are not actually available in that module"
           ]
           "\x{a}" ~
           "                        "
         ]
         "\x{a}" ~
         "            "
         sch:rule [
           context = "tei:moduleRef[@key eq 'certainty']"
           "\x{a}" ~
           "                           "
           sch:let [
             name = "include"
             value = "tokenize( normalize-space(@include),' ')"
           ]
           "\x{a}" ~
           "                           "
           sch:let [
             name = "except"
             value = "tokenize( normalize-space(@except), ' ')"
           ]
           "\x{a}" ~
           "                           "
           sch:assert [
             test =
               "every $gi in $include satisfies $gi = ( 'precision', 'certainty', 'respons' )"
             "One or more of the elements included on the '"
             sch:value-of [ select = "@key" ]
             "' ＜moduleRef＞ are not actually available in that module"
           ]
           "\x{a}" ~
           "                           "
           sch:assert [
             test =
               "every $gi in $except  satisfies $gi = ( 'precision', 'certainty', 'respons' )"
             "One or more of the elements excepted on the '"
             sch:value-of [ select = "@key" ]
             "' ＜moduleRef＞ are not actually available in that module"
           ]
           "\x{a}" ~
           "                        "
         ]
         "\x{a}" ~
         "            "
         sch:rule [
           context = "tei:moduleRef[@key eq 'tagdocs']"
           "\x{a}" ~
           "                           "
           sch:let [
             name = "include"
             value = "tokenize( normalize-space(@include),' ')"
           ]
           "\x{a}" ~
           "                           "
           sch:let [
             name = "except"
             value = "tokenize( normalize-space(@except), ' ')"
           ]
           "\x{a}" ~
           "                           "
           sch:assert [
             test =
               "every $gi in $include satisfies $gi = ( 'att', 'code', 'eg', 'egXML', 'gi', 'ident', 'tag', 'val', 'specList', 'specDesc', 'classRef', 'elementRef', 'macroRef', 'moduleRef', 'moduleSpec', 'schemaSpec', 'specGrp', 'specGrpRef', 'elementSpec', 'classSpec', 'dataSpec', 'macroSpec', 'remarks', 'listRef', 'exemplum', 'classes', 'memberOf', 'equiv', 'altIdent', 'model', 'modelSequence', 'modelGrp', 'outputRendition', 'paramList', 'paramSpec', 'param', 'content', 'sequence', 'alternate', 'constraint', 'constraintSpec', 'attList', 'attDef', 'attRef', 'datatype', 'dataRef', 'dataFacet', 'defaultVal', 'valDesc', 'valItem', 'valList', 'textNode', 'anyElement', 'empty' )"
             "One or more of the elements included on the '"
             sch:value-of [ select = "@key" ]
             "' ＜moduleRef＞ are not actually available in that module"
           ]
           "\x{a}" ~
           "                           "
           sch:assert [
             test =
               "every $gi in $except  satisfies $gi = ( 'att', 'code', 'eg', 'egXML', 'gi', 'ident', 'tag', 'val', 'specList', 'specDesc', 'classRef', 'elementRef', 'macroRef', 'moduleRef', 'moduleSpec', 'schemaSpec', 'specGrp', 'specGrpRef', 'elementSpec', 'classSpec', 'dataSpec', 'macroSpec', 'remarks', 'listRef', 'exemplum', 'classes', 'memberOf', 'equiv', 'altIdent', 'model', 'modelSequence', 'modelGrp', 'outputRendition', 'paramList', 'paramSpec', 'param', 'content', 'sequence', 'alternate', 'constraint', 'constraintSpec', 'attList', 'attDef', 'attRef', 'datatype', 'dataRef', 'dataFacet', 'defaultVal', 'valDesc', 'valItem', 'valList', 'textNode', 'anyElement', 'empty' )"
             "One or more of the elements excepted on the '"
             sch:value-of [ select = "@key" ]
             "' ＜moduleRef＞ are not actually available in that module"
           ]
           "\x{a}" ~
           "                        "
         ]
         "\x{a}" ~
         "         "
       ]
    >> sch:pattern [
         id = "tei_customization-moduleRef-modref-constraint-rule-49"
         "\x{a}" ~
         "            "
         sch:rule [
           context = "tei:moduleRef"
           "\x{a}" ~
           "               "
           sch:report [
             test = "* and @key"
             "\x{a}" ~
             "Child elements of "
             sch:name [ ]
             " are only allowed when an external module is being loaded\x{a}" ~
             "        "
           ]
           "\x{a}" ~
           "            "
         ]
         "\x{a}" ~
         "         "
       ],
    cust_att.global.attributes,
    
    ## supplies a list of the elements which are to be copied from the specified module into the schema being defined.
    attribute include {
      list {
        (
         ## (TEI document) 
         "TEI"
         | 
           ## (anonymous block) 
           "ab"
         | 
           ## (abbreviation) 
           "abbr"
         | 
           ##
           "abstract"
         | 
           ## (accompanying material) 
           "accMat"
         | 
           ## (acquisition) 
           "acquisition"
         | 
           ## (activity) 
           "activity"
         | 
           ##
           "actor"
         | 
           ## (addition) 
           "add"
         | 
           ## (additional name) 
           "addName"
         | 
           ## (added span of text) 
           "addSpan"
         | 
           ## (additional) 
           "additional"
         | 
           ## (additions) 
           "additions"
         | 
           ## (address line) 
           "addrLine"
         | 
           ## (address) 
           "address"
         | 
           ## (administrative information) 
           "adminInfo"
         | 
           ## (affiliation) 
           "affiliation"
         | 
           ## (age) 
           "age"
         | 
           ## (alternation) 
           "alt"
         | 
           ## (alternation group) 
           "altGrp"
         | 
           ## (alternate identifier) 
           "altIdent"
         | 
           ## (alternative identifier) 
           "altIdentifier"
         | 
           ##
           "alternate"
         | 
           ## (abbreviation marker) 
           "am"
         | 
           ## (analytic level) 
           "analytic"
         | 
           ## (anchor point) 
           "anchor"
         | 
           ##
           "annotation"
         | 
           ##
           "annotationBlock"
         | 
           ##
           "anyElement"
         | 
           ## (apparatus entry) 
           "app"
         | 
           ## (application information) 
           "appInfo"
         | 
           ##
           "application"
         | 
           ## (arc) 
           "arc"
         | 
           ## (argument) 
           "argument"
         | 
           ## (attribute) 
           "att"
         | 
           ## (attribute definition) 
           "attDef"
         | 
           ## (attribute list) 
           "attList"
         | 
           ## (attribute pointer) 
           "attRef"
         | 
           ## (author) 
           "author"
         | 
           ## (release authority) 
           "authority"
         | 
           ## (availability) 
           "availability"
         | 
           ## (back matter) 
           "back"
         | 
           ## (bibliographic citation) 
           "bibl"
         | 
           ## (fully-structured bibliographic citation) 
           "biblFull"
         | 
           ## (scope of bibliographic reference) 
           "biblScope"
         | 
           ## (structured bibliographic citation) 
           "biblStruct"
         | 
           ## (bi-conditional feature-structure constraint) 
           "bicond"
         | 
           ## (binary value) 
           "binary"
         | 
           ##
           "binaryObject"
         | 
           ## (binding) 
           "binding"
         | 
           ## (binding description) 
           "bindingDesc"
         | 
           ## (birth) 
           "birth"
         | 
           ## (bloc) 
           "bloc"
         | 
           ## (text body) 
           "body"
         | 
           ## (broadcast) 
           "broadcast"
         | 
           ## (byline) 
           "byline"
         | 
           ## (character) 
           "c"
         | 
           ## (canonical reference pattern) 
           "cRefPattern"
         | 
           ##
           "caesura"
         | 
           ## (calendar) 
           "calendar"
         | 
           ## (calendar description) 
           "calendarDesc"
         | 
           ## (camera) 
           "camera"
         | 
           ## (caption) 
           "caption"
         | 
           ## (case) 
           "case"
         | 
           ## (cast list grouping) 
           "castGroup"
         | 
           ## (cast list item) 
           "castItem"
         | 
           ## (cast list) 
           "castList"
         | 
           ## (category description) 
           "catDesc"
         | 
           ## (category reference) 
           "catRef"
         | 
           ## (catchwords) 
           "catchwords"
         | 
           ## (category) 
           "category"
         | 
           ## (column beginning) 
           "cb"
         | 
           ## (cell) 
           "cell"
         | 
           ##
           "certainty"
         | 
           ## (change) 
           "change"
         | 
           ## (primary channel) 
           "channel"
         | 
           ## (character) 
           "char"
         | 
           ## (character declarations) 
           "charDecl"
         | 
           ## (character name) 
           "charName"
         | 
           ## (character property) 
           "charProp"
         | 
           ## (choice) 
           "choice"
         | 
           ## (cited quotation) 
           "cit"
         | 
           ## (citation data) 
           "citeData"
         | 
           ## (citation structure) 
           "citeStructure"
         | 
           ## (cited range) 
           "citedRange"
         | 
           ## (clause) 
           "cl"
         | 
           ## (classification code) 
           "classCode"
         | 
           ## (classification declarations) 
           "classDecl"
         | 
           ##
           "classRef"
         | 
           ## (class specification) 
           "classSpec"
         | 
           ## (classes) 
           "classes"
         | 
           ## (climate) 
           "climate"
         | 
           ## (closer) 
           "closer"
         | 
           ##
           "code"
         | 
           ## (collation) 
           "collation"
         | 
           ## (collection) 
           "collection"
         | 
           ## (collocate) 
           "colloc"
         | 
           ## (colophon) 
           "colophon"
         | 
           ## (conditional feature-structure constraint) 
           "cond"
         | 
           ## (condition) 
           "condition"
         | 
           ## (constitution) 
           "constitution"
         | 
           ## (constraint rules) 
           "constraint"
         | 
           ## (constraint on schema) 
           "constraintSpec"
         | 
           ## (content model) 
           "content"
         | 
           ##
           "conversion"
         | 
           ## (correction) 
           "corr"
         | 
           ## (correction principles) 
           "correction"
         | 
           ## (correspondence action) 
           "correspAction"
         | 
           ## (correspondence context) 
           "correspContext"
         | 
           ## (correspondence
           ##     description) 
           "correspDesc"
         | 
           ## (country) 
           "country"
         | 
           ## (creation) 
           "creation"
         | 
           ## (custodial event) 
           "custEvent"
         | 
           ## (custodial history) 
           "custodialHist"
         | 
           ## (damage) 
           "damage"
         | 
           ## (damaged span of text) 
           "damageSpan"
         | 
           ##
           "dataFacet"
         | 
           ##
           "dataRef"
         | 
           ## (datatype specification) 
           "dataSpec"
         | 
           ## (datatype) 
           "datatype"
         | 
           ## (date) 
           "date"
         | 
           ## (dateline) 
           "dateline"
         | 
           ## (death) 
           "death"
         | 
           ## (decoration description) 
           "decoDesc"
         | 
           ## (note on decoration) 
           "decoNote"
         | 
           ## (definition) 
           "def"
         | 
           ## (default feature value) 
           "default"
         | 
           ## (default value) 
           "defaultVal"
         | 
           ## (deletion) 
           "del"
         | 
           ## (deleted span of text) 
           "delSpan"
         | 
           ## (depth) 
           "depth"
         | 
           ## (derivation) 
           "derivation"
         | 
           ## (description) 
           "desc"
         | 
           ## (dictionary scrap) 
           "dictScrap"
         | 
           ##
           "dim"
         | 
           ## (dimensions) 
           "dimensions"
         | 
           ##
           "distinct"
         | 
           ## (distributor) 
           "distributor"
         | 
           ## (district) 
           "district"
         | 
           ## (text division) 
           "div"
         | 
           ## (level-1 text division) 
           "div1"
         | 
           ## (level-2 text division) 
           "div2"
         | 
           ## (level-3 text division) 
           "div3"
         | 
           ## (level-4 text division) 
           "div4"
         | 
           ## (level-5 text division) 
           "div5"
         | 
           ## (level-6 text division) 
           "div6"
         | 
           ## (level-7 text division) 
           "div7"
         | 
           ## (automatically generated text division) 
           "divGen"
         | 
           ## (document author) 
           "docAuthor"
         | 
           ## (document date) 
           "docDate"
         | 
           ## (document edition) 
           "docEdition"
         | 
           ## (document imprint) 
           "docImprint"
         | 
           ## (document title) 
           "docTitle"
         | 
           ## (domain of use) 
           "domain"
         | 
           ## (leaf or terminal node of an embedding tree) 
           "eLeaf"
         | 
           ## (embedding tree) 
           "eTree"
         | 
           ## (edition) 
           "edition"
         | 
           ## (edition statement) 
           "editionStmt"
         | 
           ##
           "editor"
         | 
           ## (editorial practice declaration) 
           "editorialDecl"
         | 
           ## (education) 
           "education"
         | 
           ## (example) 
           "eg"
         | 
           ## (example of XML) 
           "egXML"
         | 
           ##
           "elementRef"
         | 
           ## (element specification) 
           "elementSpec"
         | 
           ## (electronic mail address) 
           "email"
         | 
           ## (emphasized) 
           "emph"
         | 
           ##
           "empty"
         | 
           ## (encoding description) 
           "encodingDesc"
         | 
           ## (entry) 
           "entry"
         | 
           ## (unstructured entry) 
           "entryFree"
         | 
           ## (epigraph) 
           "epigraph"
         | 
           ## (epilogue) 
           "epilogue"
         | 
           ## (equipment) 
           "equipment"
         | 
           ## (equivalent) 
           "equiv"
         | 
           ## (etymology) 
           "etym"
         | 
           ## (event) 
           "event"
         | 
           ## (editorial expansion) 
           "ex"
         | 
           ## (exemplum) 
           "exemplum"
         | 
           ## (expansion) 
           "expan"
         | 
           ## (explicit) 
           "explicit"
         | 
           ## (extent) 
           "extent"
         | 
           ## (feature) 
           "f"
         | 
           ## (feature declaration) 
           "fDecl"
         | 
           ## (feature description (in FSD)) 
           "fDescr"
         | 
           ## (feature library) 
           "fLib"
         | 
           ##
           "facsimile"
         | 
           ## (factuality) 
           "factuality"
         | 
           ## (faith) 
           "faith"
         | 
           ## (description of figure) 
           "figDesc"
         | 
           ## (figure) 
           "figure"
         | 
           ## (file description) 
           "fileDesc"
         | 
           ## (filiation) 
           "filiation"
         | 
           ## (final rubric) 
           "finalRubric"
         | 
           ## (floating text) 
           "floatingText"
         | 
           ## (floruit) 
           "floruit"
         | 
           ## (foliation) 
           "foliation"
         | 
           ## (foreign) 
           "foreign"
         | 
           ## (forename) 
           "forename"
         | 
           ## (forest) 
           "forest"
         | 
           ## (form information group) 
           "form"
         | 
           ## (formula) 
           "formula"
         | 
           ## (front matter) 
           "front"
         | 
           ## (feature structure) 
           "fs"
         | 
           ## (feature-structure constraints) 
           "fsConstraints"
         | 
           ## (feature structure declaration) 
           "fsDecl"
         | 
           ## (feature system description (in FSD)) 
           "fsDescr"
         | 
           ## (feature system declaration) 
           "fsdDecl"
         | 
           ## (feature structure declaration link) 
           "fsdLink"
         | 
           ## (funding body) 
           "funder"
         | 
           ## (feature-value library) 
           "fvLib"
         | 
           ## (forme work) 
           "fw"
         | 
           ## (character or glyph) 
           "g"
         | 
           ## (gap) 
           "gap"
         | 
           ## (gathering beginning) 
           "gb"
         | 
           ## (gender) 
           "gen"
         | 
           ## (generational name component) 
           "genName"
         | 
           ## (geographical coordinates) 
           "geo"
         | 
           ## (geographic coordinates declaration) 
           "geoDecl"
         | 
           ## (geographical feature name) 
           "geogFeat"
         | 
           ## (geographical name) 
           "geogName"
         | 
           ## (element name) 
           "gi"
         | 
           ## (gloss) 
           "gloss"
         | 
           ## (character glyph) 
           "glyph"
         | 
           ## (character glyph name) 
           "glyphName"
         | 
           ## (grammatical information) 
           "gram"
         | 
           ## (grammatical information group) 
           "gramGrp"
         | 
           ## (graph) 
           "graph"
         | 
           ## (graphic) 
           "graphic"
         | 
           ## (group) 
           "group"
         | 
           ## (description of hands) 
           "handDesc"
         | 
           ## (note on hand) 
           "handNote"
         | 
           ##
           "handNotes"
         | 
           ## (handwriting shift) 
           "handShift"
         | 
           ## (heading) 
           "head"
         | 
           ## (heading for list items) 
           "headItem"
         | 
           ## (heading for list labels) 
           "headLabel"
         | 
           ## (height) 
           "height"
         | 
           ## (heraldry) 
           "heraldry"
         | 
           ## (highlighted) 
           "hi"
         | 
           ## (history) 
           "history"
         | 
           ## (homograph) 
           "hom"
         | 
           ## (hyphenation) 
           "hyph"
         | 
           ## (hyphenation) 
           "hyphenation"
         | 
           ## (intermediate (or internal) node) 
           "iNode"
         | 
           ## (inflectional class) 
           "iType"
         | 
           ## (identifier) 
           "ident"
         | 
           ## (identifier) 
           "idno"
         | 
           ##
           "if"
         | 
           ## (if and only if) 
           "iff"
         | 
           ## (imprimatur) 
           "imprimatur"
         | 
           ##
           "imprint"
         | 
           ## (incident) 
           "incident"
         | 
           ##
           "incipit"
         | 
           ## (index entry) 
           "index"
         | 
           ## (institution) 
           "institution"
         | 
           ## (interaction) 
           "interaction"
         | 
           ## (interpretation) 
           "interp"
         | 
           ## (interpretation group) 
           "interpGrp"
         | 
           ## (interpretation) 
           "interpretation"
         | 
           ## (item) 
           "item"
         | 
           ## (join) 
           "join"
         | 
           ## (join group) 
           "joinGrp"
         | 
           ## (keywords) 
           "keywords"
         | 
           ## (kinesic) 
           "kinesic"
         | 
           ## (verse line) 
           "l"
         | 
           ## (label) 
           "label"
         | 
           ## (lacuna end) 
           "lacunaEnd"
         | 
           ## (lacuna start) 
           "lacunaStart"
         | 
           ## (language name) 
           "lang"
         | 
           ## (language knowledge) 
           "langKnowledge"
         | 
           ## (language known) 
           "langKnown"
         | 
           ## (language usage) 
           "langUsage"
         | 
           ## (language) 
           "language"
         | 
           ## (layout) 
           "layout"
         | 
           ## (layout description) 
           "layoutDesc"
         | 
           ## (line beginning) 
           "lb"
         | 
           ## (label) 
           "lbl"
         | 
           ## (leaf) 
           "leaf"
         | 
           ## (lemma) 
           "lem"
         | 
           ## (line group) 
           "lg"
         | 
           ##
           "licence"
         | 
           ##
           "line"
         | 
           ## (link) 
           "link"
         | 
           ## (link group) 
           "linkGrp"
         | 
           ## (list) 
           "list"
         | 
           ##
           "listAnnotation"
         | 
           ## (list of apparatus entries) 
           "listApp"
         | 
           ## (citation list) 
           "listBibl"
         | 
           ##
           "listChange"
         | 
           ## (list of events) 
           "listEvent"
         | 
           ##
           "listForest"
         | 
           ## (list of canonical names) 
           "listNym"
         | 
           ## (list of objects) 
           "listObject"
         | 
           ## (list of organizations) 
           "listOrg"
         | 
           ## (list of persons) 
           "listPerson"
         | 
           ## (list of places) 
           "listPlace"
         | 
           ## (list of prefix definitions) 
           "listPrefixDef"
         | 
           ## (list of references) 
           "listRef"
         | 
           ##
           "listRelation"
         | 
           ##
           "listTranspose"
         | 
           ## (witness list) 
           "listWit"
         | 
           ## (locally-defined property name) 
           "localName"
         | 
           ## (locally defined property) 
           "localProp"
         | 
           ##
           "locale"
         | 
           ## (location) 
           "location"
         | 
           ## (locus) 
           "locus"
         | 
           ## (locus group) 
           "locusGrp"
         | 
           ## (morpheme) 
           "m"
         | 
           ##
           "macroRef"
         | 
           ## (macro specification) 
           "macroSpec"
         | 
           ## (character mapping) 
           "mapping"
         | 
           ## (material) 
           "material"
         | 
           ## (measure) 
           "measure"
         | 
           ## (measure group) 
           "measureGrp"
         | 
           ##
           "media"
         | 
           ##
           "meeting"
         | 
           ##
           "memberOf"
         | 
           ##
           "mentioned"
         | 
           ## (metrical notation declaration) 
           "metDecl"
         | 
           ## (metrical notation symbol) 
           "metSym"
         | 
           ##
           "metamark"
         | 
           ## (milestone) 
           "milestone"
         | 
           ##
           "mod"
         | 
           ##
           "model"
         | 
           ##
           "modelGrp"
         | 
           ##
           "modelSequence"
         | 
           ## (module reference) 
           "moduleRef"
         | 
           ## (module specification) 
           "moduleSpec"
         | 
           ## (monographic level) 
           "monogr"
         | 
           ## (mood) 
           "mood"
         | 
           ## (movement) 
           "move"
         | 
           ## (manuscript contents) 
           "msContents"
         | 
           ## (manuscript description) 
           "msDesc"
         | 
           ## (manuscript fragment) 
           "msFrag"
         | 
           ## (manuscript identifier) 
           "msIdentifier"
         | 
           ## (manuscript item) 
           "msItem"
         | 
           ## (structured manuscript item) 
           "msItemStruct"
         | 
           ## (alternative name) 
           "msName"
         | 
           ## (manuscript part) 
           "msPart"
         | 
           ## (music notation) 
           "musicNotation"
         | 
           ## (name, proper noun) 
           "name"
         | 
           ## (name link) 
           "nameLink"
         | 
           ## (namespace) 
           "namespace"
         | 
           ## (nationality) 
           "nationality"
         | 
           ## (node) 
           "node"
         | 
           ## (normalization) 
           "normalization"
         | 
           ##
           "notatedMusic"
         | 
           ## (note) 
           "note"
         | 
           ##
           "noteGrp"
         | 
           ## (notes statement) 
           "notesStmt"
         | 
           ## (number) 
           "num"
         | 
           ## (number) 
           "number"
         | 
           ## (numeric value) 
           "numeric"
         | 
           ## (canonical name) 
           "nym"
         | 
           ## (orthographic-form reference) 
           "oRef"
         | 
           ##
           "object"
         | 
           ## (object description) 
           "objectDesc"
         | 
           ## (object identifier) 
           "objectIdentifier"
         | 
           ## (name of an object) 
           "objectName"
         | 
           ## (object type) 
           "objectType"
         | 
           ## (occupation) 
           "occupation"
         | 
           ## (offset) 
           "offset"
         | 
           ## (opener) 
           "opener"
         | 
           ## (organization) 
           "org"
         | 
           ## (organization name) 
           "orgName"
         | 
           ## (original form) 
           "orig"
         | 
           ## (origin date) 
           "origDate"
         | 
           ## (origin place) 
           "origPlace"
         | 
           ## (origin) 
           "origin"
         | 
           ## (orthographic form) 
           "orth"
         | 
           ##
           "outputRendition"
         | 
           ## (paragraph) 
           "p"
         | 
           ## (pronunciation reference) 
           "pRef"
         | 
           ##
           "param"
         | 
           ##
           "paramList"
         | 
           ##
           "paramSpec"
         | 
           ## (participation description) 
           "particDesc"
         | 
           ## (path) 
           "path"
         | 
           ## (pause) 
           "pause"
         | 
           ## (page beginning) 
           "pb"
         | 
           ## (punctuation character) 
           "pc"
         | 
           ## (person) 
           "per"
         | 
           ## (performance) 
           "performance"
         | 
           ## (personal name) 
           "persName"
         | 
           ## (personal pronouns) 
           "persPronouns"
         | 
           ## (person) 
           "person"
         | 
           ## (personal group) 
           "personGrp"
         | 
           ##
           "persona"
         | 
           ## (phrase) 
           "phr"
         | 
           ## (physical description) 
           "physDesc"
         | 
           ## (place) 
           "place"
         | 
           ## (place name) 
           "placeName"
         | 
           ## (population) 
           "population"
         | 
           ## (part of speech) 
           "pos"
         | 
           ## (postal box or post office box) 
           "postBox"
         | 
           ## (postal code) 
           "postCode"
         | 
           ##
           "postscript"
         | 
           ##
           "precision"
         | 
           ## (prefix definition) 
           "prefixDef"
         | 
           ## (preparedness) 
           "preparedness"
         | 
           ## (principal researcher) 
           "principal"
         | 
           ## (text-profile description) 
           "profileDesc"
         | 
           ## (project description) 
           "projectDesc"
         | 
           ## (prologue) 
           "prologue"
         | 
           ## (pronunciation) 
           "pron"
         | 
           ## (provenance) 
           "provenance"
         | 
           ## (pointer) 
           "ptr"
         | 
           ## (publication place) 
           "pubPlace"
         | 
           ## (publication statement) 
           "publicationStmt"
         | 
           ## (publisher) 
           "publisher"
         | 
           ##
           "punctuation"
         | 
           ##
           "purpose"
         | 
           ## (quoted) 
           "q"
         | 
           ## (quotation) 
           "quotation"
         | 
           ## (quotation) 
           "quote"
         | 
           ## (ruby base) 
           "rb"
         | 
           ## (reading) 
           "rdg"
         | 
           ## (reading group) 
           "rdgGrp"
         | 
           ## (related entry) 
           "re"
         | 
           ## (recorded history) 
           "recordHist"
         | 
           ## (recording event) 
           "recording"
         | 
           ## (recording statement) 
           "recordingStmt"
         | 
           ##
           "redo"
         | 
           ## (reference) 
           "ref"
         | 
           ## (reference state) 
           "refState"
         | 
           ## (references declaration) 
           "refsDecl"
         | 
           ## (regularization) 
           "reg"
         | 
           ## (region) 
           "region"
         | 
           ##
           "relatedItem"
         | 
           ## (relationship) 
           "relation"
         | 
           ## (remarks) 
           "remarks"
         | 
           ## (rendition) 
           "rendition"
         | 
           ## (repository) 
           "repository"
         | 
           ## (residence) 
           "residence"
         | 
           ## (responsibility) 
           "resp"
         | 
           ## (statement of responsibility) 
           "respStmt"
         | 
           ## (responsibility) 
           "respons"
         | 
           ## (restore) 
           "restore"
         | 
           ##
           "retrace"
         | 
           ## (revision description) 
           "revisionDesc"
         | 
           ##
           "rhyme"
         | 
           ## (role) 
           "role"
         | 
           ## (role description) 
           "roleDesc"
         | 
           ## (role name) 
           "roleName"
         | 
           ## (root node) 
           "root"
         | 
           ## (row) 
           "row"
         | 
           ## (referencing string) 
           "rs"
         | 
           ## (ruby text) 
           "rt"
         | 
           ## (rubric) 
           "rubric"
         | 
           ## (ruby container) 
           "ruby"
         | 
           ## (s-unit) 
           "s"
         | 
           ## (speech or thought) 
           "said"
         | 
           ## (salutation) 
           "salute"
         | 
           ## (sampling declaration) 
           "samplingDecl"
         | 
           ## (schema reference) 
           "schemaRef"
         | 
           ## (schema specification) 
           "schemaSpec"
         | 
           ##
           "scriptDesc"
         | 
           ##
           "scriptNote"
         | 
           ## (script statement) 
           "scriptStmt"
         | 
           ## (seal) 
           "seal"
         | 
           ## (seal description) 
           "sealDesc"
         | 
           ## (second folio) 
           "secFol"
         | 
           ## (secluded text) 
           "secl"
         | 
           ## (arbitrary segment) 
           "seg"
         | 
           ## (segmentation) 
           "segmentation"
         | 
           ##
           "sense"
         | 
           ##
           "sequence"
         | 
           ## (series information) 
           "series"
         | 
           ## (series statement) 
           "seriesStmt"
         | 
           ## (setting) 
           "set"
         | 
           ##
           "setting"
         | 
           ## (setting description) 
           "settingDesc"
         | 
           ## (settlement) 
           "settlement"
         | 
           ## (sex) 
           "sex"
         | 
           ## (shift) 
           "shift"
         | 
           ## (Latin for thus or so
           ##                               ) 
           "sic"
         | 
           ## (signatures) 
           "signatures"
         | 
           ## (signature) 
           "signed"
         | 
           ## (so called) 
           "soCalled"
         | 
           ## (socio-economic status) 
           "socecStatus"
         | 
           ## (sound) 
           "sound"
         | 
           ## (source) 
           "source"
         | 
           ## (source description) 
           "sourceDesc"
         | 
           ##
           "sourceDoc"
         | 
           ## (speech) 
           "sp"
         | 
           ## (speech group) 
           "spGrp"
         | 
           ## (space) 
           "space"
         | 
           ##
           "span"
         | 
           ## (span group) 
           "spanGrp"
         | 
           ##
           "speaker"
         | 
           ## (specification description) 
           "specDesc"
         | 
           ## (specification group) 
           "specGrp"
         | 
           ## (reference to a specification group) 
           "specGrpRef"
         | 
           ## (specification list) 
           "specList"
         | 
           ## (sponsor) 
           "sponsor"
         | 
           ## (stage direction) 
           "stage"
         | 
           ## (stamp) 
           "stamp"
         | 
           ##
           "standOff"
         | 
           ## (state) 
           "state"
         | 
           ## (standard values) 
           "stdVals"
         | 
           ##
           "street"
         | 
           ## (stress) 
           "stress"
         | 
           ## (string value) 
           "string"
         | 
           ## (style definition language declaration) 
           "styleDefDecl"
         | 
           ## (subcategorization) 
           "subc"
         | 
           ## (substitution) 
           "subst"
         | 
           ## (substitution join) 
           "substJoin"
         | 
           ##
           "summary"
         | 
           ## (super entry) 
           "superEntry"
         | 
           ## (supplied) 
           "supplied"
         | 
           ## (support) 
           "support"
         | 
           ## (support description) 
           "supportDesc"
         | 
           ##
           "surface"
         | 
           ##
           "surfaceGrp"
         | 
           ## (surname) 
           "surname"
         | 
           ## (surplus) 
           "surplus"
         | 
           ## (surrogates) 
           "surrogates"
         | 
           ## (syllabification) 
           "syll"
         | 
           ## (symbolic value) 
           "symbol"
         | 
           ## (table) 
           "table"
         | 
           ## (tag) 
           "tag"
         | 
           ## (element usage) 
           "tagUsage"
         | 
           ## (tagging declaration) 
           "tagsDecl"
         | 
           ## (taxonomy) 
           "taxonomy"
         | 
           ## (technical stage direction) 
           "tech"
         | 
           ## (TEI corpus) 
           "teiCorpus"
         | 
           ## (TEI header) 
           "teiHeader"
         | 
           ## (term) 
           "term"
         | 
           ## (terrain) 
           "terrain"
         | 
           ## (text) 
           "text"
         | 
           ## (text classification) 
           "textClass"
         | 
           ## (text description) 
           "textDesc"
         | 
           ## (text language) 
           "textLang"
         | 
           ##
           "textNode"
         | 
           ##
           "then"
         | 
           ## (time) 
           "time"
         | 
           ## (timeline) 
           "timeline"
         | 
           ## (title) 
           "title"
         | 
           ## (title page) 
           "titlePage"
         | 
           ## (title part) 
           "titlePart"
         | 
           ## (title statement) 
           "titleStmt"
         | 
           ## (tense) 
           "tns"
         | 
           ##
           "trailer"
         | 
           ## (trait) 
           "trait"
         | 
           ##
           "transcriptionDesc"
         | 
           ##
           "transpose"
         | 
           ## (tree) 
           "tree"
         | 
           ## (underspecified embedding tree, so called because of its
           ##   characteristic shape when drawn) 
           "triangle"
         | 
           ## (typeface description) 
           "typeDesc"
         | 
           ## (typographic note) 
           "typeNote"
         | 
           ## (utterance) 
           "u"
         | 
           ## (unclear) 
           "unclear"
         | 
           ##
           "undo"
         | 
           ## (Unicode property name) 
           "unicodeName"
         | 
           ## (unicode property) 
           "unicodeProp"
         | 
           ## (unihan property) 
           "unihanProp"
         | 
           ##
           "unit"
         | 
           ## (unit declarations) 
           "unitDecl"
         | 
           ## (unit definition) 
           "unitDef"
         | 
           ## (usage) 
           "usg"
         | 
           ## (value alternation) 
           "vAlt"
         | 
           ## (collection of values) 
           "vColl"
         | 
           ## (value default) 
           "vDefault"
         | 
           ## (value label) 
           "vLabel"
         | 
           ## (merged collection of values) 
           "vMerge"
         | 
           ## (value negation) 
           "vNot"
         | 
           ## (value range) 
           "vRange"
         | 
           ## (value) 
           "val"
         | 
           ## (value description) 
           "valDesc"
         | 
           ##
           "valItem"
         | 
           ## (value list) 
           "valList"
         | 
           ## (value) 
           "value"
         | 
           ## (variant encoding) 
           "variantEncoding"
         | 
           ## (view) 
           "view"
         | 
           ## (vocal) 
           "vocal"
         | 
           ## (word) 
           "w"
         | 
           ## (watermark) 
           "watermark"
         | 
           ##
           "when"
         | 
           ## (width) 
           "width"
         | 
           ## (wit) 
           "wit"
         | 
           ## (witness detail) 
           "witDetail"
         | 
           ## (fragmented witness end) 
           "witEnd"
         | 
           ## (fragmented witness start) 
           "witStart"
         | 
           ## (witness) 
           "witness"
         | 
           ## (writing) 
           "writing"
         | 
           ## (non-TEI metadata) 
           "xenoData"
         | 
           ## (cross-reference phrase) 
           "xr"
         | 
           ##
           "zone")*
      }
    }?,
    
    ## supplies a list of the elements which are not to be copied from the specified module into the schema being defined.
    ## Suggested values include: 1] TEI (TEI document); 2] ab (anonymous block); 3] abbr (abbreviation); 4] abstract; 5] accMat (accompanying material); 6] acquisition (acquisition); 7] activity (activity); 8] actor; 9] add (addition); 10] addName (additional name); 11] addSpan (added span of text); 12] additional (additional); 13] additions (additions); 14] addrLine (address line); 15] address (address); 16] adminInfo (administrative information); 17] affiliation (affiliation); 18] age (age); 19] alt (alternation); 20] altGrp (alternation group); 21] altIdent (alternate identifier); 22] altIdentifier (alternative identifier); 23] alternate; 24] am (abbreviation marker); 25] analytic (analytic level); 26] anchor (anchor point); 27] annotation; 28] annotationBlock; 29] anyElement; 30] app (apparatus entry); 31] appInfo (application information); 32] application; 33] arc (arc); 34] argument (argument); 35] att (attribute); 36] attDef (attribute definition); 37] attList (attribute list); 38] attRef (attribute pointer); 39] author (author); 40] authority (release authority); 41] availability (availability); 42] back (back matter); 43] bibl (bibliographic citation); 44] biblFull (fully-structured bibliographic citation); 45] biblScope (scope of bibliographic reference); 46] biblStruct (structured bibliographic citation); 47] bicond (bi-conditional feature-structure constraint); 48] binary (binary value); 49] binaryObject; 50] binding (binding); 51] bindingDesc (binding description); 52] birth (birth); 53] bloc (bloc); 54] body (text body); 55] broadcast (broadcast); 56] byline (byline); 57] c (character); 58] cRefPattern (canonical reference pattern); 59] caesura; 60] calendar (calendar); 61] calendarDesc (calendar description); 62] camera (camera); 63] caption (caption); 64] case (case); 65] castGroup (cast list grouping); 66] castItem (cast list item); 67] castList (cast list); 68] catDesc (category description); 69] catRef (category reference); 70] catchwords (catchwords); 71] category (category); 72] cb (column beginning); 73] cell (cell); 74] certainty; 75] change (change); 76] channel (primary channel); 77] char (character); 78] charDecl (character declarations); 79] charName (character name); 80] charProp (character property); 81] choice (choice); 82] cit (cited quotation); 83] citeData (citation data); 84] citeStructure (citation structure); 85] citedRange (cited range); 86] cl (clause); 87] classCode (classification code); 88] classDecl (classification declarations); 89] classRef; 90] classSpec (class specification); 91] classes (classes); 92] climate (climate); 93] closer (closer); 94] code; 95] collation (collation); 96] collection (collection); 97] colloc (collocate); 98] colophon (colophon); 99] cond (conditional feature-structure constraint); 100] condition (condition); 101] constitution (constitution); 102] constraint (constraint rules); 103] constraintSpec (constraint on schema); 104] content (content model); 105] conversion; 106] corr (correction); 107] correction (correction principles); 108] correspAction (correspondence action); 109] correspContext (correspondence context); 110] correspDesc (correspondence description); 111] country (country); 112] creation (creation); 113] custEvent (custodial event); 114] custodialHist (custodial history); 115] damage (damage); 116] damageSpan (damaged span of text); 117] dataFacet; 118] dataRef; 119] dataSpec (datatype specification); 120] datatype (datatype); 121] date (date); 122] dateline (dateline); 123] death (death); 124] decoDesc (decoration description); 125] decoNote (note on decoration); 126] def (definition); 127] default (default feature value); 128] defaultVal (default value); 129] del (deletion); 130] delSpan (deleted span of text); 131] depth (depth); 132] derivation (derivation); 133] desc (description); 134] dictScrap (dictionary scrap); 135] dim; 136] dimensions (dimensions); 137] distinct; 138] distributor (distributor); 139] district (district); 140] div (text division); 141] div1 (level-1 text division); 142] div2 (level-2 text division); 143] div3 (level-3 text division); 144] div4 (level-4 text division); 145] div5 (level-5 text division); 146] div6 (level-6 text division); 147] div7 (level-7 text division); 148] divGen (automatically generated text division); 149] docAuthor (document author); 150] docDate (document date); 151] docEdition (document edition); 152] docImprint (document imprint); 153] docTitle (document title); 154] domain (domain of use); 155] eLeaf (leaf or terminal node of an embedding tree); 156] eTree (embedding tree); 157] edition (edition); 158] editionStmt (edition statement); 159] editor; 160] editorialDecl (editorial practice declaration); 161] education (education); 162] eg (example); 163] egXML (example of XML); 164] elementRef; 165] elementSpec (element specification); 166] email (electronic mail address); 167] emph (emphasized); 168] empty; 169] encodingDesc (encoding description); 170] entry (entry); 171] entryFree (unstructured entry); 172] epigraph (epigraph); 173] epilogue (epilogue); 174] equipment (equipment); 175] equiv (equivalent); 176] etym (etymology); 177] event (event); 178] ex (editorial expansion); 179] exemplum (exemplum); 180] expan (expansion); 181] explicit (explicit); 182] extent (extent); 183] f (feature); 184] fDecl (feature declaration); 185] fDescr (feature description (in FSD)); 186] fLib (feature library); 187] facsimile; 188] factuality (factuality); 189] faith (faith); 190] figDesc (description of figure); 191] figure (figure); 192] fileDesc (file description); 193] filiation (filiation); 194] finalRubric (final rubric); 195] floatingText (floating text); 196] floruit (floruit); 197] foliation (foliation); 198] foreign (foreign); 199] forename (forename); 200] forest (forest); 201] form (form information group); 202] formula (formula); 203] front (front matter); 204] fs (feature structure); 205] fsConstraints (feature-structure constraints); 206] fsDecl (feature structure declaration); 207] fsDescr (feature system description (in FSD)); 208] fsdDecl (feature system declaration); 209] fsdLink (feature structure declaration link); 210] funder (funding body); 211] fvLib (feature-value library); 212] fw (forme work); 213] g (character or glyph); 214] gap (gap); 215] gb (gathering beginning); 216] gen (gender); 217] genName (generational name component); 218] geo (geographical coordinates); 219] geoDecl (geographic coordinates declaration); 220] geogFeat (geographical feature name); 221] geogName (geographical name); 222] gi (element name); 223] gloss (gloss); 224] glyph (character glyph); 225] glyphName (character glyph name); 226] gram (grammatical information); 227] gramGrp (grammatical information group); 228] graph (graph); 229] graphic (graphic); 230] group (group); 231] handDesc (description of hands); 232] handNote (note on hand); 233] handNotes; 234] handShift (handwriting shift); 235] head (heading); 236] headItem (heading for list items); 237] headLabel (heading for list labels); 238] height (height); 239] heraldry (heraldry); 240] hi (highlighted); 241] history (history); 242] hom (homograph); 243] hyph (hyphenation); 244] hyphenation (hyphenation); 245] iNode (intermediate (or internal) node); 246] iType (inflectional class); 247] ident (identifier); 248] idno (identifier); 249] if; 250] iff (if and only if); 251] imprimatur (imprimatur); 252] imprint; 253] incident (incident); 254] incipit; 255] index (index entry); 256] institution (institution); 257] interaction (interaction); 258] interp (interpretation); 259] interpGrp (interpretation group); 260] interpretation (interpretation); 261] item (item); 262] join (join); 263] joinGrp (join group); 264] keywords (keywords); 265] kinesic (kinesic); 266] l (verse line); 267] label (label); 268] lacunaEnd (lacuna end); 269] lacunaStart (lacuna start); 270] lang (language name); 271] langKnowledge (language knowledge); 272] langKnown (language known); 273] langUsage (language usage); 274] language (language); 275] layout (layout); 276] layoutDesc (layout description); 277] lb (line beginning); 278] lbl (label); 279] leaf (leaf); 280] lem (lemma); 281] lg (line group); 282] licence; 283] line; 284] link (link); 285] linkGrp (link group); 286] list (list); 287] listAnnotation; 288] listApp (list of apparatus entries); 289] listBibl (citation list); 290] listChange; 291] listEvent (list of events); 292] listForest; 293] listNym (list of canonical names); 294] listObject (list of objects); 295] listOrg (list of organizations); 296] listPerson (list of persons); 297] listPlace (list of places); 298] listPrefixDef (list of prefix definitions); 299] listRef (list of references); 300] listRelation; 301] listTranspose; 302] listWit (witness list); 303] localName (locally-defined property name); 304] localProp (locally defined property); 305] locale; 306] location (location); 307] locus (locus); 308] locusGrp (locus group); 309] m (morpheme); 310] macroRef; 311] macroSpec (macro specification); 312] mapping (character mapping); 313] material (material); 314] measure (measure); 315] measureGrp (measure group); 316] media; 317] meeting; 318] memberOf; 319] mentioned; 320] metDecl (metrical notation declaration); 321] metSym (metrical notation symbol); 322] metamark; 323] milestone (milestone); 324] mod; 325] model; 326] modelGrp; 327] modelSequence; 328] moduleRef (module reference); 329] moduleSpec (module specification); 330] monogr (monographic level); 331] mood (mood); 332] move (movement); 333] msContents (manuscript contents); 334] msDesc (manuscript description); 335] msFrag (manuscript fragment); 336] msIdentifier (manuscript identifier); 337] msItem (manuscript item); 338] msItemStruct (structured manuscript item); 339] msName (alternative name); 340] msPart (manuscript part); 341] musicNotation (music notation); 342] name (name, proper noun); 343] nameLink (name link); 344] namespace (namespace); 345] nationality (nationality); 346] node (node); 347] normalization (normalization); 348] notatedMusic; 349] note (note); 350] noteGrp; 351] notesStmt (notes statement); 352] num (number); 353] number (number); 354] numeric (numeric value); 355] nym (canonical name); 356] oRef (orthographic-form reference); 357] object; 358] objectDesc (object description); 359] objectIdentifier (object identifier); 360] objectName (name of an object); 361] objectType (object type); 362] occupation (occupation); 363] offset (offset); 364] opener (opener); 365] org (organization); 366] orgName (organization name); 367] orig (original form); 368] origDate (origin date); 369] origPlace (origin place); 370] origin (origin); 371] orth (orthographic form); 372] outputRendition; 373] p (paragraph); 374] pRef (pronunciation reference); 375] param; 376] paramList; 377] paramSpec; 378] particDesc (participation description); 379] path (path); 380] pause (pause); 381] pb (page beginning); 382] pc (punctuation character); 383] per (person); 384] performance (performance); 385] persName (personal name); 386] persPronouns (personal pronouns); 387] person (person); 388] personGrp (personal group); 389] persona; 390] phr (phrase); 391] physDesc (physical description); 392] place (place); 393] placeName (place name); 394] population (population); 395] pos (part of speech); 396] postBox (postal box or post office box); 397] postCode (postal code); 398] postscript; 399] precision; 400] prefixDef (prefix definition); 401] preparedness (preparedness); 402] principal (principal researcher); 403] profileDesc (text-profile description); 404] projectDesc (project description); 405] prologue (prologue); 406] pron (pronunciation); 407] provenance (provenance); 408] ptr (pointer); 409] pubPlace (publication place); 410] publicationStmt (publication statement); 411] publisher (publisher); 412] punctuation; 413] purpose; 414] q (quoted); 415] quotation (quotation); 416] quote (quotation); 417] rb (ruby base); 418] rdg (reading); 419] rdgGrp (reading group); 420] re (related entry); 421] recordHist (recorded history); 422] recording (recording event); 423] recordingStmt (recording statement); 424] redo; 425] ref (reference); 426] refState (reference state); 427] refsDecl (references declaration); 428] reg (regularization); 429] region (region); 430] relatedItem; 431] relation (relationship); 432] remarks (remarks); 433] rendition (rendition); 434] repository (repository); 435] residence (residence); 436] resp (responsibility); 437] respStmt (statement of responsibility); 438] respons (responsibility); 439] restore (restore); 440] retrace; 441] revisionDesc (revision description); 442] rhyme; 443] role (role); 444] roleDesc (role description); 445] roleName (role name); 446] root (root node); 447] row (row); 448] rs (referencing string); 449] rt (ruby text); 450] rubric (rubric); 451] ruby (ruby container); 452] s (s-unit); 453] said (speech or thought); 454] salute (salutation); 455] samplingDecl (sampling declaration); 456] schemaRef (schema reference); 457] schemaSpec (schema specification); 458] scriptDesc; 459] scriptNote; 460] scriptStmt (script statement); 461] seal (seal); 462] sealDesc (seal description); 463] secFol (second folio); 464] secl (secluded text); 465] seg (arbitrary segment); 466] segmentation (segmentation); 467] sense; 468] sequence; 469] series (series information); 470] seriesStmt (series statement); 471] set (setting); 472] setting; 473] settingDesc (setting description); 474] settlement (settlement); 475] sex (sex); 476] shift (shift); 477] sic (Latin for thus or so ); 478] signatures (signatures); 479] signed (signature); 480] soCalled (so called); 481] socecStatus (socio-economic status); 482] sound (sound); 483] source (source); 484] sourceDesc (source description); 485] sourceDoc; 486] sp (speech); 487] spGrp (speech group); 488] space (space); 489] span; 490] spanGrp (span group); 491] speaker; 492] specDesc (specification description); 493] specGrp (specification group); 494] specGrpRef (reference to a specification group); 495] specList (specification list); 496] sponsor (sponsor); 497] stage (stage direction); 498] stamp (stamp); 499] standOff; 500] state (state); 501] stdVals (standard values); 502] street; 503] stress (stress); 504] string (string value); 505] styleDefDecl (style definition language declaration); 506] subc (subcategorization); 507] subst (substitution); 508] substJoin (substitution join); 509] summary; 510] superEntry (super entry); 511] supplied (supplied); 512] support (support); 513] supportDesc (support description); 514] surface; 515] surfaceGrp; 516] surname (surname); 517] surplus (surplus); 518] surrogates (surrogates); 519] syll (syllabification); 520] symbol (symbolic value); 521] table (table); 522] tag (tag); 523] tagUsage (element usage); 524] tagsDecl (tagging declaration); 525] taxonomy (taxonomy); 526] tech (technical stage direction); 527] teiCorpus (TEI corpus); 528] teiHeader (TEI header); 529] term (term); 530] terrain (terrain); 531] text (text); 532] textClass (text classification); 533] textDesc (text description); 534] textLang (text language); 535] textNode; 536] then; 537] time (time); 538] timeline (timeline); 539] title (title); 540] titlePage (title page); 541] titlePart (title part); 542] titleStmt (title statement); 543] tns (tense); 544] trailer; 545] trait (trait); 546] transcriptionDesc; 547] transpose; 548] tree (tree); 549] triangle (underspecified embedding tree, so called because of its characteristic shape when drawn); 550] typeDesc (typeface description); 551] typeNote (typographic note); 552] u (utterance); 553] unclear (unclear); 554] undo; 555] unicodeName (Unicode property name); 556] unicodeProp (unicode property); 557] unihanProp (unihan property); 558] unit; 559] unitDecl (unit declarations); 560] unitDef (unit definition); 561] usg (usage); 562] vAlt (value alternation); 563] vColl (collection of values); 564] vDefault (value default); 565] vLabel (value label); 566] vMerge (merged collection of values); 567] vNot (value negation); 568] vRange (value range); 569] val (value); 570] valDesc (value description); 571] valItem; 572] valList (value list); 573] value (value); 574] variantEncoding (variant encoding); 575] view (view); 576] vocal (vocal); 577] w (word); 578] watermark (watermark); 579] when; 580] width (width); 581] wit (wit); 582] witDetail (witness detail); 583] witEnd (fragmented witness end); 584] witStart (fragmented witness start); 585] witness (witness); 586] writing (writing); 587] xenoData (non-TEI metadata); 588] xr (cross-reference phrase); 589] zone
    attribute except {
      list {
        (
         ## (TEI document) 
         "TEI"
         | 
           ## (anonymous block) 
           "ab"
         | 
           ## (abbreviation) 
           "abbr"
         | 
           ##
           "abstract"
         | 
           ## (accompanying material) 
           "accMat"
         | 
           ## (acquisition) 
           "acquisition"
         | 
           ## (activity) 
           "activity"
         | 
           ##
           "actor"
         | 
           ## (addition) 
           "add"
         | 
           ## (additional name) 
           "addName"
         | 
           ## (added span of text) 
           "addSpan"
         | 
           ## (additional) 
           "additional"
         | 
           ## (additions) 
           "additions"
         | 
           ## (address line) 
           "addrLine"
         | 
           ## (address) 
           "address"
         | 
           ## (administrative information) 
           "adminInfo"
         | 
           ## (affiliation) 
           "affiliation"
         | 
           ## (age) 
           "age"
         | 
           ## (alternation) 
           "alt"
         | 
           ## (alternation group) 
           "altGrp"
         | 
           ## (alternate identifier) 
           "altIdent"
         | 
           ## (alternative identifier) 
           "altIdentifier"
         | 
           ##
           "alternate"
         | 
           ## (abbreviation marker) 
           "am"
         | 
           ## (analytic level) 
           "analytic"
         | 
           ## (anchor point) 
           "anchor"
         | 
           ##
           "annotation"
         | 
           ##
           "annotationBlock"
         | 
           ##
           "anyElement"
         | 
           ## (apparatus entry) 
           "app"
         | 
           ## (application information) 
           "appInfo"
         | 
           ##
           "application"
         | 
           ## (arc) 
           "arc"
         | 
           ## (argument) 
           "argument"
         | 
           ## (attribute) 
           "att"
         | 
           ## (attribute definition) 
           "attDef"
         | 
           ## (attribute list) 
           "attList"
         | 
           ## (attribute pointer) 
           "attRef"
         | 
           ## (author) 
           "author"
         | 
           ## (release authority) 
           "authority"
         | 
           ## (availability) 
           "availability"
         | 
           ## (back matter) 
           "back"
         | 
           ## (bibliographic citation) 
           "bibl"
         | 
           ## (fully-structured bibliographic citation) 
           "biblFull"
         | 
           ## (scope of bibliographic reference) 
           "biblScope"
         | 
           ## (structured bibliographic citation) 
           "biblStruct"
         | 
           ## (bi-conditional feature-structure constraint) 
           "bicond"
         | 
           ## (binary value) 
           "binary"
         | 
           ##
           "binaryObject"
         | 
           ## (binding) 
           "binding"
         | 
           ## (binding description) 
           "bindingDesc"
         | 
           ## (birth) 
           "birth"
         | 
           ## (bloc) 
           "bloc"
         | 
           ## (text body) 
           "body"
         | 
           ## (broadcast) 
           "broadcast"
         | 
           ## (byline) 
           "byline"
         | 
           ## (character) 
           "c"
         | 
           ## (canonical reference pattern) 
           "cRefPattern"
         | 
           ##
           "caesura"
         | 
           ## (calendar) 
           "calendar"
         | 
           ## (calendar description) 
           "calendarDesc"
         | 
           ## (camera) 
           "camera"
         | 
           ## (caption) 
           "caption"
         | 
           ## (case) 
           "case"
         | 
           ## (cast list grouping) 
           "castGroup"
         | 
           ## (cast list item) 
           "castItem"
         | 
           ## (cast list) 
           "castList"
         | 
           ## (category description) 
           "catDesc"
         | 
           ## (category reference) 
           "catRef"
         | 
           ## (catchwords) 
           "catchwords"
         | 
           ## (category) 
           "category"
         | 
           ## (column beginning) 
           "cb"
         | 
           ## (cell) 
           "cell"
         | 
           ##
           "certainty"
         | 
           ## (change) 
           "change"
         | 
           ## (primary channel) 
           "channel"
         | 
           ## (character) 
           "char"
         | 
           ## (character declarations) 
           "charDecl"
         | 
           ## (character name) 
           "charName"
         | 
           ## (character property) 
           "charProp"
         | 
           ## (choice) 
           "choice"
         | 
           ## (cited quotation) 
           "cit"
         | 
           ## (citation data) 
           "citeData"
         | 
           ## (citation structure) 
           "citeStructure"
         | 
           ## (cited range) 
           "citedRange"
         | 
           ## (clause) 
           "cl"
         | 
           ## (classification code) 
           "classCode"
         | 
           ## (classification declarations) 
           "classDecl"
         | 
           ##
           "classRef"
         | 
           ## (class specification) 
           "classSpec"
         | 
           ## (classes) 
           "classes"
         | 
           ## (climate) 
           "climate"
         | 
           ## (closer) 
           "closer"
         | 
           ##
           "code"
         | 
           ## (collation) 
           "collation"
         | 
           ## (collection) 
           "collection"
         | 
           ## (collocate) 
           "colloc"
         | 
           ## (colophon) 
           "colophon"
         | 
           ## (conditional feature-structure constraint) 
           "cond"
         | 
           ## (condition) 
           "condition"
         | 
           ## (constitution) 
           "constitution"
         | 
           ## (constraint rules) 
           "constraint"
         | 
           ## (constraint on schema) 
           "constraintSpec"
         | 
           ## (content model) 
           "content"
         | 
           ##
           "conversion"
         | 
           ## (correction) 
           "corr"
         | 
           ## (correction principles) 
           "correction"
         | 
           ## (correspondence action) 
           "correspAction"
         | 
           ## (correspondence context) 
           "correspContext"
         | 
           ## (correspondence
           ##     description) 
           "correspDesc"
         | 
           ## (country) 
           "country"
         | 
           ## (creation) 
           "creation"
         | 
           ## (custodial event) 
           "custEvent"
         | 
           ## (custodial history) 
           "custodialHist"
         | 
           ## (damage) 
           "damage"
         | 
           ## (damaged span of text) 
           "damageSpan"
         | 
           ##
           "dataFacet"
         | 
           ##
           "dataRef"
         | 
           ## (datatype specification) 
           "dataSpec"
         | 
           ## (datatype) 
           "datatype"
         | 
           ## (date) 
           "date"
         | 
           ## (dateline) 
           "dateline"
         | 
           ## (death) 
           "death"
         | 
           ## (decoration description) 
           "decoDesc"
         | 
           ## (note on decoration) 
           "decoNote"
         | 
           ## (definition) 
           "def"
         | 
           ## (default feature value) 
           "default"
         | 
           ## (default value) 
           "defaultVal"
         | 
           ## (deletion) 
           "del"
         | 
           ## (deleted span of text) 
           "delSpan"
         | 
           ## (depth) 
           "depth"
         | 
           ## (derivation) 
           "derivation"
         | 
           ## (description) 
           "desc"
         | 
           ## (dictionary scrap) 
           "dictScrap"
         | 
           ##
           "dim"
         | 
           ## (dimensions) 
           "dimensions"
         | 
           ##
           "distinct"
         | 
           ## (distributor) 
           "distributor"
         | 
           ## (district) 
           "district"
         | 
           ## (text division) 
           "div"
         | 
           ## (level-1 text division) 
           "div1"
         | 
           ## (level-2 text division) 
           "div2"
         | 
           ## (level-3 text division) 
           "div3"
         | 
           ## (level-4 text division) 
           "div4"
         | 
           ## (level-5 text division) 
           "div5"
         | 
           ## (level-6 text division) 
           "div6"
         | 
           ## (level-7 text division) 
           "div7"
         | 
           ## (automatically generated text division) 
           "divGen"
         | 
           ## (document author) 
           "docAuthor"
         | 
           ## (document date) 
           "docDate"
         | 
           ## (document edition) 
           "docEdition"
         | 
           ## (document imprint) 
           "docImprint"
         | 
           ## (document title) 
           "docTitle"
         | 
           ## (domain of use) 
           "domain"
         | 
           ## (leaf or terminal node of an embedding tree) 
           "eLeaf"
         | 
           ## (embedding tree) 
           "eTree"
         | 
           ## (edition) 
           "edition"
         | 
           ## (edition statement) 
           "editionStmt"
         | 
           ##
           "editor"
         | 
           ## (editorial practice declaration) 
           "editorialDecl"
         | 
           ## (education) 
           "education"
         | 
           ## (example) 
           "eg"
         | 
           ## (example of XML) 
           "egXML"
         | 
           ##
           "elementRef"
         | 
           ## (element specification) 
           "elementSpec"
         | 
           ## (electronic mail address) 
           "email"
         | 
           ## (emphasized) 
           "emph"
         | 
           ##
           "empty"
         | 
           ## (encoding description) 
           "encodingDesc"
         | 
           ## (entry) 
           "entry"
         | 
           ## (unstructured entry) 
           "entryFree"
         | 
           ## (epigraph) 
           "epigraph"
         | 
           ## (epilogue) 
           "epilogue"
         | 
           ## (equipment) 
           "equipment"
         | 
           ## (equivalent) 
           "equiv"
         | 
           ## (etymology) 
           "etym"
         | 
           ## (event) 
           "event"
         | 
           ## (editorial expansion) 
           "ex"
         | 
           ## (exemplum) 
           "exemplum"
         | 
           ## (expansion) 
           "expan"
         | 
           ## (explicit) 
           "explicit"
         | 
           ## (extent) 
           "extent"
         | 
           ## (feature) 
           "f"
         | 
           ## (feature declaration) 
           "fDecl"
         | 
           ## (feature description (in FSD)) 
           "fDescr"
         | 
           ## (feature library) 
           "fLib"
         | 
           ##
           "facsimile"
         | 
           ## (factuality) 
           "factuality"
         | 
           ## (faith) 
           "faith"
         | 
           ## (description of figure) 
           "figDesc"
         | 
           ## (figure) 
           "figure"
         | 
           ## (file description) 
           "fileDesc"
         | 
           ## (filiation) 
           "filiation"
         | 
           ## (final rubric) 
           "finalRubric"
         | 
           ## (floating text) 
           "floatingText"
         | 
           ## (floruit) 
           "floruit"
         | 
           ## (foliation) 
           "foliation"
         | 
           ## (foreign) 
           "foreign"
         | 
           ## (forename) 
           "forename"
         | 
           ## (forest) 
           "forest"
         | 
           ## (form information group) 
           "form"
         | 
           ## (formula) 
           "formula"
         | 
           ## (front matter) 
           "front"
         | 
           ## (feature structure) 
           "fs"
         | 
           ## (feature-structure constraints) 
           "fsConstraints"
         | 
           ## (feature structure declaration) 
           "fsDecl"
         | 
           ## (feature system description (in FSD)) 
           "fsDescr"
         | 
           ## (feature system declaration) 
           "fsdDecl"
         | 
           ## (feature structure declaration link) 
           "fsdLink"
         | 
           ## (funding body) 
           "funder"
         | 
           ## (feature-value library) 
           "fvLib"
         | 
           ## (forme work) 
           "fw"
         | 
           ## (character or glyph) 
           "g"
         | 
           ## (gap) 
           "gap"
         | 
           ## (gathering beginning) 
           "gb"
         | 
           ## (gender) 
           "gen"
         | 
           ## (generational name component) 
           "genName"
         | 
           ## (geographical coordinates) 
           "geo"
         | 
           ## (geographic coordinates declaration) 
           "geoDecl"
         | 
           ## (geographical feature name) 
           "geogFeat"
         | 
           ## (geographical name) 
           "geogName"
         | 
           ## (element name) 
           "gi"
         | 
           ## (gloss) 
           "gloss"
         | 
           ## (character glyph) 
           "glyph"
         | 
           ## (character glyph name) 
           "glyphName"
         | 
           ## (grammatical information) 
           "gram"
         | 
           ## (grammatical information group) 
           "gramGrp"
         | 
           ## (graph) 
           "graph"
         | 
           ## (graphic) 
           "graphic"
         | 
           ## (group) 
           "group"
         | 
           ## (description of hands) 
           "handDesc"
         | 
           ## (note on hand) 
           "handNote"
         | 
           ##
           "handNotes"
         | 
           ## (handwriting shift) 
           "handShift"
         | 
           ## (heading) 
           "head"
         | 
           ## (heading for list items) 
           "headItem"
         | 
           ## (heading for list labels) 
           "headLabel"
         | 
           ## (height) 
           "height"
         | 
           ## (heraldry) 
           "heraldry"
         | 
           ## (highlighted) 
           "hi"
         | 
           ## (history) 
           "history"
         | 
           ## (homograph) 
           "hom"
         | 
           ## (hyphenation) 
           "hyph"
         | 
           ## (hyphenation) 
           "hyphenation"
         | 
           ## (intermediate (or internal) node) 
           "iNode"
         | 
           ## (inflectional class) 
           "iType"
         | 
           ## (identifier) 
           "ident"
         | 
           ## (identifier) 
           "idno"
         | 
           ##
           "if"
         | 
           ## (if and only if) 
           "iff"
         | 
           ## (imprimatur) 
           "imprimatur"
         | 
           ##
           "imprint"
         | 
           ## (incident) 
           "incident"
         | 
           ##
           "incipit"
         | 
           ## (index entry) 
           "index"
         | 
           ## (institution) 
           "institution"
         | 
           ## (interaction) 
           "interaction"
         | 
           ## (interpretation) 
           "interp"
         | 
           ## (interpretation group) 
           "interpGrp"
         | 
           ## (interpretation) 
           "interpretation"
         | 
           ## (item) 
           "item"
         | 
           ## (join) 
           "join"
         | 
           ## (join group) 
           "joinGrp"
         | 
           ## (keywords) 
           "keywords"
         | 
           ## (kinesic) 
           "kinesic"
         | 
           ## (verse line) 
           "l"
         | 
           ## (label) 
           "label"
         | 
           ## (lacuna end) 
           "lacunaEnd"
         | 
           ## (lacuna start) 
           "lacunaStart"
         | 
           ## (language name) 
           "lang"
         | 
           ## (language knowledge) 
           "langKnowledge"
         | 
           ## (language known) 
           "langKnown"
         | 
           ## (language usage) 
           "langUsage"
         | 
           ## (language) 
           "language"
         | 
           ## (layout) 
           "layout"
         | 
           ## (layout description) 
           "layoutDesc"
         | 
           ## (line beginning) 
           "lb"
         | 
           ## (label) 
           "lbl"
         | 
           ## (leaf) 
           "leaf"
         | 
           ## (lemma) 
           "lem"
         | 
           ## (line group) 
           "lg"
         | 
           ##
           "licence"
         | 
           ##
           "line"
         | 
           ## (link) 
           "link"
         | 
           ## (link group) 
           "linkGrp"
         | 
           ## (list) 
           "list"
         | 
           ##
           "listAnnotation"
         | 
           ## (list of apparatus entries) 
           "listApp"
         | 
           ## (citation list) 
           "listBibl"
         | 
           ##
           "listChange"
         | 
           ## (list of events) 
           "listEvent"
         | 
           ##
           "listForest"
         | 
           ## (list of canonical names) 
           "listNym"
         | 
           ## (list of objects) 
           "listObject"
         | 
           ## (list of organizations) 
           "listOrg"
         | 
           ## (list of persons) 
           "listPerson"
         | 
           ## (list of places) 
           "listPlace"
         | 
           ## (list of prefix definitions) 
           "listPrefixDef"
         | 
           ## (list of references) 
           "listRef"
         | 
           ##
           "listRelation"
         | 
           ##
           "listTranspose"
         | 
           ## (witness list) 
           "listWit"
         | 
           ## (locally-defined property name) 
           "localName"
         | 
           ## (locally defined property) 
           "localProp"
         | 
           ##
           "locale"
         | 
           ## (location) 
           "location"
         | 
           ## (locus) 
           "locus"
         | 
           ## (locus group) 
           "locusGrp"
         | 
           ## (morpheme) 
           "m"
         | 
           ##
           "macroRef"
         | 
           ## (macro specification) 
           "macroSpec"
         | 
           ## (character mapping) 
           "mapping"
         | 
           ## (material) 
           "material"
         | 
           ## (measure) 
           "measure"
         | 
           ## (measure group) 
           "measureGrp"
         | 
           ##
           "media"
         | 
           ##
           "meeting"
         | 
           ##
           "memberOf"
         | 
           ##
           "mentioned"
         | 
           ## (metrical notation declaration) 
           "metDecl"
         | 
           ## (metrical notation symbol) 
           "metSym"
         | 
           ##
           "metamark"
         | 
           ## (milestone) 
           "milestone"
         | 
           ##
           "mod"
         | 
           ##
           "model"
         | 
           ##
           "modelGrp"
         | 
           ##
           "modelSequence"
         | 
           ## (module reference) 
           "moduleRef"
         | 
           ## (module specification) 
           "moduleSpec"
         | 
           ## (monographic level) 
           "monogr"
         | 
           ## (mood) 
           "mood"
         | 
           ## (movement) 
           "move"
         | 
           ## (manuscript contents) 
           "msContents"
         | 
           ## (manuscript description) 
           "msDesc"
         | 
           ## (manuscript fragment) 
           "msFrag"
         | 
           ## (manuscript identifier) 
           "msIdentifier"
         | 
           ## (manuscript item) 
           "msItem"
         | 
           ## (structured manuscript item) 
           "msItemStruct"
         | 
           ## (alternative name) 
           "msName"
         | 
           ## (manuscript part) 
           "msPart"
         | 
           ## (music notation) 
           "musicNotation"
         | 
           ## (name, proper noun) 
           "name"
         | 
           ## (name link) 
           "nameLink"
         | 
           ## (namespace) 
           "namespace"
         | 
           ## (nationality) 
           "nationality"
         | 
           ## (node) 
           "node"
         | 
           ## (normalization) 
           "normalization"
         | 
           ##
           "notatedMusic"
         | 
           ## (note) 
           "note"
         | 
           ##
           "noteGrp"
         | 
           ## (notes statement) 
           "notesStmt"
         | 
           ## (number) 
           "num"
         | 
           ## (number) 
           "number"
         | 
           ## (numeric value) 
           "numeric"
         | 
           ## (canonical name) 
           "nym"
         | 
           ## (orthographic-form reference) 
           "oRef"
         | 
           ##
           "object"
         | 
           ## (object description) 
           "objectDesc"
         | 
           ## (object identifier) 
           "objectIdentifier"
         | 
           ## (name of an object) 
           "objectName"
         | 
           ## (object type) 
           "objectType"
         | 
           ## (occupation) 
           "occupation"
         | 
           ## (offset) 
           "offset"
         | 
           ## (opener) 
           "opener"
         | 
           ## (organization) 
           "org"
         | 
           ## (organization name) 
           "orgName"
         | 
           ## (original form) 
           "orig"
         | 
           ## (origin date) 
           "origDate"
         | 
           ## (origin place) 
           "origPlace"
         | 
           ## (origin) 
           "origin"
         | 
           ## (orthographic form) 
           "orth"
         | 
           ##
           "outputRendition"
         | 
           ## (paragraph) 
           "p"
         | 
           ## (pronunciation reference) 
           "pRef"
         | 
           ##
           "param"
         | 
           ##
           "paramList"
         | 
           ##
           "paramSpec"
         | 
           ## (participation description) 
           "particDesc"
         | 
           ## (path) 
           "path"
         | 
           ## (pause) 
           "pause"
         | 
           ## (page beginning) 
           "pb"
         | 
           ## (punctuation character) 
           "pc"
         | 
           ## (person) 
           "per"
         | 
           ## (performance) 
           "performance"
         | 
           ## (personal name) 
           "persName"
         | 
           ## (personal pronouns) 
           "persPronouns"
         | 
           ## (person) 
           "person"
         | 
           ## (personal group) 
           "personGrp"
         | 
           ##
           "persona"
         | 
           ## (phrase) 
           "phr"
         | 
           ## (physical description) 
           "physDesc"
         | 
           ## (place) 
           "place"
         | 
           ## (place name) 
           "placeName"
         | 
           ## (population) 
           "population"
         | 
           ## (part of speech) 
           "pos"
         | 
           ## (postal box or post office box) 
           "postBox"
         | 
           ## (postal code) 
           "postCode"
         | 
           ##
           "postscript"
         | 
           ##
           "precision"
         | 
           ## (prefix definition) 
           "prefixDef"
         | 
           ## (preparedness) 
           "preparedness"
         | 
           ## (principal researcher) 
           "principal"
         | 
           ## (text-profile description) 
           "profileDesc"
         | 
           ## (project description) 
           "projectDesc"
         | 
           ## (prologue) 
           "prologue"
         | 
           ## (pronunciation) 
           "pron"
         | 
           ## (provenance) 
           "provenance"
         | 
           ## (pointer) 
           "ptr"
         | 
           ## (publication place) 
           "pubPlace"
         | 
           ## (publication statement) 
           "publicationStmt"
         | 
           ## (publisher) 
           "publisher"
         | 
           ##
           "punctuation"
         | 
           ##
           "purpose"
         | 
           ## (quoted) 
           "q"
         | 
           ## (quotation) 
           "quotation"
         | 
           ## (quotation) 
           "quote"
         | 
           ## (ruby base) 
           "rb"
         | 
           ## (reading) 
           "rdg"
         | 
           ## (reading group) 
           "rdgGrp"
         | 
           ## (related entry) 
           "re"
         | 
           ## (recorded history) 
           "recordHist"
         | 
           ## (recording event) 
           "recording"
         | 
           ## (recording statement) 
           "recordingStmt"
         | 
           ##
           "redo"
         | 
           ## (reference) 
           "ref"
         | 
           ## (reference state) 
           "refState"
         | 
           ## (references declaration) 
           "refsDecl"
         | 
           ## (regularization) 
           "reg"
         | 
           ## (region) 
           "region"
         | 
           ##
           "relatedItem"
         | 
           ## (relationship) 
           "relation"
         | 
           ## (remarks) 
           "remarks"
         | 
           ## (rendition) 
           "rendition"
         | 
           ## (repository) 
           "repository"
         | 
           ## (residence) 
           "residence"
         | 
           ## (responsibility) 
           "resp"
         | 
           ## (statement of responsibility) 
           "respStmt"
         | 
           ## (responsibility) 
           "respons"
         | 
           ## (restore) 
           "restore"
         | 
           ##
           "retrace"
         | 
           ## (revision description) 
           "revisionDesc"
         | 
           ##
           "rhyme"
         | 
           ## (role) 
           "role"
         | 
           ## (role description) 
           "roleDesc"
         | 
           ## (role name) 
           "roleName"
         | 
           ## (root node) 
           "root"
         | 
           ## (row) 
           "row"
         | 
           ## (referencing string) 
           "rs"
         | 
           ## (ruby text) 
           "rt"
         | 
           ## (rubric) 
           "rubric"
         | 
           ## (ruby container) 
           "ruby"
         | 
           ## (s-unit) 
           "s"
         | 
           ## (speech or thought) 
           "said"
         | 
           ## (salutation) 
           "salute"
         | 
           ## (sampling declaration) 
           "samplingDecl"
         | 
           ## (schema reference) 
           "schemaRef"
         | 
           ## (schema specification) 
           "schemaSpec"
         | 
           ##
           "scriptDesc"
         | 
           ##
           "scriptNote"
         | 
           ## (script statement) 
           "scriptStmt"
         | 
           ## (seal) 
           "seal"
         | 
           ## (seal description) 
           "sealDesc"
         | 
           ## (second folio) 
           "secFol"
         | 
           ## (secluded text) 
           "secl"
         | 
           ## (arbitrary segment) 
           "seg"
         | 
           ## (segmentation) 
           "segmentation"
         | 
           ##
           "sense"
         | 
           ##
           "sequence"
         | 
           ## (series information) 
           "series"
         | 
           ## (series statement) 
           "seriesStmt"
         | 
           ## (setting) 
           "set"
         | 
           ##
           "setting"
         | 
           ## (setting description) 
           "settingDesc"
         | 
           ## (settlement) 
           "settlement"
         | 
           ## (sex) 
           "sex"
         | 
           ## (shift) 
           "shift"
         | 
           ## (Latin for thus or so
           ##                               ) 
           "sic"
         | 
           ## (signatures) 
           "signatures"
         | 
           ## (signature) 
           "signed"
         | 
           ## (so called) 
           "soCalled"
         | 
           ## (socio-economic status) 
           "socecStatus"
         | 
           ## (sound) 
           "sound"
         | 
           ## (source) 
           "source"
         | 
           ## (source description) 
           "sourceDesc"
         | 
           ##
           "sourceDoc"
         | 
           ## (speech) 
           "sp"
         | 
           ## (speech group) 
           "spGrp"
         | 
           ## (space) 
           "space"
         | 
           ##
           "span"
         | 
           ## (span group) 
           "spanGrp"
         | 
           ##
           "speaker"
         | 
           ## (specification description) 
           "specDesc"
         | 
           ## (specification group) 
           "specGrp"
         | 
           ## (reference to a specification group) 
           "specGrpRef"
         | 
           ## (specification list) 
           "specList"
         | 
           ## (sponsor) 
           "sponsor"
         | 
           ## (stage direction) 
           "stage"
         | 
           ## (stamp) 
           "stamp"
         | 
           ##
           "standOff"
         | 
           ## (state) 
           "state"
         | 
           ## (standard values) 
           "stdVals"
         | 
           ##
           "street"
         | 
           ## (stress) 
           "stress"
         | 
           ## (string value) 
           "string"
         | 
           ## (style definition language declaration) 
           "styleDefDecl"
         | 
           ## (subcategorization) 
           "subc"
         | 
           ## (substitution) 
           "subst"
         | 
           ## (substitution join) 
           "substJoin"
         | 
           ##
           "summary"
         | 
           ## (super entry) 
           "superEntry"
         | 
           ## (supplied) 
           "supplied"
         | 
           ## (support) 
           "support"
         | 
           ## (support description) 
           "supportDesc"
         | 
           ##
           "surface"
         | 
           ##
           "surfaceGrp"
         | 
           ## (surname) 
           "surname"
         | 
           ## (surplus) 
           "surplus"
         | 
           ## (surrogates) 
           "surrogates"
         | 
           ## (syllabification) 
           "syll"
         | 
           ## (symbolic value) 
           "symbol"
         | 
           ## (table) 
           "table"
         | 
           ## (tag) 
           "tag"
         | 
           ## (element usage) 
           "tagUsage"
         | 
           ## (tagging declaration) 
           "tagsDecl"
         | 
           ## (taxonomy) 
           "taxonomy"
         | 
           ## (technical stage direction) 
           "tech"
         | 
           ## (TEI corpus) 
           "teiCorpus"
         | 
           ## (TEI header) 
           "teiHeader"
         | 
           ## (term) 
           "term"
         | 
           ## (terrain) 
           "terrain"
         | 
           ## (text) 
           "text"
         | 
           ## (text classification) 
           "textClass"
         | 
           ## (text description) 
           "textDesc"
         | 
           ## (text language) 
           "textLang"
         | 
           ##
           "textNode"
         | 
           ##
           "then"
         | 
           ## (time) 
           "time"
         | 
           ## (timeline) 
           "timeline"
         | 
           ## (title) 
           "title"
         | 
           ## (title page) 
           "titlePage"
         | 
           ## (title part) 
           "titlePart"
         | 
           ## (title statement) 
           "titleStmt"
         | 
           ## (tense) 
           "tns"
         | 
           ##
           "trailer"
         | 
           ## (trait) 
           "trait"
         | 
           ##
           "transcriptionDesc"
         | 
           ##
           "transpose"
         | 
           ## (tree) 
           "tree"
         | 
           ## (underspecified embedding tree, so called because of its
           ##   characteristic shape when drawn) 
           "triangle"
         | 
           ## (typeface description) 
           "typeDesc"
         | 
           ## (typographic note) 
           "typeNote"
         | 
           ## (utterance) 
           "u"
         | 
           ## (unclear) 
           "unclear"
         | 
           ##
           "undo"
         | 
           ## (Unicode property name) 
           "unicodeName"
         | 
           ## (unicode property) 
           "unicodeProp"
         | 
           ## (unihan property) 
           "unihanProp"
         | 
           ##
           "unit"
         | 
           ## (unit declarations) 
           "unitDecl"
         | 
           ## (unit definition) 
           "unitDef"
         | 
           ## (usage) 
           "usg"
         | 
           ## (value alternation) 
           "vAlt"
         | 
           ## (collection of values) 
           "vColl"
         | 
           ## (value default) 
           "vDefault"
         | 
           ## (value label) 
           "vLabel"
         | 
           ## (merged collection of values) 
           "vMerge"
         | 
           ## (value negation) 
           "vNot"
         | 
           ## (value range) 
           "vRange"
         | 
           ## (value) 
           "val"
         | 
           ## (value description) 
           "valDesc"
         | 
           ##
           "valItem"
         | 
           ## (value list) 
           "valList"
         | 
           ## (value) 
           "value"
         | 
           ## (variant encoding) 
           "variantEncoding"
         | 
           ## (view) 
           "view"
         | 
           ## (vocal) 
           "vocal"
         | 
           ## (word) 
           "w"
         | 
           ## (watermark) 
           "watermark"
         | 
           ##
           "when"
         | 
           ## (width) 
           "width"
         | 
           ## (wit) 
           "wit"
         | 
           ## (witness detail) 
           "witDetail"
         | 
           ## (fragmented witness end) 
           "witEnd"
         | 
           ## (fragmented witness start) 
           "witStart"
         | 
           ## (witness) 
           "witness"
         | 
           ## (writing) 
           "writing"
         | 
           ## (non-TEI metadata) 
           "xenoData"
         | 
           ## (cross-reference phrase) 
           "xr"
         | 
           ##
           "zone"
         | xsd:token { pattern = "[^\p{C}\p{Z}]+" })*
      }
    }?,
    
    ##
    attribute key {
      
      ##
      "analysis"
      | 
        ##
        "certainty"
      | 
        ##
        "core"
      | 
        ##
        "corpus"
      | 
        ##
        "dictionaries"
      | 
        ##
        "drama"
      | 
        ##
        "figures"
      | 
        ##
        "gaiji"
      | 
        ##
        "header"
      | 
        ##
        "iso-fs"
      | 
        ##
        "linking"
      | 
        ##
        "msdescription"
      | 
        ##
        "namesdates"
      | 
        ##
        "nets"
      | 
        ##
        "spoken"
      | 
        ##
        "tagdocs"
      | 
        ##
        "tei"
      | 
        ##
        "textcrit"
      | 
        ##
        "textstructure"
      | 
        ##
        "transcr"
      | 
        ##
        "verse"
    }?,
    (
     ## (uniform resource locator) refers to a non-TEI module of RELAX NG code by external location
     attribute url { xsd:anyURI }?),
    (
     ## specifies a default prefix which will be prepended to all patterns from the imported module
     attribute prefix { xsd:NCName }?)
    >> sch:pattern [
         id =
           "tei_customization-moduleRef-prefix-not-same-prefix-constraint-rule-50"
         "\x{a}" ~
         "            "
         sch:rule [
           context = "tei:moduleRef"
           "\x{a}" ~
           "               "
           sch:report [
             test =
               "//*[ not( generate-id(.) eq generate-id(      current() ) ) ]/@prefix = @prefix"
             "The prefix attribute\x{a}" ~
             "	    of "
             sch:name [ ]
             " should not match that of any other\x{a}" ~
             "	    element (it would defeat the purpose)"
           ]
           "\x{a}" ~
           "            "
         ]
         "\x{a}" ~
         "         "
       ],
    empty
  }
cust_moduleSpec =
  
  ## (module specification) documents the structure, content, and purpose of a single module, i.e. a named and externally visible group of declarations. [22.2. Modules and Schemas]
  element tei:moduleSpec {
    ((cust_model.glossLike | cust_model.descLike)*,
     cust_exemplum*,
     cust_remarks?,
     cust_listRef*),
    cust_att.global.attributes,
    cust_att.identified.attributes,
    cust_att.typed.attributes,
    empty
  }
cust_schemaSpec =
  
  ## (schema specification) generates a TEI-conformant schema and documentation for it. [2.3. The Encoding Description 22.2. Modules and Schemas 23.5.1. Making a Unified ODD]
  element tei:schemaSpec {
    cust_gloss?,
    cust_desc,
    ((cust_model.oddRef | cust_model.oddDecl)*)
    >> sch:pattern [
         id =
           "tei_customization-schemaSpec-required-modules-constraint-assert-60"
         "\x{a}" ~
         "            "
         sch:rule [
           context = "tei:schemaSpec"
           "\x{a}" ~
           "               "
           sch:assert [
             test =
               "                       ( tei:moduleRef[ @key eq 'tei'] or tei:specGrpRef[ id( substring-after( normalize-space( @target ), '#') )/tei:moduleRef[ @key eq 'tei'] ] )                                             and                       ( tei:moduleRef[ @key eq 'core'] or tei:specGrpRef[ id( substring-after( normalize-space( @target ), '#') )/tei:moduleRef[ @key eq 'core'] ] )                                             and                       ( tei:moduleRef[ @key eq 'header'] or tei:specGrpRef[ id( substring-after( normalize-space( @target ), '#') )/tei:moduleRef[ @key eq 'header'] ] )                                             and                       ( tei:moduleRef[ @key eq 'textstructure'] or tei:specGrpRef[ id( substring-after( normalize-space( @target ), '#') )/tei:moduleRef[ @key eq 'textstructure'] ] )                                             "
             " missing one or more of the required modules (tei, core, header,\x{a}" ~
             "                      textstructure). "
           ]
           "\x{a}" ~
           "            "
         ]
         "\x{a}" ~
         "         "
       ]
    >> sch:pattern [
         id =
           "tei_customization-schemaSpec-no-outside-specs-constraint-rule-51"
         "\x{a}" ~
         "            "
         sch:rule [
           context =
             "tei:classSpec[ not( ancestor::tei:schemaSpec ) ]                                      | tei:elementSpec[ not( ancestor::tei:schemaSpec ) ]                                      | tei:macroSpec[ not( ancestor::tei:schemaSpec ) ]"
           "\x{a}" ~
           "                           "
           sch:assert [
             test =
               "//tei:schemaSpec//tei:specGrpRef                                         [ substring-after( normalize-space( @target ), '#')                                            eq                                           current()/ancestor::tei:specGrp/@xml:id ]"
             "＜"
             sch:name [ ]
             "＞ should be in ＜schemaSpec＞ or referred to from within\x{a}" ~
             "                        ＜schemaSpec＞"
           ]
           "\x{a}" ~
           "                        "
         ]
         "\x{a}" ~
         "         "
       ]
    >> sch:pattern [
         id =
           "tei_customization-schemaSpec-only-one-schemaSpec-constraint-rule-52"
         "\x{a}" ~
         "            "
         sch:rule [
           context = "/"
           "\x{a}" ~
           "                           "
           sch:report [
             test = "count( //tei:schemaSpec ) eq 0"
             "There's no ＜schemaSpec＞, so\x{a}" ~
             "                        this isn't much of a TEI customization"
           ]
           "\x{a}" ~
           "                           "
           sch:report [
             test = "count( //tei:schemaSpec ) gt 1"
             "You have more than one\x{a}" ~
             "                        ＜schemaSpec＞; current ODD processors will only look at the first\x{a}" ~
             "                        one"
           ]
           "\x{a}" ~
           "                        "
         ]
         "\x{a}" ~
         "         "
       ]
    >> sch:pattern [
         id =
           "tei_customization-schemaSpec-deprecate_schemaSpec_in_bizarre_places-constraint-rule-53"
         "\x{a}" ~
         "            "
         sch:rule [
           context = "tei:schemaSpec|teix:schemaSpec"
           "\x{a}" ~
           "	              "
           sch:assert [
             test =
               "             parent::teix:egXML      | parent::tei:encodingDesc  | parent::teix:encodingDesc      | parent::tei:front         | parent::teix:front      | parent::tei:back          | parent::teix:back      | parent::tei:body          | parent::teix:body      | parent::tei:div           | parent::teix:div      | parent::tei:div1          | parent::teix:div1      | parent::tei:div2          | parent::teix:div2      | parent::tei:div3          | parent::teix:div3      | parent::tei:div4          | parent::teix:div4      | parent::tei:div5          | parent::teix:div5      | parent::tei:div6          | parent::teix:div6      | parent::tei:div7          | parent::teix:div7"
             role = "nonfatal"
             "WARNING: use of deprecated construct — the “schemaSpec” element will no longer be a valid child of “"
             sch:value-of [ select = "name(..)" ]
             "” as of 2021-10-23; instead, it should be a child of “front”, “body”, “back”, “encodingDesc”, or a division element."
           ]
           "\x{a}" ~
           "            "
         ]
         "\x{a}" ~
         "         "
       ],
    cust_att.global.attributes,
    cust_att.identified.attributes,
    cust_att.namespaceable.attributes,
    cust_att.docStatus.attributes,
    
    ## specifies entry points to the schema, i.e. which elements may be used as the root of documents conforming to it.
    attribute start {
      list {
        (
         ## (TEI document) 
         "TEI"
         | 
           ## (anonymous block) 
           "ab"
         | 
           ## (abbreviation) 
           "abbr"
         | 
           ##
           "abstract"
         | 
           ## (accompanying material) 
           "accMat"
         | 
           ## (acquisition) 
           "acquisition"
         | 
           ## (activity) 
           "activity"
         | 
           ##
           "actor"
         | 
           ## (addition) 
           "add"
         | 
           ## (additional name) 
           "addName"
         | 
           ## (added span of text) 
           "addSpan"
         | 
           ## (additional) 
           "additional"
         | 
           ## (additions) 
           "additions"
         | 
           ## (address line) 
           "addrLine"
         | 
           ## (address) 
           "address"
         | 
           ## (administrative information) 
           "adminInfo"
         | 
           ## (affiliation) 
           "affiliation"
         | 
           ## (age) 
           "age"
         | 
           ## (alternation) 
           "alt"
         | 
           ## (alternation group) 
           "altGrp"
         | 
           ## (alternate identifier) 
           "altIdent"
         | 
           ## (alternative identifier) 
           "altIdentifier"
         | 
           ##
           "alternate"
         | 
           ## (abbreviation marker) 
           "am"
         | 
           ## (analytic level) 
           "analytic"
         | 
           ## (anchor point) 
           "anchor"
         | 
           ##
           "annotation"
         | 
           ##
           "annotationBlock"
         | 
           ##
           "anyElement"
         | 
           ## (apparatus entry) 
           "app"
         | 
           ## (application information) 
           "appInfo"
         | 
           ##
           "application"
         | 
           ## (arc) 
           "arc"
         | 
           ## (argument) 
           "argument"
         | 
           ## (attribute) 
           "att"
         | 
           ## (attribute definition) 
           "attDef"
         | 
           ## (attribute list) 
           "attList"
         | 
           ## (attribute pointer) 
           "attRef"
         | 
           ## (author) 
           "author"
         | 
           ## (release authority) 
           "authority"
         | 
           ## (availability) 
           "availability"
         | 
           ## (back matter) 
           "back"
         | 
           ## (bibliographic citation) 
           "bibl"
         | 
           ## (fully-structured bibliographic citation) 
           "biblFull"
         | 
           ## (scope of bibliographic reference) 
           "biblScope"
         | 
           ## (structured bibliographic citation) 
           "biblStruct"
         | 
           ## (bi-conditional feature-structure constraint) 
           "bicond"
         | 
           ## (binary value) 
           "binary"
         | 
           ##
           "binaryObject"
         | 
           ## (binding) 
           "binding"
         | 
           ## (binding description) 
           "bindingDesc"
         | 
           ## (birth) 
           "birth"
         | 
           ## (bloc) 
           "bloc"
         | 
           ## (text body) 
           "body"
         | 
           ## (broadcast) 
           "broadcast"
         | 
           ## (byline) 
           "byline"
         | 
           ## (character) 
           "c"
         | 
           ## (canonical reference pattern) 
           "cRefPattern"
         | 
           ##
           "caesura"
         | 
           ## (calendar) 
           "calendar"
         | 
           ## (calendar description) 
           "calendarDesc"
         | 
           ## (camera) 
           "camera"
         | 
           ## (caption) 
           "caption"
         | 
           ## (case) 
           "case"
         | 
           ## (cast list grouping) 
           "castGroup"
         | 
           ## (cast list item) 
           "castItem"
         | 
           ## (cast list) 
           "castList"
         | 
           ## (category description) 
           "catDesc"
         | 
           ## (category reference) 
           "catRef"
         | 
           ## (catchwords) 
           "catchwords"
         | 
           ## (category) 
           "category"
         | 
           ## (column beginning) 
           "cb"
         | 
           ## (cell) 
           "cell"
         | 
           ##
           "certainty"
         | 
           ## (change) 
           "change"
         | 
           ## (primary channel) 
           "channel"
         | 
           ## (character) 
           "char"
         | 
           ## (character declarations) 
           "charDecl"
         | 
           ## (character name) 
           "charName"
         | 
           ## (character property) 
           "charProp"
         | 
           ## (choice) 
           "choice"
         | 
           ## (cited quotation) 
           "cit"
         | 
           ## (citation data) 
           "citeData"
         | 
           ## (citation structure) 
           "citeStructure"
         | 
           ## (cited range) 
           "citedRange"
         | 
           ## (clause) 
           "cl"
         | 
           ## (classification code) 
           "classCode"
         | 
           ## (classification declarations) 
           "classDecl"
         | 
           ##
           "classRef"
         | 
           ## (class specification) 
           "classSpec"
         | 
           ## (classes) 
           "classes"
         | 
           ## (climate) 
           "climate"
         | 
           ## (closer) 
           "closer"
         | 
           ##
           "code"
         | 
           ## (collation) 
           "collation"
         | 
           ## (collection) 
           "collection"
         | 
           ## (collocate) 
           "colloc"
         | 
           ## (colophon) 
           "colophon"
         | 
           ## (conditional feature-structure constraint) 
           "cond"
         | 
           ## (condition) 
           "condition"
         | 
           ## (constitution) 
           "constitution"
         | 
           ## (constraint rules) 
           "constraint"
         | 
           ## (constraint on schema) 
           "constraintSpec"
         | 
           ## (content model) 
           "content"
         | 
           ##
           "conversion"
         | 
           ## (correction) 
           "corr"
         | 
           ## (correction principles) 
           "correction"
         | 
           ## (correspondence action) 
           "correspAction"
         | 
           ## (correspondence context) 
           "correspContext"
         | 
           ## (correspondence
           ##     description) 
           "correspDesc"
         | 
           ## (country) 
           "country"
         | 
           ## (creation) 
           "creation"
         | 
           ## (custodial event) 
           "custEvent"
         | 
           ## (custodial history) 
           "custodialHist"
         | 
           ## (damage) 
           "damage"
         | 
           ## (damaged span of text) 
           "damageSpan"
         | 
           ##
           "dataFacet"
         | 
           ##
           "dataRef"
         | 
           ## (datatype specification) 
           "dataSpec"
         | 
           ## (datatype) 
           "datatype"
         | 
           ## (date) 
           "date"
         | 
           ## (dateline) 
           "dateline"
         | 
           ## (death) 
           "death"
         | 
           ## (decoration description) 
           "decoDesc"
         | 
           ## (note on decoration) 
           "decoNote"
         | 
           ## (definition) 
           "def"
         | 
           ## (default feature value) 
           "default"
         | 
           ## (default value) 
           "defaultVal"
         | 
           ## (deletion) 
           "del"
         | 
           ## (deleted span of text) 
           "delSpan"
         | 
           ## (depth) 
           "depth"
         | 
           ## (derivation) 
           "derivation"
         | 
           ## (description) 
           "desc"
         | 
           ## (dictionary scrap) 
           "dictScrap"
         | 
           ##
           "dim"
         | 
           ## (dimensions) 
           "dimensions"
         | 
           ##
           "distinct"
         | 
           ## (distributor) 
           "distributor"
         | 
           ## (district) 
           "district"
         | 
           ## (text division) 
           "div"
         | 
           ## (level-1 text division) 
           "div1"
         | 
           ## (level-2 text division) 
           "div2"
         | 
           ## (level-3 text division) 
           "div3"
         | 
           ## (level-4 text division) 
           "div4"
         | 
           ## (level-5 text division) 
           "div5"
         | 
           ## (level-6 text division) 
           "div6"
         | 
           ## (level-7 text division) 
           "div7"
         | 
           ## (automatically generated text division) 
           "divGen"
         | 
           ## (document author) 
           "docAuthor"
         | 
           ## (document date) 
           "docDate"
         | 
           ## (document edition) 
           "docEdition"
         | 
           ## (document imprint) 
           "docImprint"
         | 
           ## (document title) 
           "docTitle"
         | 
           ## (domain of use) 
           "domain"
         | 
           ## (leaf or terminal node of an embedding tree) 
           "eLeaf"
         | 
           ## (embedding tree) 
           "eTree"
         | 
           ## (edition) 
           "edition"
         | 
           ## (edition statement) 
           "editionStmt"
         | 
           ##
           "editor"
         | 
           ## (editorial practice declaration) 
           "editorialDecl"
         | 
           ## (education) 
           "education"
         | 
           ## (example) 
           "eg"
         | 
           ## (example of XML) 
           "egXML"
         | 
           ##
           "elementRef"
         | 
           ## (element specification) 
           "elementSpec"
         | 
           ## (electronic mail address) 
           "email"
         | 
           ## (emphasized) 
           "emph"
         | 
           ##
           "empty"
         | 
           ## (encoding description) 
           "encodingDesc"
         | 
           ## (entry) 
           "entry"
         | 
           ## (unstructured entry) 
           "entryFree"
         | 
           ## (epigraph) 
           "epigraph"
         | 
           ## (epilogue) 
           "epilogue"
         | 
           ## (equipment) 
           "equipment"
         | 
           ## (equivalent) 
           "equiv"
         | 
           ## (etymology) 
           "etym"
         | 
           ## (event) 
           "event"
         | 
           ## (editorial expansion) 
           "ex"
         | 
           ## (exemplum) 
           "exemplum"
         | 
           ## (expansion) 
           "expan"
         | 
           ## (explicit) 
           "explicit"
         | 
           ## (extent) 
           "extent"
         | 
           ## (feature) 
           "f"
         | 
           ## (feature declaration) 
           "fDecl"
         | 
           ## (feature description (in FSD)) 
           "fDescr"
         | 
           ## (feature library) 
           "fLib"
         | 
           ##
           "facsimile"
         | 
           ## (factuality) 
           "factuality"
         | 
           ## (faith) 
           "faith"
         | 
           ## (description of figure) 
           "figDesc"
         | 
           ## (figure) 
           "figure"
         | 
           ## (file description) 
           "fileDesc"
         | 
           ## (filiation) 
           "filiation"
         | 
           ## (final rubric) 
           "finalRubric"
         | 
           ## (floating text) 
           "floatingText"
         | 
           ## (floruit) 
           "floruit"
         | 
           ## (foliation) 
           "foliation"
         | 
           ## (foreign) 
           "foreign"
         | 
           ## (forename) 
           "forename"
         | 
           ## (forest) 
           "forest"
         | 
           ## (form information group) 
           "form"
         | 
           ## (formula) 
           "formula"
         | 
           ## (front matter) 
           "front"
         | 
           ## (feature structure) 
           "fs"
         | 
           ## (feature-structure constraints) 
           "fsConstraints"
         | 
           ## (feature structure declaration) 
           "fsDecl"
         | 
           ## (feature system description (in FSD)) 
           "fsDescr"
         | 
           ## (feature system declaration) 
           "fsdDecl"
         | 
           ## (feature structure declaration link) 
           "fsdLink"
         | 
           ## (funding body) 
           "funder"
         | 
           ## (feature-value library) 
           "fvLib"
         | 
           ## (forme work) 
           "fw"
         | 
           ## (character or glyph) 
           "g"
         | 
           ## (gap) 
           "gap"
         | 
           ## (gathering beginning) 
           "gb"
         | 
           ## (gender) 
           "gen"
         | 
           ## (generational name component) 
           "genName"
         | 
           ## (geographical coordinates) 
           "geo"
         | 
           ## (geographic coordinates declaration) 
           "geoDecl"
         | 
           ## (geographical feature name) 
           "geogFeat"
         | 
           ## (geographical name) 
           "geogName"
         | 
           ## (element name) 
           "gi"
         | 
           ## (gloss) 
           "gloss"
         | 
           ## (character glyph) 
           "glyph"
         | 
           ## (character glyph name) 
           "glyphName"
         | 
           ## (grammatical information) 
           "gram"
         | 
           ## (grammatical information group) 
           "gramGrp"
         | 
           ## (graph) 
           "graph"
         | 
           ## (graphic) 
           "graphic"
         | 
           ## (group) 
           "group"
         | 
           ## (description of hands) 
           "handDesc"
         | 
           ## (note on hand) 
           "handNote"
         | 
           ##
           "handNotes"
         | 
           ## (handwriting shift) 
           "handShift"
         | 
           ## (heading) 
           "head"
         | 
           ## (heading for list items) 
           "headItem"
         | 
           ## (heading for list labels) 
           "headLabel"
         | 
           ## (height) 
           "height"
         | 
           ## (heraldry) 
           "heraldry"
         | 
           ## (highlighted) 
           "hi"
         | 
           ## (history) 
           "history"
         | 
           ## (homograph) 
           "hom"
         | 
           ## (hyphenation) 
           "hyph"
         | 
           ## (hyphenation) 
           "hyphenation"
         | 
           ## (intermediate (or internal) node) 
           "iNode"
         | 
           ## (inflectional class) 
           "iType"
         | 
           ## (identifier) 
           "ident"
         | 
           ## (identifier) 
           "idno"
         | 
           ##
           "if"
         | 
           ## (if and only if) 
           "iff"
         | 
           ## (imprimatur) 
           "imprimatur"
         | 
           ##
           "imprint"
         | 
           ## (incident) 
           "incident"
         | 
           ##
           "incipit"
         | 
           ## (index entry) 
           "index"
         | 
           ## (institution) 
           "institution"
         | 
           ## (interaction) 
           "interaction"
         | 
           ## (interpretation) 
           "interp"
         | 
           ## (interpretation group) 
           "interpGrp"
         | 
           ## (interpretation) 
           "interpretation"
         | 
           ## (item) 
           "item"
         | 
           ## (join) 
           "join"
         | 
           ## (join group) 
           "joinGrp"
         | 
           ## (keywords) 
           "keywords"
         | 
           ## (kinesic) 
           "kinesic"
         | 
           ## (verse line) 
           "l"
         | 
           ## (label) 
           "label"
         | 
           ## (lacuna end) 
           "lacunaEnd"
         | 
           ## (lacuna start) 
           "lacunaStart"
         | 
           ## (language name) 
           "lang"
         | 
           ## (language knowledge) 
           "langKnowledge"
         | 
           ## (language known) 
           "langKnown"
         | 
           ## (language usage) 
           "langUsage"
         | 
           ## (language) 
           "language"
         | 
           ## (layout) 
           "layout"
         | 
           ## (layout description) 
           "layoutDesc"
         | 
           ## (line beginning) 
           "lb"
         | 
           ## (label) 
           "lbl"
         | 
           ## (leaf) 
           "leaf"
         | 
           ## (lemma) 
           "lem"
         | 
           ## (line group) 
           "lg"
         | 
           ##
           "licence"
         | 
           ##
           "line"
         | 
           ## (link) 
           "link"
         | 
           ## (link group) 
           "linkGrp"
         | 
           ## (list) 
           "list"
         | 
           ##
           "listAnnotation"
         | 
           ## (list of apparatus entries) 
           "listApp"
         | 
           ## (citation list) 
           "listBibl"
         | 
           ##
           "listChange"
         | 
           ## (list of events) 
           "listEvent"
         | 
           ##
           "listForest"
         | 
           ## (list of canonical names) 
           "listNym"
         | 
           ## (list of objects) 
           "listObject"
         | 
           ## (list of organizations) 
           "listOrg"
         | 
           ## (list of persons) 
           "listPerson"
         | 
           ## (list of places) 
           "listPlace"
         | 
           ## (list of prefix definitions) 
           "listPrefixDef"
         | 
           ## (list of references) 
           "listRef"
         | 
           ##
           "listRelation"
         | 
           ##
           "listTranspose"
         | 
           ## (witness list) 
           "listWit"
         | 
           ## (locally-defined property name) 
           "localName"
         | 
           ## (locally defined property) 
           "localProp"
         | 
           ##
           "locale"
         | 
           ## (location) 
           "location"
         | 
           ## (locus) 
           "locus"
         | 
           ## (locus group) 
           "locusGrp"
         | 
           ## (morpheme) 
           "m"
         | 
           ##
           "macroRef"
         | 
           ## (macro specification) 
           "macroSpec"
         | 
           ## (character mapping) 
           "mapping"
         | 
           ## (material) 
           "material"
         | 
           ## (measure) 
           "measure"
         | 
           ## (measure group) 
           "measureGrp"
         | 
           ##
           "media"
         | 
           ##
           "meeting"
         | 
           ##
           "memberOf"
         | 
           ##
           "mentioned"
         | 
           ## (metrical notation declaration) 
           "metDecl"
         | 
           ## (metrical notation symbol) 
           "metSym"
         | 
           ##
           "metamark"
         | 
           ## (milestone) 
           "milestone"
         | 
           ##
           "mod"
         | 
           ##
           "model"
         | 
           ##
           "modelGrp"
         | 
           ##
           "modelSequence"
         | 
           ## (module reference) 
           "moduleRef"
         | 
           ## (module specification) 
           "moduleSpec"
         | 
           ## (monographic level) 
           "monogr"
         | 
           ## (mood) 
           "mood"
         | 
           ## (movement) 
           "move"
         | 
           ## (manuscript contents) 
           "msContents"
         | 
           ## (manuscript description) 
           "msDesc"
         | 
           ## (manuscript fragment) 
           "msFrag"
         | 
           ## (manuscript identifier) 
           "msIdentifier"
         | 
           ## (manuscript item) 
           "msItem"
         | 
           ## (structured manuscript item) 
           "msItemStruct"
         | 
           ## (alternative name) 
           "msName"
         | 
           ## (manuscript part) 
           "msPart"
         | 
           ## (music notation) 
           "musicNotation"
         | 
           ## (name, proper noun) 
           "name"
         | 
           ## (name link) 
           "nameLink"
         | 
           ## (namespace) 
           "namespace"
         | 
           ## (nationality) 
           "nationality"
         | 
           ## (node) 
           "node"
         | 
           ## (normalization) 
           "normalization"
         | 
           ##
           "notatedMusic"
         | 
           ## (note) 
           "note"
         | 
           ##
           "noteGrp"
         | 
           ## (notes statement) 
           "notesStmt"
         | 
           ## (number) 
           "num"
         | 
           ## (number) 
           "number"
         | 
           ## (numeric value) 
           "numeric"
         | 
           ## (canonical name) 
           "nym"
         | 
           ## (orthographic-form reference) 
           "oRef"
         | 
           ##
           "object"
         | 
           ## (object description) 
           "objectDesc"
         | 
           ## (object identifier) 
           "objectIdentifier"
         | 
           ## (name of an object) 
           "objectName"
         | 
           ## (object type) 
           "objectType"
         | 
           ## (occupation) 
           "occupation"
         | 
           ## (offset) 
           "offset"
         | 
           ## (opener) 
           "opener"
         | 
           ## (organization) 
           "org"
         | 
           ## (organization name) 
           "orgName"
         | 
           ## (original form) 
           "orig"
         | 
           ## (origin date) 
           "origDate"
         | 
           ## (origin place) 
           "origPlace"
         | 
           ## (origin) 
           "origin"
         | 
           ## (orthographic form) 
           "orth"
         | 
           ##
           "outputRendition"
         | 
           ## (paragraph) 
           "p"
         | 
           ## (pronunciation reference) 
           "pRef"
         | 
           ##
           "param"
         | 
           ##
           "paramList"
         | 
           ##
           "paramSpec"
         | 
           ## (participation description) 
           "particDesc"
         | 
           ## (path) 
           "path"
         | 
           ## (pause) 
           "pause"
         | 
           ## (page beginning) 
           "pb"
         | 
           ## (punctuation character) 
           "pc"
         | 
           ## (person) 
           "per"
         | 
           ## (performance) 
           "performance"
         | 
           ## (personal name) 
           "persName"
         | 
           ## (personal pronouns) 
           "persPronouns"
         | 
           ## (person) 
           "person"
         | 
           ## (personal group) 
           "personGrp"
         | 
           ##
           "persona"
         | 
           ## (phrase) 
           "phr"
         | 
           ## (physical description) 
           "physDesc"
         | 
           ## (place) 
           "place"
         | 
           ## (place name) 
           "placeName"
         | 
           ## (population) 
           "population"
         | 
           ## (part of speech) 
           "pos"
         | 
           ## (postal box or post office box) 
           "postBox"
         | 
           ## (postal code) 
           "postCode"
         | 
           ##
           "postscript"
         | 
           ##
           "precision"
         | 
           ## (prefix definition) 
           "prefixDef"
         | 
           ## (preparedness) 
           "preparedness"
         | 
           ## (principal researcher) 
           "principal"
         | 
           ## (text-profile description) 
           "profileDesc"
         | 
           ## (project description) 
           "projectDesc"
         | 
           ## (prologue) 
           "prologue"
         | 
           ## (pronunciation) 
           "pron"
         | 
           ## (provenance) 
           "provenance"
         | 
           ## (pointer) 
           "ptr"
         | 
           ## (publication place) 
           "pubPlace"
         | 
           ## (publication statement) 
           "publicationStmt"
         | 
           ## (publisher) 
           "publisher"
         | 
           ##
           "punctuation"
         | 
           ##
           "purpose"
         | 
           ## (quoted) 
           "q"
         | 
           ## (quotation) 
           "quotation"
         | 
           ## (quotation) 
           "quote"
         | 
           ## (ruby base) 
           "rb"
         | 
           ## (reading) 
           "rdg"
         | 
           ## (reading group) 
           "rdgGrp"
         | 
           ## (related entry) 
           "re"
         | 
           ## (recorded history) 
           "recordHist"
         | 
           ## (recording event) 
           "recording"
         | 
           ## (recording statement) 
           "recordingStmt"
         | 
           ##
           "redo"
         | 
           ## (reference) 
           "ref"
         | 
           ## (reference state) 
           "refState"
         | 
           ## (references declaration) 
           "refsDecl"
         | 
           ## (regularization) 
           "reg"
         | 
           ## (region) 
           "region"
         | 
           ##
           "relatedItem"
         | 
           ## (relationship) 
           "relation"
         | 
           ## (remarks) 
           "remarks"
         | 
           ## (rendition) 
           "rendition"
         | 
           ## (repository) 
           "repository"
         | 
           ## (residence) 
           "residence"
         | 
           ## (responsibility) 
           "resp"
         | 
           ## (statement of responsibility) 
           "respStmt"
         | 
           ## (responsibility) 
           "respons"
         | 
           ## (restore) 
           "restore"
         | 
           ##
           "retrace"
         | 
           ## (revision description) 
           "revisionDesc"
         | 
           ##
           "rhyme"
         | 
           ## (role) 
           "role"
         | 
           ## (role description) 
           "roleDesc"
         | 
           ## (role name) 
           "roleName"
         | 
           ## (root node) 
           "root"
         | 
           ## (row) 
           "row"
         | 
           ## (referencing string) 
           "rs"
         | 
           ## (ruby text) 
           "rt"
         | 
           ## (rubric) 
           "rubric"
         | 
           ## (ruby container) 
           "ruby"
         | 
           ## (s-unit) 
           "s"
         | 
           ## (speech or thought) 
           "said"
         | 
           ## (salutation) 
           "salute"
         | 
           ## (sampling declaration) 
           "samplingDecl"
         | 
           ## (schema reference) 
           "schemaRef"
         | 
           ## (schema specification) 
           "schemaSpec"
         | 
           ##
           "scriptDesc"
         | 
           ##
           "scriptNote"
         | 
           ## (script statement) 
           "scriptStmt"
         | 
           ## (seal) 
           "seal"
         | 
           ## (seal description) 
           "sealDesc"
         | 
           ## (second folio) 
           "secFol"
         | 
           ## (secluded text) 
           "secl"
         | 
           ## (arbitrary segment) 
           "seg"
         | 
           ## (segmentation) 
           "segmentation"
         | 
           ##
           "sense"
         | 
           ##
           "sequence"
         | 
           ## (series information) 
           "series"
         | 
           ## (series statement) 
           "seriesStmt"
         | 
           ## (setting) 
           "set"
         | 
           ##
           "setting"
         | 
           ## (setting description) 
           "settingDesc"
         | 
           ## (settlement) 
           "settlement"
         | 
           ## (sex) 
           "sex"
         | 
           ## (shift) 
           "shift"
         | 
           ## (Latin for thus or so
           ##                               ) 
           "sic"
         | 
           ## (signatures) 
           "signatures"
         | 
           ## (signature) 
           "signed"
         | 
           ## (so called) 
           "soCalled"
         | 
           ## (socio-economic status) 
           "socecStatus"
         | 
           ## (sound) 
           "sound"
         | 
           ## (source) 
           "source"
         | 
           ## (source description) 
           "sourceDesc"
         | 
           ##
           "sourceDoc"
         | 
           ## (speech) 
           "sp"
         | 
           ## (speech group) 
           "spGrp"
         | 
           ## (space) 
           "space"
         | 
           ##
           "span"
         | 
           ## (span group) 
           "spanGrp"
         | 
           ##
           "speaker"
         | 
           ## (specification description) 
           "specDesc"
         | 
           ## (specification group) 
           "specGrp"
         | 
           ## (reference to a specification group) 
           "specGrpRef"
         | 
           ## (specification list) 
           "specList"
         | 
           ## (sponsor) 
           "sponsor"
         | 
           ## (stage direction) 
           "stage"
         | 
           ## (stamp) 
           "stamp"
         | 
           ##
           "standOff"
         | 
           ## (state) 
           "state"
         | 
           ## (standard values) 
           "stdVals"
         | 
           ##
           "street"
         | 
           ## (stress) 
           "stress"
         | 
           ## (string value) 
           "string"
         | 
           ## (style definition language declaration) 
           "styleDefDecl"
         | 
           ## (subcategorization) 
           "subc"
         | 
           ## (substitution) 
           "subst"
         | 
           ## (substitution join) 
           "substJoin"
         | 
           ##
           "summary"
         | 
           ## (super entry) 
           "superEntry"
         | 
           ## (supplied) 
           "supplied"
         | 
           ## (support) 
           "support"
         | 
           ## (support description) 
           "supportDesc"
         | 
           ##
           "surface"
         | 
           ##
           "surfaceGrp"
         | 
           ## (surname) 
           "surname"
         | 
           ## (surplus) 
           "surplus"
         | 
           ## (surrogates) 
           "surrogates"
         | 
           ## (syllabification) 
           "syll"
         | 
           ## (symbolic value) 
           "symbol"
         | 
           ## (table) 
           "table"
         | 
           ## (tag) 
           "tag"
         | 
           ## (element usage) 
           "tagUsage"
         | 
           ## (tagging declaration) 
           "tagsDecl"
         | 
           ## (taxonomy) 
           "taxonomy"
         | 
           ## (technical stage direction) 
           "tech"
         | 
           ## (TEI corpus) 
           "teiCorpus"
         | 
           ## (TEI header) 
           "teiHeader"
         | 
           ## (term) 
           "term"
         | 
           ## (terrain) 
           "terrain"
         | 
           ## (text) 
           "text"
         | 
           ## (text classification) 
           "textClass"
         | 
           ## (text description) 
           "textDesc"
         | 
           ## (text language) 
           "textLang"
         | 
           ##
           "textNode"
         | 
           ##
           "then"
         | 
           ## (time) 
           "time"
         | 
           ## (timeline) 
           "timeline"
         | 
           ## (title) 
           "title"
         | 
           ## (title page) 
           "titlePage"
         | 
           ## (title part) 
           "titlePart"
         | 
           ## (title statement) 
           "titleStmt"
         | 
           ## (tense) 
           "tns"
         | 
           ##
           "trailer"
         | 
           ## (trait) 
           "trait"
         | 
           ##
           "transcriptionDesc"
         | 
           ##
           "transpose"
         | 
           ## (tree) 
           "tree"
         | 
           ## (underspecified embedding tree, so called because of its
           ##   characteristic shape when drawn) 
           "triangle"
         | 
           ## (typeface description) 
           "typeDesc"
         | 
           ## (typographic note) 
           "typeNote"
         | 
           ## (utterance) 
           "u"
         | 
           ## (unclear) 
           "unclear"
         | 
           ##
           "undo"
         | 
           ## (Unicode property name) 
           "unicodeName"
         | 
           ## (unicode property) 
           "unicodeProp"
         | 
           ## (unihan property) 
           "unihanProp"
         | 
           ##
           "unit"
         | 
           ## (unit declarations) 
           "unitDecl"
         | 
           ## (unit definition) 
           "unitDef"
         | 
           ## (usage) 
           "usg"
         | 
           ## (value alternation) 
           "vAlt"
         | 
           ## (collection of values) 
           "vColl"
         | 
           ## (value default) 
           "vDefault"
         | 
           ## (value label) 
           "vLabel"
         | 
           ## (merged collection of values) 
           "vMerge"
         | 
           ## (value negation) 
           "vNot"
         | 
           ## (value range) 
           "vRange"
         | 
           ## (value) 
           "val"
         | 
           ## (value description) 
           "valDesc"
         | 
           ##
           "valItem"
         | 
           ## (value list) 
           "valList"
         | 
           ## (value) 
           "value"
         | 
           ## (variant encoding) 
           "variantEncoding"
         | 
           ## (view) 
           "view"
         | 
           ## (vocal) 
           "vocal"
         | 
           ## (word) 
           "w"
         | 
           ## (watermark) 
           "watermark"
         | 
           ##
           "when"
         | 
           ## (width) 
           "width"
         | 
           ## (wit) 
           "wit"
         | 
           ## (witness detail) 
           "witDetail"
         | 
           ## (fragmented witness end) 
           "witEnd"
         | 
           ## (fragmented witness start) 
           "witStart"
         | 
           ## (witness) 
           "witness"
         | 
           ## (writing) 
           "writing"
         | 
           ## (non-TEI metadata) 
           "xenoData"
         | 
           ## (cross-reference phrase) 
           "xr"
         | 
           ##
           "zone")*
      }
    }?,
    
    ## specifies a default prefix which will be prepended to all patterns relating to TEI elements, unless otherwise stated.
    attribute prefix { xsd:NCName }?,
    
    ## (target language) specifies which language to use when creating the objects in a schema if names for elements or attributes are available in more than one language
    attribute targetLang {
      xsd:language
      | (
         ##
         "")
    }?,
    
    ## (documentation language) specifies which languages to use when creating documentation if the description for an element, attribute, class or macro is available in more than one language
    attribute docLang {
      list {
        (xsd:language
         | (
            ##
            ""))+
      }
    }?,
    
    ## (default namespace exclusions) provides a list of namespaces and/or prefixed element names to be excluded by default from anyName in RELAX NG schemas
    [ a:defaultValue = "http://www.tei-c.org/ns/1.0 teix:egXML" ]
    attribute defaultExceptions {
      list {
        (xsd:anyURI { pattern = "[^/]+:.*" }
         | xsd:Name { pattern = ".+:.+" })+
      }
    }?,
    empty
  }
cust_specGrp =
  
  ## (specification group) contains any convenient grouping of specifications for use within the current module. [22.2. Modules and Schemas]
  element tei:specGrp {
    (cust_model.oddDecl | cust_model.oddRef | cust_model.divPart)*,
    cust_att.global.attributes,
    empty
  }
cust_specGrpRef =
  [
    a:documentation [
      "(reference to a specification group) indicates that the declarations contained by the "
      ns1:code [ "<specGrp>" ]
      " referenced should be inserted at this point. [22.2. Modules and Schemas]"
    ]
  ]
  element tei:specGrpRef {
    empty,
    cust_att.global.attributes,
    
    ## points at the specification group which logically belongs here.
    attribute target { xsd:anyURI },
    empty
  }
cust_elementSpec =
  
  ## (element specification) documents the structure, content, and purpose of a single element type. [22.5. Element Specifications 22. Documentation Elements]
  element tei:elementSpec {
    (cust_altIdent?,
     cust_equiv?,
     cust_gloss?,
     cust_desc?,
     cust_classes?,
     cust_content?,
     cust_valList?,
     cust_constraintSpec*,
     cust_attList?,
     cust_exemplum*,
     cust_remarks*,
     cust_listRef*)
    >> sch:pattern [
         id =
           "tei_customization-elementSpec-module-except-when-add-constraint-assert-63"
         "\x{a}" ~
         "            "
         sch:rule [
           context = "tei:elementSpec"
           "\x{a}" ~
           "               "
           sch:assert [
             test = "@mode"
             "in a customization ODD, the mode= attribute of\x{a}" ~
             "                      ＜elementSpec＞ should be specified"
           ]
           "\x{a}" ~
           "               "
           sch:report [
             test = "not( @module )  and  not( @mode='add')"
             "the module= attribute of ＜elementSpec＞ must be specified anytime the mode= is\x{a}" ~
             "                      not 'add'"
           ]
           "\x{a}" ~
           "            "
         ]
         "\x{a}" ~
         "         "
       ]
    >> sch:pattern [
         id =
           "tei_customization-elementSpec-only-1-per-constraint-report-34"
         "\x{a}" ~
         "            "
         sch:rule [
           context = "tei:elementSpec"
           "\x{a}" ~
           "               "
           sch:report [
             test =
               "//tei:elementSpec[ @ident eq current()/@ident  and  not( . is current() ) ]"
             "Current ODD processors will not correctly handle more than one ＜elementSpec＞ with the same @ident"
           ]
           "\x{a}" ~
           "            "
         ]
         "\x{a}" ~
         "         "
       ]
    >> sch:pattern [
         id =
           "tei_customization-elementSpec-dont-delete-required-constraint-report-35"
         "\x{a}" ~
         "            "
         sch:rule [
           context = "tei:elementSpec"
           "\x{a}" ~
           "               "
           sch:report [
             test = "@mode='delete' and @ident='TEI'"
             "Removing ＜TEI＞ from your\x{a}" ~
             "                      schema guarantees it is not TEI conformant"
           ]
           "\x{a}" ~
           "               "
           sch:report [
             test = "@mode='delete' and @ident='teiHeader'"
             "Removing ＜teiHeader＞\x{a}" ~
             "                      from your schema guarantees it is not TEI conformant"
           ]
           "\x{a}" ~
           "               "
           sch:report [
             test = "@mode='delete' and @ident='fileDesc'"
             "Removing ＜fileDesc＞ from\x{a}" ~
             "                      your schema guarantees it is not TEI conformant"
           ]
           "\x{a}" ~
           "               "
           sch:report [
             test = "@mode='delete' and @ident='titleStmt'"
             "Removing ＜titleStmt＞\x{a}" ~
             "                      from your schema guarantees it is not TEI conformant"
           ]
           "\x{a}" ~
           "               "
           sch:report [
             test = "@mode='delete' and @ident='title'"
             "Removing ＜title＞ from your\x{a}" ~
             "                      schema guarantees it is not TEI conformant"
           ]
           "\x{a}" ~
           "               "
           sch:report [
             test = "@mode='delete' and @ident='publicationStmt'"
             "Removing\x{a}" ~
             "                      ＜publicationStmt＞ from your schema guarantees it is not TEI\x{a}" ~
             "                      conformant"
           ]
           "\x{a}" ~
           "               "
           sch:report [
             test = "@mode='delete' and @ident='sourceDesc'"
             "Removing ＜sourceDesc＞\x{a}" ~
             "                      from your schema guarantees it is not TEI conformant"
           ]
           "\x{a}" ~
           "            "
         ]
         "\x{a}" ~
         "         "
       ]
    >> sch:pattern [
         id =
           "tei_customization-elementSpec-content_when_adding-constraint-rule-54"
         "\x{a}" ~
         "            "
         sch:rule [
           context = "tei:elementSpec[@mode = ('add','replace')]"
           "\x{a}" ~
           "                           "
           sch:assert [
             test = "tei:content"
             "When adding a new element (whether replacing an old one or not), a content model must be specified; but this ＜elementSpec＞ does not have a ＜content＞ child."
           ]
           "\x{a}" ~
           "                        "
         ]
         "\x{a}" ~
         "         "
       ]
    >> sch:pattern [
         id =
           "tei_customization-elementSpec-empty_when_deleting-constraint-rule-55"
         "\x{a}" ~
         "            "
         sch:rule [
           context = "tei:elementSpec[ @mode eq 'delete']"
           "\x{a}" ~
           "                           "
           sch:report [
             test = "*"
             "When used to delete an element from your schema, the ＜elementSpec＞ should be empty"
           ]
           "\x{a}" ~
           "                        "
         ]
         "\x{a}" ~
         "         "
       ]
    >> sch:pattern [
         id =
           "tei_customization-elementSpec-add_implies_ns-constraint-rule-56"
         "\x{a}" ~
         "            "
         sch:rule [
           context =
             "tei:elementSpec[ @mode eq 'add'  or  not( @mode ) ]"
           "\x{a}" ~
           "                           "
           sch:assert [
             test = "ancestor-or-self::*/@ns"
             "When used to add an element, ＜elementSpec＞ (or its ancestor ＜schemaSpec＞) should have an @ns attribute."
           ]
           "\x{a}" ~
           "                        "
         ]
         "\x{a}" ~
         "         "
       ],
    cust_att.global.attributes,
    cust_att.identified.attribute.module,
    cust_att.identified.attribute.predeclare,
    cust_att.combinable.attribute.mode,
    cust_att.deprecated.attribute.validUntil,
    cust_att.namespaceable.attributes,
    
    ## 
    ## Suggested values include: 1] TEI (TEI document); 2] ab (anonymous block); 3] abbr (abbreviation); 4] abstract; 5] accMat (accompanying material); 6] acquisition (acquisition); 7] activity (activity); 8] actor; 9] add (addition); 10] addName (additional name); 11] addSpan (added span of text); 12] additional (additional); 13] additions (additions); 14] addrLine (address line); 15] address (address); 16] adminInfo (administrative information); 17] affiliation (affiliation); 18] age (age); 19] alt (alternation); 20] altGrp (alternation group); 21] altIdent (alternate identifier); 22] altIdentifier (alternative identifier); 23] alternate; 24] am (abbreviation marker); 25] analytic (analytic level); 26] anchor (anchor point); 27] annotation; 28] annotationBlock; 29] anyElement; 30] app (apparatus entry); 31] appInfo (application information); 32] application; 33] arc (arc); 34] argument (argument); 35] att (attribute); 36] attDef (attribute definition); 37] attList (attribute list); 38] attRef (attribute pointer); 39] author (author); 40] authority (release authority); 41] availability (availability); 42] back (back matter); 43] bibl (bibliographic citation); 44] biblFull (fully-structured bibliographic citation); 45] biblScope (scope of bibliographic reference); 46] biblStruct (structured bibliographic citation); 47] bicond (bi-conditional feature-structure constraint); 48] binary (binary value); 49] binaryObject; 50] binding (binding); 51] bindingDesc (binding description); 52] birth (birth); 53] bloc (bloc); 54] body (text body); 55] broadcast (broadcast); 56] byline (byline); 57] c (character); 58] cRefPattern (canonical reference pattern); 59] caesura; 60] calendar (calendar); 61] calendarDesc (calendar description); 62] camera (camera); 63] caption (caption); 64] case (case); 65] castGroup (cast list grouping); 66] castItem (cast list item); 67] castList (cast list); 68] catDesc (category description); 69] catRef (category reference); 70] catchwords (catchwords); 71] category (category); 72] cb (column beginning); 73] cell (cell); 74] certainty; 75] change (change); 76] channel (primary channel); 77] char (character); 78] charDecl (character declarations); 79] charName (character name); 80] charProp (character property); 81] choice (choice); 82] cit (cited quotation); 83] citeData (citation data); 84] citeStructure (citation structure); 85] citedRange (cited range); 86] cl (clause); 87] classCode (classification code); 88] classDecl (classification declarations); 89] classRef; 90] classSpec (class specification); 91] classes (classes); 92] climate (climate); 93] closer (closer); 94] code; 95] collation (collation); 96] collection (collection); 97] colloc (collocate); 98] colophon (colophon); 99] cond (conditional feature-structure constraint); 100] condition (condition); 101] constitution (constitution); 102] constraint (constraint rules); 103] constraintSpec (constraint on schema); 104] content (content model); 105] conversion; 106] corr (correction); 107] correction (correction principles); 108] correspAction (correspondence action); 109] correspContext (correspondence context); 110] correspDesc (correspondence description); 111] country (country); 112] creation (creation); 113] custEvent (custodial event); 114] custodialHist (custodial history); 115] damage (damage); 116] damageSpan (damaged span of text); 117] dataFacet; 118] dataRef; 119] dataSpec (datatype specification); 120] datatype (datatype); 121] date (date); 122] dateline (dateline); 123] death (death); 124] decoDesc (decoration description); 125] decoNote (note on decoration); 126] def (definition); 127] default (default feature value); 128] defaultVal (default value); 129] del (deletion); 130] delSpan (deleted span of text); 131] depth (depth); 132] derivation (derivation); 133] desc (description); 134] dictScrap (dictionary scrap); 135] dim; 136] dimensions (dimensions); 137] distinct; 138] distributor (distributor); 139] district (district); 140] div (text division); 141] div1 (level-1 text division); 142] div2 (level-2 text division); 143] div3 (level-3 text division); 144] div4 (level-4 text division); 145] div5 (level-5 text division); 146] div6 (level-6 text division); 147] div7 (level-7 text division); 148] divGen (automatically generated text division); 149] docAuthor (document author); 150] docDate (document date); 151] docEdition (document edition); 152] docImprint (document imprint); 153] docTitle (document title); 154] domain (domain of use); 155] eLeaf (leaf or terminal node of an embedding tree); 156] eTree (embedding tree); 157] edition (edition); 158] editionStmt (edition statement); 159] editor; 160] editorialDecl (editorial practice declaration); 161] education (education); 162] eg (example); 163] egXML (example of XML); 164] elementRef; 165] elementSpec (element specification); 166] email (electronic mail address); 167] emph (emphasized); 168] empty; 169] encodingDesc (encoding description); 170] entry (entry); 171] entryFree (unstructured entry); 172] epigraph (epigraph); 173] epilogue (epilogue); 174] equipment (equipment); 175] equiv (equivalent); 176] etym (etymology); 177] event (event); 178] ex (editorial expansion); 179] exemplum (exemplum); 180] expan (expansion); 181] explicit (explicit); 182] extent (extent); 183] f (feature); 184] fDecl (feature declaration); 185] fDescr (feature description (in FSD)); 186] fLib (feature library); 187] facsimile; 188] factuality (factuality); 189] faith (faith); 190] figDesc (description of figure); 191] figure (figure); 192] fileDesc (file description); 193] filiation (filiation); 194] finalRubric (final rubric); 195] floatingText (floating text); 196] floruit (floruit); 197] foliation (foliation); 198] foreign (foreign); 199] forename (forename); 200] forest (forest); 201] form (form information group); 202] formula (formula); 203] front (front matter); 204] fs (feature structure); 205] fsConstraints (feature-structure constraints); 206] fsDecl (feature structure declaration); 207] fsDescr (feature system description (in FSD)); 208] fsdDecl (feature system declaration); 209] fsdLink (feature structure declaration link); 210] funder (funding body); 211] fvLib (feature-value library); 212] fw (forme work); 213] g (character or glyph); 214] gap (gap); 215] gb (gathering beginning); 216] gen (gender); 217] genName (generational name component); 218] geo (geographical coordinates); 219] geoDecl (geographic coordinates declaration); 220] geogFeat (geographical feature name); 221] geogName (geographical name); 222] gi (element name); 223] gloss (gloss); 224] glyph (character glyph); 225] glyphName (character glyph name); 226] gram (grammatical information); 227] gramGrp (grammatical information group); 228] graph (graph); 229] graphic (graphic); 230] group (group); 231] handDesc (description of hands); 232] handNote (note on hand); 233] handNotes; 234] handShift (handwriting shift); 235] head (heading); 236] headItem (heading for list items); 237] headLabel (heading for list labels); 238] height (height); 239] heraldry (heraldry); 240] hi (highlighted); 241] history (history); 242] hom (homograph); 243] hyph (hyphenation); 244] hyphenation (hyphenation); 245] iNode (intermediate (or internal) node); 246] iType (inflectional class); 247] ident (identifier); 248] idno (identifier); 249] if; 250] iff (if and only if); 251] imprimatur (imprimatur); 252] imprint; 253] incident (incident); 254] incipit; 255] index (index entry); 256] institution (institution); 257] interaction (interaction); 258] interp (interpretation); 259] interpGrp (interpretation group); 260] interpretation (interpretation); 261] item (item); 262] join (join); 263] joinGrp (join group); 264] keywords (keywords); 265] kinesic (kinesic); 266] l (verse line); 267] label (label); 268] lacunaEnd (lacuna end); 269] lacunaStart (lacuna start); 270] lang (language name); 271] langKnowledge (language knowledge); 272] langKnown (language known); 273] langUsage (language usage); 274] language (language); 275] layout (layout); 276] layoutDesc (layout description); 277] lb (line beginning); 278] lbl (label); 279] leaf (leaf); 280] lem (lemma); 281] lg (line group); 282] licence; 283] line; 284] link (link); 285] linkGrp (link group); 286] list (list); 287] listAnnotation; 288] listApp (list of apparatus entries); 289] listBibl (citation list); 290] listChange; 291] listEvent (list of events); 292] listForest; 293] listNym (list of canonical names); 294] listObject (list of objects); 295] listOrg (list of organizations); 296] listPerson (list of persons); 297] listPlace (list of places); 298] listPrefixDef (list of prefix definitions); 299] listRef (list of references); 300] listRelation; 301] listTranspose; 302] listWit (witness list); 303] localName (locally-defined property name); 304] localProp (locally defined property); 305] locale; 306] location (location); 307] locus (locus); 308] locusGrp (locus group); 309] m (morpheme); 310] macroRef; 311] macroSpec (macro specification); 312] mapping (character mapping); 313] material (material); 314] measure (measure); 315] measureGrp (measure group); 316] media; 317] meeting; 318] memberOf; 319] mentioned; 320] metDecl (metrical notation declaration); 321] metSym (metrical notation symbol); 322] metamark; 323] milestone (milestone); 324] mod; 325] model; 326] modelGrp; 327] modelSequence; 328] moduleRef (module reference); 329] moduleSpec (module specification); 330] monogr (monographic level); 331] mood (mood); 332] move (movement); 333] msContents (manuscript contents); 334] msDesc (manuscript description); 335] msFrag (manuscript fragment); 336] msIdentifier (manuscript identifier); 337] msItem (manuscript item); 338] msItemStruct (structured manuscript item); 339] msName (alternative name); 340] msPart (manuscript part); 341] musicNotation (music notation); 342] name (name, proper noun); 343] nameLink (name link); 344] namespace (namespace); 345] nationality (nationality); 346] node (node); 347] normalization (normalization); 348] notatedMusic; 349] note (note); 350] noteGrp; 351] notesStmt (notes statement); 352] num (number); 353] number (number); 354] numeric (numeric value); 355] nym (canonical name); 356] oRef (orthographic-form reference); 357] object; 358] objectDesc (object description); 359] objectIdentifier (object identifier); 360] objectName (name of an object); 361] objectType (object type); 362] occupation (occupation); 363] offset (offset); 364] opener (opener); 365] org (organization); 366] orgName (organization name); 367] orig (original form); 368] origDate (origin date); 369] origPlace (origin place); 370] origin (origin); 371] orth (orthographic form); 372] outputRendition; 373] p (paragraph); 374] pRef (pronunciation reference); 375] param; 376] paramList; 377] paramSpec; 378] particDesc (participation description); 379] path (path); 380] pause (pause); 381] pb (page beginning); 382] pc (punctuation character); 383] per (person); 384] performance (performance); 385] persName (personal name); 386] persPronouns (personal pronouns); 387] person (person); 388] personGrp (personal group); 389] persona; 390] phr (phrase); 391] physDesc (physical description); 392] place (place); 393] placeName (place name); 394] population (population); 395] pos (part of speech); 396] postBox (postal box or post office box); 397] postCode (postal code); 398] postscript; 399] precision; 400] prefixDef (prefix definition); 401] preparedness (preparedness); 402] principal (principal researcher); 403] profileDesc (text-profile description); 404] projectDesc (project description); 405] prologue (prologue); 406] pron (pronunciation); 407] provenance (provenance); 408] ptr (pointer); 409] pubPlace (publication place); 410] publicationStmt (publication statement); 411] publisher (publisher); 412] punctuation; 413] purpose; 414] q (quoted); 415] quotation (quotation); 416] quote (quotation); 417] rb (ruby base); 418] rdg (reading); 419] rdgGrp (reading group); 420] re (related entry); 421] recordHist (recorded history); 422] recording (recording event); 423] recordingStmt (recording statement); 424] redo; 425] ref (reference); 426] refState (reference state); 427] refsDecl (references declaration); 428] reg (regularization); 429] region (region); 430] relatedItem; 431] relation (relationship); 432] remarks (remarks); 433] rendition (rendition); 434] repository (repository); 435] residence (residence); 436] resp (responsibility); 437] respStmt (statement of responsibility); 438] respons (responsibility); 439] restore (restore); 440] retrace; 441] revisionDesc (revision description); 442] rhyme; 443] role (role); 444] roleDesc (role description); 445] roleName (role name); 446] root (root node); 447] row (row); 448] rs (referencing string); 449] rt (ruby text); 450] rubric (rubric); 451] ruby (ruby container); 452] s (s-unit); 453] said (speech or thought); 454] salute (salutation); 455] samplingDecl (sampling declaration); 456] schemaRef (schema reference); 457] schemaSpec (schema specification); 458] scriptDesc; 459] scriptNote; 460] scriptStmt (script statement); 461] seal (seal); 462] sealDesc (seal description); 463] secFol (second folio); 464] secl (secluded text); 465] seg (arbitrary segment); 466] segmentation (segmentation); 467] sense; 468] sequence; 469] series (series information); 470] seriesStmt (series statement); 471] set (setting); 472] setting; 473] settingDesc (setting description); 474] settlement (settlement); 475] sex (sex); 476] shift (shift); 477] sic (Latin for thus or so ); 478] signatures (signatures); 479] signed (signature); 480] soCalled (so called); 481] socecStatus (socio-economic status); 482] sound (sound); 483] source (source); 484] sourceDesc (source description); 485] sourceDoc; 486] sp (speech); 487] spGrp (speech group); 488] space (space); 489] span; 490] spanGrp (span group); 491] speaker; 492] specDesc (specification description); 493] specGrp (specification group); 494] specGrpRef (reference to a specification group); 495] specList (specification list); 496] sponsor (sponsor); 497] stage (stage direction); 498] stamp (stamp); 499] standOff; 500] state (state); 501] stdVals (standard values); 502] street; 503] stress (stress); 504] string (string value); 505] styleDefDecl (style definition language declaration); 506] subc (subcategorization); 507] subst (substitution); 508] substJoin (substitution join); 509] summary; 510] superEntry (super entry); 511] supplied (supplied); 512] support (support); 513] supportDesc (support description); 514] surface; 515] surfaceGrp; 516] surname (surname); 517] surplus (surplus); 518] surrogates (surrogates); 519] syll (syllabification); 520] symbol (symbolic value); 521] table (table); 522] tag (tag); 523] tagUsage (element usage); 524] tagsDecl (tagging declaration); 525] taxonomy (taxonomy); 526] tech (technical stage direction); 527] teiCorpus (TEI corpus); 528] teiHeader (TEI header); 529] term (term); 530] terrain (terrain); 531] text (text); 532] textClass (text classification); 533] textDesc (text description); 534] textLang (text language); 535] textNode; 536] then; 537] time (time); 538] timeline (timeline); 539] title (title); 540] titlePage (title page); 541] titlePart (title part); 542] titleStmt (title statement); 543] tns (tense); 544] trailer; 545] trait (trait); 546] transcriptionDesc; 547] transpose; 548] tree (tree); 549] triangle (underspecified embedding tree, so called because of its characteristic shape when drawn); 550] typeDesc (typeface description); 551] typeNote (typographic note); 552] u (utterance); 553] unclear (unclear); 554] undo; 555] unicodeName (Unicode property name); 556] unicodeProp (unicode property); 557] unihanProp (unihan property); 558] unit; 559] unitDecl (unit declarations); 560] unitDef (unit definition); 561] usg (usage); 562] vAlt (value alternation); 563] vColl (collection of values); 564] vDefault (value default); 565] vLabel (value label); 566] vMerge (merged collection of values); 567] vNot (value negation); 568] vRange (value range); 569] val (value); 570] valDesc (value description); 571] valItem; 572] valList (value list); 573] value (value); 574] variantEncoding (variant encoding); 575] view (view); 576] vocal (vocal); 577] w (word); 578] watermark (watermark); 579] when; 580] width (width); 581] wit (wit); 582] witDetail (witness detail); 583] witEnd (fragmented witness end); 584] witStart (fragmented witness start); 585] witness (witness); 586] writing (writing); 587] xenoData (non-TEI metadata); 588] xr (cross-reference phrase); 589] zone
    attribute ident {
      
      ## (TEI document) module: textstructure
      "TEI"
      | 
        ## (anonymous block) module: linking
        "ab"
      | 
        ## (abbreviation) module: core
        "abbr"
      | 
        ## module: header
        "abstract"
      | 
        ## (accompanying material) module: msdescription
        "accMat"
      | 
        ## (acquisition) module: msdescription
        "acquisition"
      | 
        ## (activity) module: corpus
        "activity"
      | 
        ## module: drama
        "actor"
      | 
        ## (addition) module: core
        "add"
      | 
        ## (additional name) module: namesdates
        "addName"
      | 
        ## (added span of text) module: transcr
        "addSpan"
      | 
        ## (additional) module: msdescription
        "additional"
      | 
        ## (additions) module: msdescription
        "additions"
      | 
        ## (address line) module: core
        "addrLine"
      | 
        ## (address) module: core
        "address"
      | 
        ## (administrative information) module: msdescription
        "adminInfo"
      | 
        ## (affiliation) module: namesdates
        "affiliation"
      | 
        ## (age) module: namesdates
        "age"
      | 
        ## (alternation) module: linking
        "alt"
      | 
        ## (alternation group) module: linking
        "altGrp"
      | 
        ## (alternate identifier) module: tagdocs
        "altIdent"
      | 
        ## (alternative identifier) module: msdescription
        "altIdentifier"
      | 
        ## module: tagdocs
        "alternate"
      | 
        ## (abbreviation marker) module: transcr
        "am"
      | 
        ## (analytic level) module: core
        "analytic"
      | 
        ## (anchor point) module: linking
        "anchor"
      | 
        ## module: linking
        "annotation"
      | 
        ## module: spoken
        "annotationBlock"
      | 
        ## module: tagdocs
        "anyElement"
      | 
        ## (apparatus entry) module: textcrit
        "app"
      | 
        ## (application information) module: header
        "appInfo"
      | 
        ## module: header
        "application"
      | 
        ## (arc) module: nets
        "arc"
      | 
        ## (argument) module: textstructure
        "argument"
      | 
        ## (attribute) module: tagdocs
        "att"
      | 
        ## (attribute definition) module: tagdocs
        "attDef"
      | 
        ## (attribute list) module: tagdocs
        "attList"
      | 
        ## (attribute pointer) module: tagdocs
        "attRef"
      | 
        ## (author) module: core
        "author"
      | 
        ## (release authority) module: header
        "authority"
      | 
        ## (availability) module: header
        "availability"
      | 
        ## (back matter) module: textstructure
        "back"
      | 
        ## (bibliographic citation) module: core
        "bibl"
      | 
        ## (fully-structured bibliographic citation) module: header
        "biblFull"
      | 
        ## (scope of bibliographic reference) module: core
        "biblScope"
      | 
        ## (structured bibliographic citation) module: core
        "biblStruct"
      | 
        ## (bi-conditional feature-structure constraint) module: iso-fs
        "bicond"
      | 
        ## (binary value) module: iso-fs
        "binary"
      | 
        ## module: core
        "binaryObject"
      | 
        ## (binding) module: msdescription
        "binding"
      | 
        ## (binding description) module: msdescription
        "bindingDesc"
      | 
        ## (birth) module: namesdates
        "birth"
      | 
        ## (bloc) module: namesdates
        "bloc"
      | 
        ## (text body) module: textstructure
        "body"
      | 
        ## (broadcast) module: spoken
        "broadcast"
      | 
        ## (byline) module: textstructure
        "byline"
      | 
        ## (character) module: analysis
        "c"
      | 
        ## (canonical reference pattern) module: header
        "cRefPattern"
      | 
        ## module: verse
        "caesura"
      | 
        ## (calendar) module: header
        "calendar"
      | 
        ## (calendar description) module: header
        "calendarDesc"
      | 
        ## (camera) module: drama
        "camera"
      | 
        ## (caption) module: drama
        "caption"
      | 
        ## (case) module: dictionaries
        "case"
      | 
        ## (cast list grouping) module: drama
        "castGroup"
      | 
        ## (cast list item) module: drama
        "castItem"
      | 
        ## (cast list) module: drama
        "castList"
      | 
        ## (category description) module: header
        "catDesc"
      | 
        ## (category reference) module: header
        "catRef"
      | 
        ## (catchwords) module: msdescription
        "catchwords"
      | 
        ## (category) module: header
        "category"
      | 
        ## (column beginning) module: core
        "cb"
      | 
        ## (cell) module: figures
        "cell"
      | 
        ## module: certainty
        "certainty"
      | 
        ## (change) module: header
        "change"
      | 
        ## (primary channel) module: corpus
        "channel"
      | 
        ## (character) module: gaiji
        "char"
      | 
        ## (character declarations) module: gaiji
        "charDecl"
      | 
        ## (character name) module: gaiji
        "charName"
      | 
        ## (character property) module: gaiji
        "charProp"
      | 
        ## (choice) module: core
        "choice"
      | 
        ## (cited quotation) module: core
        "cit"
      | 
        ## (citation data) module: header
        "citeData"
      | 
        ## (citation structure) module: header
        "citeStructure"
      | 
        ## (cited range) module: core
        "citedRange"
      | 
        ## (clause) module: analysis
        "cl"
      | 
        ## (classification code) module: header
        "classCode"
      | 
        ## (classification declarations) module: header
        "classDecl"
      | 
        ## module: tagdocs
        "classRef"
      | 
        ## (class specification) module: tagdocs
        "classSpec"
      | 
        ## (classes) module: tagdocs
        "classes"
      | 
        ## (climate) module: namesdates
        "climate"
      | 
        ## (closer) module: textstructure
        "closer"
      | 
        ## module: tagdocs
        "code"
      | 
        ## (collation) module: msdescription
        "collation"
      | 
        ## (collection) module: msdescription
        "collection"
      | 
        ## (collocate) module: dictionaries
        "colloc"
      | 
        ## (colophon) module: msdescription
        "colophon"
      | 
        ## (conditional feature-structure constraint) module: iso-fs
        "cond"
      | 
        ## (condition) module: msdescription
        "condition"
      | 
        ## (constitution) module: corpus
        "constitution"
      | 
        ## (constraint rules) module: tagdocs
        "constraint"
      | 
        ## (constraint on schema) module: tagdocs
        "constraintSpec"
      | 
        ## (content model) module: tagdocs
        "content"
      | 
        ## module: header
        "conversion"
      | 
        ## (correction) module: core
        "corr"
      | 
        ## (correction principles) module: header
        "correction"
      | 
        ## (correspondence action) module: header
        "correspAction"
      | 
        ## (correspondence context) module: header
        "correspContext"
      | 
        ## (correspondence
        ##     description) module: header
        "correspDesc"
      | 
        ## (country) module: namesdates
        "country"
      | 
        ## (creation) module: header
        "creation"
      | 
        ## (custodial event) module: msdescription
        "custEvent"
      | 
        ## (custodial history) module: msdescription
        "custodialHist"
      | 
        ## (damage) module: transcr
        "damage"
      | 
        ## (damaged span of text) module: transcr
        "damageSpan"
      | 
        ## module: tagdocs
        "dataFacet"
      | 
        ## module: tagdocs
        "dataRef"
      | 
        ## (datatype specification) module: tagdocs
        "dataSpec"
      | 
        ## (datatype) module: tagdocs
        "datatype"
      | 
        ## (date) module: core
        "date"
      | 
        ## (dateline) module: textstructure
        "dateline"
      | 
        ## (death) module: namesdates
        "death"
      | 
        ## (decoration description) module: msdescription
        "decoDesc"
      | 
        ## (note on decoration) module: msdescription
        "decoNote"
      | 
        ## (definition) module: dictionaries
        "def"
      | 
        ## (default feature value) module: iso-fs
        "default"
      | 
        ## (default value) module: tagdocs
        "defaultVal"
      | 
        ## (deletion) module: core
        "del"
      | 
        ## (deleted span of text) module: transcr
        "delSpan"
      | 
        ## (depth) module: msdescription
        "depth"
      | 
        ## (derivation) module: corpus
        "derivation"
      | 
        ## (description) module: core
        "desc"
      | 
        ## (dictionary scrap) module: dictionaries
        "dictScrap"
      | 
        ## module: msdescription
        "dim"
      | 
        ## (dimensions) module: msdescription
        "dimensions"
      | 
        ## module: core
        "distinct"
      | 
        ## (distributor) module: header
        "distributor"
      | 
        ## (district) module: namesdates
        "district"
      | 
        ## (text division) module: textstructure
        "div"
      | 
        ## (level-1 text division) module: textstructure
        "div1"
      | 
        ## (level-2 text division) module: textstructure
        "div2"
      | 
        ## (level-3 text division) module: textstructure
        "div3"
      | 
        ## (level-4 text division) module: textstructure
        "div4"
      | 
        ## (level-5 text division) module: textstructure
        "div5"
      | 
        ## (level-6 text division) module: textstructure
        "div6"
      | 
        ## (level-7 text division) module: textstructure
        "div7"
      | 
        ## (automatically generated text division) module: core
        "divGen"
      | 
        ## (document author) module: textstructure
        "docAuthor"
      | 
        ## (document date) module: textstructure
        "docDate"
      | 
        ## (document edition) module: textstructure
        "docEdition"
      | 
        ## (document imprint) module: textstructure
        "docImprint"
      | 
        ## (document title) module: textstructure
        "docTitle"
      | 
        ## (domain of use) module: corpus
        "domain"
      | 
        ## (leaf or terminal node of an embedding tree) module: nets
        "eLeaf"
      | 
        ## (embedding tree) module: nets
        "eTree"
      | 
        ## (edition) module: header
        "edition"
      | 
        ## (edition statement) module: header
        "editionStmt"
      | 
        ## module: core
        "editor"
      | 
        ## (editorial practice declaration) module: header
        "editorialDecl"
      | 
        ## (education) module: namesdates
        "education"
      | 
        ## (example) module: tagdocs
        "eg"
      | 
        ## (example of XML) module: tagdocs
        "egXML"
      | 
        ## module: tagdocs
        "elementRef"
      | 
        ## (element specification) module: tagdocs
        "elementSpec"
      | 
        ## (electronic mail address) module: core
        "email"
      | 
        ## (emphasized) module: core
        "emph"
      | 
        ## module: tagdocs
        "empty"
      | 
        ## (encoding description) module: header
        "encodingDesc"
      | 
        ## (entry) module: dictionaries
        "entry"
      | 
        ## (unstructured entry) module: dictionaries
        "entryFree"
      | 
        ## (epigraph) module: textstructure
        "epigraph"
      | 
        ## (epilogue) module: drama
        "epilogue"
      | 
        ## (equipment) module: spoken
        "equipment"
      | 
        ## (equivalent) module: tagdocs
        "equiv"
      | 
        ## (etymology) module: dictionaries
        "etym"
      | 
        ## (event) module: namesdates
        "event"
      | 
        ## (editorial expansion) module: transcr
        "ex"
      | 
        ## (exemplum) module: tagdocs
        "exemplum"
      | 
        ## (expansion) module: core
        "expan"
      | 
        ## (explicit) module: msdescription
        "explicit"
      | 
        ## (extent) module: header
        "extent"
      | 
        ## (feature) module: iso-fs
        "f"
      | 
        ## (feature declaration) module: iso-fs
        "fDecl"
      | 
        ## (feature description (in FSD)) module: iso-fs
        "fDescr"
      | 
        ## (feature library) module: iso-fs
        "fLib"
      | 
        ## module: transcr
        "facsimile"
      | 
        ## (factuality) module: corpus
        "factuality"
      | 
        ## (faith) module: namesdates
        "faith"
      | 
        ## (description of figure) module: figures
        "figDesc"
      | 
        ## (figure) module: figures
        "figure"
      | 
        ## (file description) module: header
        "fileDesc"
      | 
        ## (filiation) module: msdescription
        "filiation"
      | 
        ## (final rubric) module: msdescription
        "finalRubric"
      | 
        ## (floating text) module: textstructure
        "floatingText"
      | 
        ## (floruit) module: namesdates
        "floruit"
      | 
        ## (foliation) module: msdescription
        "foliation"
      | 
        ## (foreign) module: core
        "foreign"
      | 
        ## (forename) module: namesdates
        "forename"
      | 
        ## (forest) module: nets
        "forest"
      | 
        ## (form information group) module: dictionaries
        "form"
      | 
        ## (formula) module: figures
        "formula"
      | 
        ## (front matter) module: textstructure
        "front"
      | 
        ## (feature structure) module: iso-fs
        "fs"
      | 
        ## (feature-structure constraints) module: iso-fs
        "fsConstraints"
      | 
        ## (feature structure declaration) module: iso-fs
        "fsDecl"
      | 
        ## (feature system description (in FSD)) module: iso-fs
        "fsDescr"
      | 
        ## (feature system declaration) module: iso-fs
        "fsdDecl"
      | 
        ## (feature structure declaration link) module: iso-fs
        "fsdLink"
      | 
        ## (funding body) module: header
        "funder"
      | 
        ## (feature-value library) module: iso-fs
        "fvLib"
      | 
        ## (forme work) module: transcr
        "fw"
      | 
        ## (character or glyph) module: gaiji
        "g"
      | 
        ## (gap) module: core
        "gap"
      | 
        ## (gathering beginning) module: core
        "gb"
      | 
        ## (gender) module: dictionaries
        "gen"
      | 
        ## (generational name component) module: namesdates
        "genName"
      | 
        ## (geographical coordinates) module: namesdates
        "geo"
      | 
        ## (geographic coordinates declaration) module: header
        "geoDecl"
      | 
        ## (geographical feature name) module: namesdates
        "geogFeat"
      | 
        ## (geographical name) module: namesdates
        "geogName"
      | 
        ## (element name) module: tagdocs
        "gi"
      | 
        ## (gloss) module: core
        "gloss"
      | 
        ## (character glyph) module: gaiji
        "glyph"
      | 
        ## (character glyph name) module: gaiji
        "glyphName"
      | 
        ## (grammatical information) module: dictionaries
        "gram"
      | 
        ## (grammatical information group) module: dictionaries
        "gramGrp"
      | 
        ## (graph) module: nets
        "graph"
      | 
        ## (graphic) module: core
        "graphic"
      | 
        ## (group) module: textstructure
        "group"
      | 
        ## (description of hands) module: msdescription
        "handDesc"
      | 
        ## (note on hand) module: header
        "handNote"
      | 
        ## module: transcr
        "handNotes"
      | 
        ## (handwriting shift) module: transcr
        "handShift"
      | 
        ## (heading) module: core
        "head"
      | 
        ## (heading for list items) module: core
        "headItem"
      | 
        ## (heading for list labels) module: core
        "headLabel"
      | 
        ## (height) module: msdescription
        "height"
      | 
        ## (heraldry) module: msdescription
        "heraldry"
      | 
        ## (highlighted) module: core
        "hi"
      | 
        ## (history) module: msdescription
        "history"
      | 
        ## (homograph) module: dictionaries
        "hom"
      | 
        ## (hyphenation) module: dictionaries
        "hyph"
      | 
        ## (hyphenation) module: header
        "hyphenation"
      | 
        ## (intermediate (or internal) node) module: nets
        "iNode"
      | 
        ## (inflectional class) module: dictionaries
        "iType"
      | 
        ## (identifier) module: tagdocs
        "ident"
      | 
        ## (identifier) module: header
        "idno"
      | 
        ## module: iso-fs
        "if"
      | 
        ## (if and only if) module: iso-fs
        "iff"
      | 
        ## (imprimatur) module: textstructure
        "imprimatur"
      | 
        ## module: core
        "imprint"
      | 
        ## (incident) module: spoken
        "incident"
      | 
        ## module: msdescription
        "incipit"
      | 
        ## (index entry) module: core
        "index"
      | 
        ## (institution) module: msdescription
        "institution"
      | 
        ## (interaction) module: corpus
        "interaction"
      | 
        ## (interpretation) module: analysis
        "interp"
      | 
        ## (interpretation group) module: analysis
        "interpGrp"
      | 
        ## (interpretation) module: header
        "interpretation"
      | 
        ## (item) module: core
        "item"
      | 
        ## (join) module: linking
        "join"
      | 
        ## (join group) module: linking
        "joinGrp"
      | 
        ## (keywords) module: header
        "keywords"
      | 
        ## (kinesic) module: spoken
        "kinesic"
      | 
        ## (verse line) module: core
        "l"
      | 
        ## (label) module: core
        "label"
      | 
        ## (lacuna end) module: textcrit
        "lacunaEnd"
      | 
        ## (lacuna start) module: textcrit
        "lacunaStart"
      | 
        ## (language name) module: dictionaries
        "lang"
      | 
        ## (language knowledge) module: namesdates
        "langKnowledge"
      | 
        ## (language known) module: namesdates
        "langKnown"
      | 
        ## (language usage) module: header
        "langUsage"
      | 
        ## (language) module: header
        "language"
      | 
        ## (layout) module: msdescription
        "layout"
      | 
        ## (layout description) module: msdescription
        "layoutDesc"
      | 
        ## (line beginning) module: core
        "lb"
      | 
        ## (label) module: dictionaries
        "lbl"
      | 
        ## (leaf) module: nets
        "leaf"
      | 
        ## (lemma) module: textcrit
        "lem"
      | 
        ## (line group) module: core
        "lg"
      | 
        ## module: header
        "licence"
      | 
        ## module: transcr
        "line"
      | 
        ## (link) module: linking
        "link"
      | 
        ## (link group) module: linking
        "linkGrp"
      | 
        ## (list) module: core
        "list"
      | 
        ## module: linking
        "listAnnotation"
      | 
        ## (list of apparatus entries) module: textcrit
        "listApp"
      | 
        ## (citation list) module: core
        "listBibl"
      | 
        ## module: header
        "listChange"
      | 
        ## (list of events) module: namesdates
        "listEvent"
      | 
        ## module: nets
        "listForest"
      | 
        ## (list of canonical names) module: namesdates
        "listNym"
      | 
        ## (list of objects) module: namesdates
        "listObject"
      | 
        ## (list of organizations) module: namesdates
        "listOrg"
      | 
        ## (list of persons) module: namesdates
        "listPerson"
      | 
        ## (list of places) module: namesdates
        "listPlace"
      | 
        ## (list of prefix definitions) module: header
        "listPrefixDef"
      | 
        ## (list of references) module: tagdocs
        "listRef"
      | 
        ## module: namesdates
        "listRelation"
      | 
        ## module: transcr
        "listTranspose"
      | 
        ## (witness list) module: textcrit
        "listWit"
      | 
        ## (locally-defined property name) module: gaiji
        "localName"
      | 
        ## (locally defined property) module: gaiji
        "localProp"
      | 
        ## module: corpus
        "locale"
      | 
        ## (location) module: namesdates
        "location"
      | 
        ## (locus) module: msdescription
        "locus"
      | 
        ## (locus group) module: msdescription
        "locusGrp"
      | 
        ## (morpheme) module: analysis
        "m"
      | 
        ## module: tagdocs
        "macroRef"
      | 
        ## (macro specification) module: tagdocs
        "macroSpec"
      | 
        ## (character mapping) module: gaiji
        "mapping"
      | 
        ## (material) module: msdescription
        "material"
      | 
        ## (measure) module: core
        "measure"
      | 
        ## (measure group) module: core
        "measureGrp"
      | 
        ## module: core
        "media"
      | 
        ## module: core
        "meeting"
      | 
        ## module: tagdocs
        "memberOf"
      | 
        ## module: core
        "mentioned"
      | 
        ## (metrical notation declaration) module: verse
        "metDecl"
      | 
        ## (metrical notation symbol) module: verse
        "metSym"
      | 
        ## module: transcr
        "metamark"
      | 
        ## (milestone) module: core
        "milestone"
      | 
        ## module: transcr
        "mod"
      | 
        ## module: tagdocs
        "model"
      | 
        ## module: tagdocs
        "modelGrp"
      | 
        ## module: tagdocs
        "modelSequence"
      | 
        ## (module reference) module: tagdocs
        "moduleRef"
      | 
        ## (module specification) module: tagdocs
        "moduleSpec"
      | 
        ## (monographic level) module: core
        "monogr"
      | 
        ## (mood) module: dictionaries
        "mood"
      | 
        ## (movement) module: drama
        "move"
      | 
        ## (manuscript contents) module: msdescription
        "msContents"
      | 
        ## (manuscript description) module: msdescription
        "msDesc"
      | 
        ## (manuscript fragment) module: msdescription
        "msFrag"
      | 
        ## (manuscript identifier) module: msdescription
        "msIdentifier"
      | 
        ## (manuscript item) module: msdescription
        "msItem"
      | 
        ## (structured manuscript item) module: msdescription
        "msItemStruct"
      | 
        ## (alternative name) module: msdescription
        "msName"
      | 
        ## (manuscript part) module: msdescription
        "msPart"
      | 
        ## (music notation) module: msdescription
        "musicNotation"
      | 
        ## (name, proper noun) module: core
        "name"
      | 
        ## (name link) module: namesdates
        "nameLink"
      | 
        ## (namespace) module: header
        "namespace"
      | 
        ## (nationality) module: namesdates
        "nationality"
      | 
        ## (node) module: nets
        "node"
      | 
        ## (normalization) module: header
        "normalization"
      | 
        ## module: figures
        "notatedMusic"
      | 
        ## (note) module: core
        "note"
      | 
        ## module: core
        "noteGrp"
      | 
        ## (notes statement) module: header
        "notesStmt"
      | 
        ## (number) module: core
        "num"
      | 
        ## (number) module: dictionaries
        "number"
      | 
        ## (numeric value) module: iso-fs
        "numeric"
      | 
        ## (canonical name) module: namesdates
        "nym"
      | 
        ## (orthographic-form reference) module: dictionaries
        "oRef"
      | 
        ## module: namesdates
        "object"
      | 
        ## (object description) module: msdescription
        "objectDesc"
      | 
        ## (object identifier) module: namesdates
        "objectIdentifier"
      | 
        ## (name of an object) module: namesdates
        "objectName"
      | 
        ## (object type) module: msdescription
        "objectType"
      | 
        ## (occupation) module: namesdates
        "occupation"
      | 
        ## (offset) module: namesdates
        "offset"
      | 
        ## (opener) module: textstructure
        "opener"
      | 
        ## (organization) module: namesdates
        "org"
      | 
        ## (organization name) module: namesdates
        "orgName"
      | 
        ## (original form) module: core
        "orig"
      | 
        ## (origin date) module: msdescription
        "origDate"
      | 
        ## (origin place) module: msdescription
        "origPlace"
      | 
        ## (origin) module: msdescription
        "origin"
      | 
        ## (orthographic form) module: dictionaries
        "orth"
      | 
        ## module: tagdocs
        "outputRendition"
      | 
        ## (paragraph) module: core
        "p"
      | 
        ## (pronunciation reference) module: dictionaries
        "pRef"
      | 
        ## module: tagdocs
        "param"
      | 
        ## module: tagdocs
        "paramList"
      | 
        ## module: tagdocs
        "paramSpec"
      | 
        ## (participation description) module: corpus
        "particDesc"
      | 
        ## (path) module: transcr
        "path"
      | 
        ## (pause) module: spoken
        "pause"
      | 
        ## (page beginning) module: core
        "pb"
      | 
        ## (punctuation character) module: analysis
        "pc"
      | 
        ## (person) module: dictionaries
        "per"
      | 
        ## (performance) module: drama
        "performance"
      | 
        ## (personal name) module: namesdates
        "persName"
      | 
        ## (personal pronouns) module: namesdates
        "persPronouns"
      | 
        ## (person) module: namesdates
        "person"
      | 
        ## (personal group) module: namesdates
        "personGrp"
      | 
        ## module: namesdates
        "persona"
      | 
        ## (phrase) module: analysis
        "phr"
      | 
        ## (physical description) module: msdescription
        "physDesc"
      | 
        ## (place) module: namesdates
        "place"
      | 
        ## (place name) module: namesdates
        "placeName"
      | 
        ## (population) module: namesdates
        "population"
      | 
        ## (part of speech) module: dictionaries
        "pos"
      | 
        ## (postal box or post office box) module: core
        "postBox"
      | 
        ## (postal code) module: core
        "postCode"
      | 
        ## module: textstructure
        "postscript"
      | 
        ## module: certainty
        "precision"
      | 
        ## (prefix definition) module: header
        "prefixDef"
      | 
        ## (preparedness) module: corpus
        "preparedness"
      | 
        ## (principal researcher) module: header
        "principal"
      | 
        ## (text-profile description) module: header
        "profileDesc"
      | 
        ## (project description) module: header
        "projectDesc"
      | 
        ## (prologue) module: drama
        "prologue"
      | 
        ## (pronunciation) module: dictionaries
        "pron"
      | 
        ## (provenance) module: msdescription
        "provenance"
      | 
        ## (pointer) module: core
        "ptr"
      | 
        ## (publication place) module: core
        "pubPlace"
      | 
        ## (publication statement) module: header
        "publicationStmt"
      | 
        ## (publisher) module: core
        "publisher"
      | 
        ## module: header
        "punctuation"
      | 
        ## module: corpus
        "purpose"
      | 
        ## (quoted) module: core
        "q"
      | 
        ## (quotation) module: header
        "quotation"
      | 
        ## (quotation) module: core
        "quote"
      | 
        ## (ruby base) module: core
        "rb"
      | 
        ## (reading) module: textcrit
        "rdg"
      | 
        ## (reading group) module: textcrit
        "rdgGrp"
      | 
        ## (related entry) module: dictionaries
        "re"
      | 
        ## (recorded history) module: msdescription
        "recordHist"
      | 
        ## (recording event) module: spoken
        "recording"
      | 
        ## (recording statement) module: spoken
        "recordingStmt"
      | 
        ## module: transcr
        "redo"
      | 
        ## (reference) module: core
        "ref"
      | 
        ## (reference state) module: header
        "refState"
      | 
        ## (references declaration) module: header
        "refsDecl"
      | 
        ## (regularization) module: core
        "reg"
      | 
        ## (region) module: namesdates
        "region"
      | 
        ## module: core
        "relatedItem"
      | 
        ## (relationship) module: namesdates
        "relation"
      | 
        ## (remarks) module: tagdocs
        "remarks"
      | 
        ## (rendition) module: header
        "rendition"
      | 
        ## (repository) module: msdescription
        "repository"
      | 
        ## (residence) module: namesdates
        "residence"
      | 
        ## (responsibility) module: core
        "resp"
      | 
        ## (statement of responsibility) module: core
        "respStmt"
      | 
        ## (responsibility) module: certainty
        "respons"
      | 
        ## (restore) module: transcr
        "restore"
      | 
        ## module: transcr
        "retrace"
      | 
        ## (revision description) module: header
        "revisionDesc"
      | 
        ## module: verse
        "rhyme"
      | 
        ## (role) module: drama
        "role"
      | 
        ## (role description) module: drama
        "roleDesc"
      | 
        ## (role name) module: namesdates
        "roleName"
      | 
        ## (root node) module: nets
        "root"
      | 
        ## (row) module: figures
        "row"
      | 
        ## (referencing string) module: core
        "rs"
      | 
        ## (ruby text) module: core
        "rt"
      | 
        ## (rubric) module: msdescription
        "rubric"
      | 
        ## (ruby container) module: core
        "ruby"
      | 
        ## (s-unit) module: analysis
        "s"
      | 
        ## (speech or thought) module: core
        "said"
      | 
        ## (salutation) module: textstructure
        "salute"
      | 
        ## (sampling declaration) module: header
        "samplingDecl"
      | 
        ## (schema reference) module: header
        "schemaRef"
      | 
        ## (schema specification) module: tagdocs
        "schemaSpec"
      | 
        ## module: msdescription
        "scriptDesc"
      | 
        ## module: header
        "scriptNote"
      | 
        ## (script statement) module: spoken
        "scriptStmt"
      | 
        ## (seal) module: msdescription
        "seal"
      | 
        ## (seal description) module: msdescription
        "sealDesc"
      | 
        ## (second folio) module: msdescription
        "secFol"
      | 
        ## (secluded text) module: transcr
        "secl"
      | 
        ## (arbitrary segment) module: linking
        "seg"
      | 
        ## (segmentation) module: header
        "segmentation"
      | 
        ## module: dictionaries
        "sense"
      | 
        ## module: tagdocs
        "sequence"
      | 
        ## (series information) module: core
        "series"
      | 
        ## (series statement) module: header
        "seriesStmt"
      | 
        ## (setting) module: drama
        "set"
      | 
        ## module: corpus
        "setting"
      | 
        ## (setting description) module: corpus
        "settingDesc"
      | 
        ## (settlement) module: namesdates
        "settlement"
      | 
        ## (sex) module: namesdates
        "sex"
      | 
        ## (shift) module: spoken
        "shift"
      | 
        ## (Latin for thus or so
        ##                               ) module: core
        "sic"
      | 
        ## (signatures) module: msdescription
        "signatures"
      | 
        ## (signature) module: textstructure
        "signed"
      | 
        ## (so called) module: core
        "soCalled"
      | 
        ## (socio-economic status) module: namesdates
        "socecStatus"
      | 
        ## (sound) module: drama
        "sound"
      | 
        ## (source) module: msdescription
        "source"
      | 
        ## (source description) module: header
        "sourceDesc"
      | 
        ## module: transcr
        "sourceDoc"
      | 
        ## (speech) module: core
        "sp"
      | 
        ## (speech group) module: drama
        "spGrp"
      | 
        ## (space) module: transcr
        "space"
      | 
        ## module: analysis
        "span"
      | 
        ## (span group) module: analysis
        "spanGrp"
      | 
        ## module: core
        "speaker"
      | 
        ## (specification description) module: tagdocs
        "specDesc"
      | 
        ## (specification group) module: tagdocs
        "specGrp"
      | 
        ## (reference to a specification group) module: tagdocs
        "specGrpRef"
      | 
        ## (specification list) module: tagdocs
        "specList"
      | 
        ## (sponsor) module: header
        "sponsor"
      | 
        ## (stage direction) module: core
        "stage"
      | 
        ## (stamp) module: msdescription
        "stamp"
      | 
        ## module: linking
        "standOff"
      | 
        ## (state) module: namesdates
        "state"
      | 
        ## (standard values) module: header
        "stdVals"
      | 
        ## module: core
        "street"
      | 
        ## (stress) module: dictionaries
        "stress"
      | 
        ## (string value) module: iso-fs
        "string"
      | 
        ## (style definition language declaration) module: header
        "styleDefDecl"
      | 
        ## (subcategorization) module: dictionaries
        "subc"
      | 
        ## (substitution) module: transcr
        "subst"
      | 
        ## (substitution join) module: transcr
        "substJoin"
      | 
        ## module: msdescription
        "summary"
      | 
        ## (super entry) module: dictionaries
        "superEntry"
      | 
        ## (supplied) module: transcr
        "supplied"
      | 
        ## (support) module: msdescription
        "support"
      | 
        ## (support description) module: msdescription
        "supportDesc"
      | 
        ## module: transcr
        "surface"
      | 
        ## module: transcr
        "surfaceGrp"
      | 
        ## (surname) module: namesdates
        "surname"
      | 
        ## (surplus) module: transcr
        "surplus"
      | 
        ## (surrogates) module: msdescription
        "surrogates"
      | 
        ## (syllabification) module: dictionaries
        "syll"
      | 
        ## (symbolic value) module: iso-fs
        "symbol"
      | 
        ## (table) module: figures
        "table"
      | 
        ## (tag) module: tagdocs
        "tag"
      | 
        ## (element usage) module: header
        "tagUsage"
      | 
        ## (tagging declaration) module: header
        "tagsDecl"
      | 
        ## (taxonomy) module: header
        "taxonomy"
      | 
        ## (technical stage direction) module: drama
        "tech"
      | 
        ## (TEI corpus) module: core
        "teiCorpus"
      | 
        ## (TEI header) module: header
        "teiHeader"
      | 
        ## (term) module: core
        "term"
      | 
        ## (terrain) module: namesdates
        "terrain"
      | 
        ## (text) module: textstructure
        "text"
      | 
        ## (text classification) module: header
        "textClass"
      | 
        ## (text description) module: corpus
        "textDesc"
      | 
        ## (text language) module: core
        "textLang"
      | 
        ## module: tagdocs
        "textNode"
      | 
        ## module: iso-fs
        "then"
      | 
        ## (time) module: core
        "time"
      | 
        ## (timeline) module: linking
        "timeline"
      | 
        ## (title) module: core
        "title"
      | 
        ## (title page) module: textstructure
        "titlePage"
      | 
        ## (title part) module: textstructure
        "titlePart"
      | 
        ## (title statement) module: header
        "titleStmt"
      | 
        ## (tense) module: dictionaries
        "tns"
      | 
        ## module: textstructure
        "trailer"
      | 
        ## (trait) module: namesdates
        "trait"
      | 
        ## module: spoken
        "transcriptionDesc"
      | 
        ## module: transcr
        "transpose"
      | 
        ## (tree) module: nets
        "tree"
      | 
        ## (underspecified embedding tree, so called because of its
        ##   characteristic shape when drawn) module: nets
        "triangle"
      | 
        ## (typeface description) module: msdescription
        "typeDesc"
      | 
        ## (typographic note) module: msdescription
        "typeNote"
      | 
        ## (utterance) module: spoken
        "u"
      | 
        ## (unclear) module: core
        "unclear"
      | 
        ## module: transcr
        "undo"
      | 
        ## (Unicode property name) module: gaiji
        "unicodeName"
      | 
        ## (unicode property) module: gaiji
        "unicodeProp"
      | 
        ## (unihan property) module: gaiji
        "unihanProp"
      | 
        ## module: core
        "unit"
      | 
        ## (unit declarations) module: header
        "unitDecl"
      | 
        ## (unit definition) module: header
        "unitDef"
      | 
        ## (usage) module: dictionaries
        "usg"
      | 
        ## (value alternation) module: iso-fs
        "vAlt"
      | 
        ## (collection of values) module: iso-fs
        "vColl"
      | 
        ## (value default) module: iso-fs
        "vDefault"
      | 
        ## (value label) module: iso-fs
        "vLabel"
      | 
        ## (merged collection of values) module: iso-fs
        "vMerge"
      | 
        ## (value negation) module: iso-fs
        "vNot"
      | 
        ## (value range) module: iso-fs
        "vRange"
      | 
        ## (value) module: tagdocs
        "val"
      | 
        ## (value description) module: tagdocs
        "valDesc"
      | 
        ## module: tagdocs
        "valItem"
      | 
        ## (value list) module: tagdocs
        "valList"
      | 
        ## (value) module: gaiji
        "value"
      | 
        ## (variant encoding) module: textcrit
        "variantEncoding"
      | 
        ## (view) module: drama
        "view"
      | 
        ## (vocal) module: spoken
        "vocal"
      | 
        ## (word) module: analysis
        "w"
      | 
        ## (watermark) module: msdescription
        "watermark"
      | 
        ## module: linking
        "when"
      | 
        ## (width) module: msdescription
        "width"
      | 
        ## (wit) module: textcrit
        "wit"
      | 
        ## (witness detail) module: textcrit
        "witDetail"
      | 
        ## (fragmented witness end) module: textcrit
        "witEnd"
      | 
        ## (fragmented witness start) module: textcrit
        "witStart"
      | 
        ## (witness) module: textcrit
        "witness"
      | 
        ## (writing) module: spoken
        "writing"
      | 
        ## (non-TEI metadata) module: header
        "xenoData"
      | 
        ## (cross-reference phrase) module: dictionaries
        "xr"
      | 
        ## module: transcr
        "zone"
      | xsd:token { pattern = "[^\p{C}\p{Z}]+" }
    },
    
    ## specifies a default prefix which will be prepended to all patterns relating to the element, unless otherwise stated.
    attribute prefix { xsd:NCName }?,
    empty
  }
cust_classSpec =
  
  ## (class specification) contains reference information for a TEI element class; that is a group of elements which appear together in content models, or which share some common attribute, or both. [22.3. Specification Elements 22.6. Class Specifications]
  element tei:classSpec {
    (cust_gloss?,
     cust_model.descLike?,
     cust_classes?,
     cust_constraintSpec*,
     cust_attList?,
     cust_exemplum*,
     cust_remarks*,
     cust_listRef*),
    cust_att.global.attributes,
    cust_att.identified.attribute.module,
    cust_att.identified.attribute.predeclare,
    cust_att.combinable.attribute.mode,
    cust_att.deprecated.attribute.validUntil,
    cust_att.typed.attribute.subtype,
    
    ## 
    ## Suggested values include: 1] att.anchoring (anchoring); 2] att.ascribed; 3] att.ascribed.directed; 4] att.breaking; 5] att.cReferencing; 6] att.canonical; 7] att.citeStructurePart; 8] att.citing; 9] att.combinable; 10] att.coordinated; 11] att.damaged; 12] att.datable; 13] att.datable.custom; 14] att.datable.iso; 15] att.datable.w3c; 16] att.datcat; 17] att.declarable; 18] att.declaring; 19] att.deprecated; 20] att.dimensions; 21] att.divLike; 22] att.docStatus; 23] att.duration; 24] att.duration.iso; 25] att.duration.w3c; 26] att.editLike; 27] att.edition; 28] att.enjamb (enjambement); 29] att.entryLike; 30] att.formula; 31] att.fragmentable; 32] att.gaijiProp; 33] att.global; 34] att.global.analytic; 35] att.global.change; 36] att.global.facs; 37] att.global.linking; 38] att.global.rendition; 39] att.global.responsibility; 40] att.global.source; 41] att.handFeatures; 42] att.identified; 43] att.internetMedia; 44] att.interpLike; 45] att.lexicographic; 46] att.lexicographic.normalized; 47] att.linguistic; 48] att.measurement; 49] att.media; 50] att.metrical; 51] att.milestoneUnit; 52] att.msClass; 53] att.msExcerpt (manuscript excerpt); 54] att.namespaceable; 55] att.naming; 56] att.notated; 57] att.partials; 58] att.patternReplacement; 59] att.personal (attributes for components of names usually, but not necessarily, personal names); 60] att.placement; 61] att.pointing; 62] att.pointing.group; 63] att.predicate; 64] att.ranging; 65] att.rdgPart; 66] att.repeatable; 67] att.resourced; 68] att.scoping; 69] att.segLike; 70] att.sortable; 71] att.spanning; 72] att.styleDef; 73] att.tableDecoration; 74] att.textCritical; 75] att.timed; 76] att.transcriptional; 77] att.translatable; 78] att.typed; 79] att.witnessed; 80] att.written; 81] model.addrPart; 82] model.addressLike; 83] model.annotationLike; 84] model.annotationPart.body; 85] model.applicationLike; 86] model.attributable; 87] model.availabilityPart; 88] model.biblLike; 89] model.biblPart; 90] model.castItemPart; 91] model.catDescPart; 92] model.certLike; 93] model.choicePart; 94] model.common; 95] model.contentPart; 96] model.correspActionPart; 97] model.correspContextPart; 98] model.correspDescPart; 99] model.dateLike; 100] model.descLike; 101] model.describedResource; 102] model.dimLike; 103] model.div1Like; 104] model.div2Like; 105] model.div3Like; 106] model.div4Like; 107] model.div5Like; 108] model.div6Like; 109] model.div7Like; 110] model.divBottom; 111] model.divBottomPart; 112] model.divGenLike; 113] model.divLike; 114] model.divPart; 115] model.divPart.spoken; 116] model.divTop; 117] model.divTopPart; 118] model.divWrapper; 119] model.editorialDeclPart; 120] model.egLike; 121] model.emphLike; 122] model.encodingDescPart; 123] model.entryLike; 124] model.entryPart; 125] model.entryPart.top; 126] model.eventLike; 127] model.featureVal; 128] model.featureVal.complex; 129] model.featureVal.single; 130] model.formPart; 131] model.frontPart; 132] model.frontPart.drama; 133] model.fsdDeclPart; 134] model.gLike; 135] model.global; 136] model.global.edit; 137] model.global.meta; 138] model.global.spoken; 139] model.glossLike; 140] model.gramPart; 141] model.graphicLike; 142] model.headLike; 143] model.hiLike; 144] model.highlighted; 145] model.imprintPart; 146] model.inter; 147] model.lLike; 148] model.lPart; 149] model.labelLike; 150] model.lexicalRefinement; 151] model.limitedPhrase; 152] model.linePart; 153] model.listLike; 154] model.measureLike; 155] model.milestoneLike; 156] model.morphLike; 157] model.msItemPart; 158] model.msQuoteLike; 159] model.nameLike; 160] model.nameLike.agent; 161] model.noteLike; 162] model.objectLike; 163] model.oddDecl; 164] model.oddRef; 165] model.offsetLike; 166] model.orgPart; 167] model.orgStateLike; 168] model.pLike; 169] model.pLike.front; 170] model.pPart.data; 171] model.pPart.edit; 172] model.pPart.editorial; 173] model.pPart.msdesc; 174] model.pPart.transcriptional; 175] model.persNamePart; 176] model.persStateLike; 177] model.personLike; 178] model.personPart; 179] model.phrase; 180] model.phrase.xml; 181] model.physDescPart; 182] model.placeLike; 183] model.placeNamePart; 184] model.placeStateLike; 185] model.profileDescPart; 186] model.ptrLike; 187] model.ptrLike.form; 188] model.publicationStmtPart.agency; 189] model.publicationStmtPart.detail; 190] model.quoteLike; 191] model.rdgLike; 192] model.rdgPart; 193] model.recordingPart; 194] model.resource; 195] model.respLike; 196] model.segLike; 197] model.settingPart; 198] model.sourceDescPart; 199] model.specDescLike; 200] model.stageLike; 201] model.standOffPart; 202] model.teiHeaderPart; 203] model.textDescPart; 204] model.titlepagePart
    attribute ident {
      
      ## (anchoring) 
      "att.anchoring"
      | 
        ##
        "att.ascribed"
      | 
        ##
        "att.ascribed.directed"
      | 
        ##
        "att.breaking"
      | 
        ##
        "att.cReferencing"
      | 
        ##
        "att.canonical"
      | 
        ##
        "att.citeStructurePart"
      | 
        ##
        "att.citing"
      | 
        ##
        "att.combinable"
      | 
        ##
        "att.coordinated"
      | 
        ##
        "att.damaged"
      | 
        ##
        "att.datable"
      | 
        ##
        "att.datable.custom"
      | 
        ##
        "att.datable.iso"
      | 
        ##
        "att.datable.w3c"
      | 
        ##
        "att.datcat"
      | 
        ##
        "att.declarable"
      | 
        ##
        "att.declaring"
      | 
        ##
        "att.deprecated"
      | 
        ##
        "att.dimensions"
      | 
        ##
        "att.divLike"
      | 
        ##
        "att.docStatus"
      | 
        ##
        "att.duration"
      | 
        ##
        "att.duration.iso"
      | 
        ##
        "att.duration.w3c"
      | 
        ##
        "att.editLike"
      | 
        ##
        "att.edition"
      | 
        ## (enjambement) 
        "att.enjamb"
      | 
        ##
        "att.entryLike"
      | 
        ##
        "att.formula"
      | 
        ##
        "att.fragmentable"
      | 
        ##
        "att.gaijiProp"
      | 
        ##
        "att.global"
      | 
        ##
        "att.global.analytic"
      | 
        ##
        "att.global.change"
      | 
        ##
        "att.global.facs"
      | 
        ##
        "att.global.linking"
      | 
        ##
        "att.global.rendition"
      | 
        ##
        "att.global.responsibility"
      | 
        ##
        "att.global.source"
      | 
        ##
        "att.handFeatures"
      | 
        ##
        "att.identified"
      | 
        ##
        "att.internetMedia"
      | 
        ##
        "att.interpLike"
      | 
        ##
        "att.lexicographic"
      | 
        ##
        "att.lexicographic.normalized"
      | 
        ##
        "att.linguistic"
      | 
        ##
        "att.measurement"
      | 
        ##
        "att.media"
      | 
        ##
        "att.metrical"
      | 
        ##
        "att.milestoneUnit"
      | 
        ##
        "att.msClass"
      | 
        ## (manuscript excerpt) 
        "att.msExcerpt"
      | 
        ##
        "att.namespaceable"
      | 
        ##
        "att.naming"
      | 
        ##
        "att.notated"
      | 
        ##
        "att.partials"
      | 
        ##
        "att.patternReplacement"
      | 
        ## (attributes for components of names usually, but not necessarily, personal names) 
        "att.personal"
      | 
        ##
        "att.placement"
      | 
        ##
        "att.pointing"
      | 
        ##
        "att.pointing.group"
      | 
        ##
        "att.predicate"
      | 
        ##
        "att.ranging"
      | 
        ##
        "att.rdgPart"
      | 
        ##
        "att.repeatable"
      | 
        ##
        "att.resourced"
      | 
        ##
        "att.scoping"
      | 
        ##
        "att.segLike"
      | 
        ##
        "att.sortable"
      | 
        ##
        "att.spanning"
      | 
        ##
        "att.styleDef"
      | 
        ##
        "att.tableDecoration"
      | 
        ##
        "att.textCritical"
      | 
        ##
        "att.timed"
      | 
        ##
        "att.transcriptional"
      | 
        ##
        "att.translatable"
      | 
        ##
        "att.typed"
      | 
        ##
        "att.witnessed"
      | 
        ##
        "att.written"
      | 
        ##
        "model.addrPart"
      | 
        ##
        "model.addressLike"
      | 
        ##
        "model.annotationLike"
      | 
        ##
        "model.annotationPart.body"
      | 
        ##
        "model.applicationLike"
      | 
        ##
        "model.attributable"
      | 
        ##
        "model.availabilityPart"
      | 
        ##
        "model.biblLike"
      | 
        ##
        "model.biblPart"
      | 
        ##
        "model.castItemPart"
      | 
        ##
        "model.catDescPart"
      | 
        ##
        "model.certLike"
      | 
        ##
        "model.choicePart"
      | 
        ##
        "model.common"
      | 
        ##
        "model.contentPart"
      | 
        ##
        "model.correspActionPart"
      | 
        ##
        "model.correspContextPart"
      | 
        ##
        "model.correspDescPart"
      | 
        ##
        "model.dateLike"
      | 
        ##
        "model.descLike"
      | 
        ##
        "model.describedResource"
      | 
        ##
        "model.dimLike"
      | 
        ##
        "model.div1Like"
      | 
        ##
        "model.div2Like"
      | 
        ##
        "model.div3Like"
      | 
        ##
        "model.div4Like"
      | 
        ##
        "model.div5Like"
      | 
        ##
        "model.div6Like"
      | 
        ##
        "model.div7Like"
      | 
        ##
        "model.divBottom"
      | 
        ##
        "model.divBottomPart"
      | 
        ##
        "model.divGenLike"
      | 
        ##
        "model.divLike"
      | 
        ##
        "model.divPart"
      | 
        ##
        "model.divPart.spoken"
      | 
        ##
        "model.divTop"
      | 
        ##
        "model.divTopPart"
      | 
        ##
        "model.divWrapper"
      | 
        ##
        "model.editorialDeclPart"
      | 
        ##
        "model.egLike"
      | 
        ##
        "model.emphLike"
      | 
        ##
        "model.encodingDescPart"
      | 
        ##
        "model.entryLike"
      | 
        ##
        "model.entryPart"
      | 
        ##
        "model.entryPart.top"
      | 
        ##
        "model.eventLike"
      | 
        ##
        "model.featureVal"
      | 
        ##
        "model.featureVal.complex"
      | 
        ##
        "model.featureVal.single"
      | 
        ##
        "model.formPart"
      | 
        ##
        "model.frontPart"
      | 
        ##
        "model.frontPart.drama"
      | 
        ##
        "model.fsdDeclPart"
      | 
        ##
        "model.gLike"
      | 
        ##
        "model.global"
      | 
        ##
        "model.global.edit"
      | 
        ##
        "model.global.meta"
      | 
        ##
        "model.global.spoken"
      | 
        ##
        "model.glossLike"
      | 
        ##
        "model.gramPart"
      | 
        ##
        "model.graphicLike"
      | 
        ##
        "model.headLike"
      | 
        ##
        "model.hiLike"
      | 
        ##
        "model.highlighted"
      | 
        ##
        "model.imprintPart"
      | 
        ##
        "model.inter"
      | 
        ##
        "model.lLike"
      | 
        ##
        "model.lPart"
      | 
        ##
        "model.labelLike"
      | 
        ##
        "model.lexicalRefinement"
      | 
        ##
        "model.limitedPhrase"
      | 
        ##
        "model.linePart"
      | 
        ##
        "model.listLike"
      | 
        ##
        "model.measureLike"
      | 
        ##
        "model.milestoneLike"
      | 
        ##
        "model.morphLike"
      | 
        ##
        "model.msItemPart"
      | 
        ##
        "model.msQuoteLike"
      | 
        ##
        "model.nameLike"
      | 
        ##
        "model.nameLike.agent"
      | 
        ##
        "model.noteLike"
      | 
        ##
        "model.objectLike"
      | 
        ##
        "model.oddDecl"
      | 
        ##
        "model.oddRef"
      | 
        ##
        "model.offsetLike"
      | 
        ##
        "model.orgPart"
      | 
        ##
        "model.orgStateLike"
      | 
        ##
        "model.pLike"
      | 
        ##
        "model.pLike.front"
      | 
        ##
        "model.pPart.data"
      | 
        ##
        "model.pPart.edit"
      | 
        ##
        "model.pPart.editorial"
      | 
        ##
        "model.pPart.msdesc"
      | 
        ##
        "model.pPart.transcriptional"
      | 
        ##
        "model.persNamePart"
      | 
        ##
        "model.persStateLike"
      | 
        ##
        "model.personLike"
      | 
        ##
        "model.personPart"
      | 
        ##
        "model.phrase"
      | 
        ##
        "model.phrase.xml"
      | 
        ##
        "model.physDescPart"
      | 
        ##
        "model.placeLike"
      | 
        ##
        "model.placeNamePart"
      | 
        ##
        "model.placeStateLike"
      | 
        ##
        "model.profileDescPart"
      | 
        ##
        "model.ptrLike"
      | 
        ##
        "model.ptrLike.form"
      | 
        ##
        "model.publicationStmtPart.agency"
      | 
        ##
        "model.publicationStmtPart.detail"
      | 
        ##
        "model.quoteLike"
      | 
        ##
        "model.rdgLike"
      | 
        ##
        "model.rdgPart"
      | 
        ##
        "model.recordingPart"
      | 
        ##
        "model.resource"
      | 
        ##
        "model.respLike"
      | 
        ##
        "model.segLike"
      | 
        ##
        "model.settingPart"
      | 
        ##
        "model.sourceDescPart"
      | 
        ##
        "model.specDescLike"
      | 
        ##
        "model.stageLike"
      | 
        ##
        "model.standOffPart"
      | 
        ##
        "model.teiHeaderPart"
      | 
        ##
        "model.textDescPart"
      | 
        ##
        "model.titlepagePart"
      | xsd:token { pattern = "[^\p{C}\p{Z}]+" }
    },
    
    ## indicates whether this is a model class or an attribute class
    attribute type {
      
      ## (content model) members of this class appear in the same content models
      "model"
      | 
        ## (attributes) members of this class share common attributes
        "atts"
    },
    
    ## indicates which alternation and sequence instantiations of a model class may be referenced. By default, all variations are permitted.
    attribute generate {
      list {
        (
         ## members of the class are alternatives
         "alternation"
         | 
           ## members of the class are to be provided in sequence
           "sequence"
         | 
           ## members of the class may be provided, in sequence, but are optional
           "sequenceOptional"
         | 
           ## members of the class may be provided one or more times, in sequence, but are optional.
           "sequenceOptionalRepeatable"
         | 
           ## members of the class may be provided one or more times, in sequence
           "sequenceRepeatable"),
        (
         ## members of the class are alternatives
         "alternation"
         | 
           ## members of the class are to be provided in sequence
           "sequence"
         | 
           ## members of the class may be provided, in sequence, but are optional
           "sequenceOptional"
         | 
           ## members of the class may be provided one or more times, in sequence, but are optional.
           "sequenceOptionalRepeatable"
         | 
           ## members of the class may be provided one or more times, in sequence
           "sequenceRepeatable")?,
        (
         ## members of the class are alternatives
         "alternation"
         | 
           ## members of the class are to be provided in sequence
           "sequence"
         | 
           ## members of the class may be provided, in sequence, but are optional
           "sequenceOptional"
         | 
           ## members of the class may be provided one or more times, in sequence, but are optional.
           "sequenceOptionalRepeatable"
         | 
           ## members of the class may be provided one or more times, in sequence
           "sequenceRepeatable")?,
        (
         ## members of the class are alternatives
         "alternation"
         | 
           ## members of the class are to be provided in sequence
           "sequence"
         | 
           ## members of the class may be provided, in sequence, but are optional
           "sequenceOptional"
         | 
           ## members of the class may be provided one or more times, in sequence, but are optional.
           "sequenceOptionalRepeatable"
         | 
           ## members of the class may be provided one or more times, in sequence
           "sequenceRepeatable")?,
        (
         ## members of the class are alternatives
         "alternation"
         | 
           ## members of the class are to be provided in sequence
           "sequence"
         | 
           ## members of the class may be provided, in sequence, but are optional
           "sequenceOptional"
         | 
           ## members of the class may be provided one or more times, in sequence, but are optional.
           "sequenceOptionalRepeatable"
         | 
           ## members of the class may be provided one or more times, in sequence
           "sequenceRepeatable")?
      }
    }?,
    empty
  }
cust_dataSpec =
  
  ## (datatype specification) documents a datatype. [22.3. Specification Elements 22.7. Macro Specifications]
  element tei:dataSpec {
    ((cust_model.glossLike | cust_model.descLike)*,
     (cust_content | cust_valList)?,
     cust_constraintSpec*,
     cust_exemplum*,
     cust_remarks*,
     cust_listRef*),
    cust_att.global.attributes,
    cust_att.identified.attribute.module,
    cust_att.identified.attribute.predeclare,
    cust_att.combinable.attribute.mode,
    cust_att.deprecated.attribute.validUntil,
    
    ## 
    ## Suggested values include: 1] teidata.authority; 2] teidata.certainty; 3] teidata.count; 4] teidata.duration.iso; 5] teidata.duration.w3c; 6] teidata.enumerated; 7] teidata.interval; 8] teidata.language; 9] teidata.name; 10] teidata.namespace; 11] teidata.namespaceOrName; 12] teidata.nullOrName; 13] teidata.numeric; 14] teidata.outputMeasurement; 15] teidata.pattern; 16] teidata.point; 17] teidata.pointer; 18] teidata.prefix; 19] teidata.probCert; 20] teidata.probability; 21] teidata.replacement; 22] teidata.sex; 23] teidata.temporal.iso; 24] teidata.temporal.w3c; 25] teidata.temporal.working; 26] teidata.text; 27] teidata.truthValue; 28] teidata.unboundedInt; 29] teidata.version; 30] teidata.versionNumber; 31] teidata.word; 32] teidata.xTruthValue (extended truth value); 33] teidata.xmlName; 34] teidata.xpath
    attribute ident {
      
      ##
      "teidata.authority"
      | 
        ##
        "teidata.certainty"
      | 
        ##
        "teidata.count"
      | 
        ##
        "teidata.duration.iso"
      | 
        ##
        "teidata.duration.w3c"
      | 
        ##
        "teidata.enumerated"
      | 
        ##
        "teidata.interval"
      | 
        ##
        "teidata.language"
      | 
        ##
        "teidata.name"
      | 
        ##
        "teidata.namespace"
      | 
        ##
        "teidata.namespaceOrName"
      | 
        ##
        "teidata.nullOrName"
      | 
        ##
        "teidata.numeric"
      | 
        ##
        "teidata.outputMeasurement"
      | 
        ##
        "teidata.pattern"
      | 
        ##
        "teidata.point"
      | 
        ##
        "teidata.pointer"
      | 
        ##
        "teidata.prefix"
      | 
        ##
        "teidata.probCert"
      | 
        ##
        "teidata.probability"
      | 
        ##
        "teidata.replacement"
      | 
        ##
        "teidata.sex"
      | 
        ##
        "teidata.temporal.iso"
      | 
        ##
        "teidata.temporal.w3c"
      | 
        ##
        "teidata.temporal.working"
      | 
        ##
        "teidata.text"
      | 
        ##
        "teidata.truthValue"
      | 
        ##
        "teidata.unboundedInt"
      | 
        ##
        "teidata.version"
      | 
        ##
        "teidata.versionNumber"
      | 
        ##
        "teidata.word"
      | 
        ## (extended truth value) 
        "teidata.xTruthValue"
      | 
        ##
        "teidata.xmlName"
      | 
        ##
        "teidata.xpath"
      | xsd:token { pattern = "[^\p{C}\p{Z}]+" }
    }?,
    empty
  }
cust_macroSpec =
  
  ## (macro specification) documents the function and implementation of a pattern. [22.3. Specification Elements 22.7. Macro Specifications]
  element tei:macroSpec {
    ((cust_model.glossLike | cust_model.descLike)*,
     (cust_content | cust_valList)?,
     cust_constraintSpec*,
     cust_exemplum*,
     cust_remarks*,
     cust_listRef*),
    cust_att.global.attributes,
    cust_att.identified.attribute.module,
    cust_att.identified.attribute.predeclare,
    cust_att.combinable.attribute.mode,
    cust_att.deprecated.attribute.validUntil,
    
    ## 
    ## Suggested values include: 1] macro.limitedContent (paragraph content); 2] macro.paraContent (paragraph content); 3] macro.phraseSeq (phrase sequence); 4] macro.phraseSeq.limited (limited phrase sequence); 5] macro.specialPara ('special' paragraph content); 6] macro.xtext (extended text)
    attribute ident {
      
      ## (paragraph content) 
      "macro.limitedContent"
      | 
        ## (paragraph content) 
        "macro.paraContent"
      | 
        ## (phrase sequence) 
        "macro.phraseSeq"
      | 
        ## (limited phrase sequence) 
        "macro.phraseSeq.limited"
      | 
        ## ('special' paragraph content) 
        "macro.specialPara"
      | 
        ## (extended text) 
        "macro.xtext"
      | xsd:token { pattern = "[^\p{C}\p{Z}]+" }
    },
    empty
  }
cust_remarks =
  
  ## (remarks) contains any commentary or discussion about the usage of an element, attribute, class, or entity not otherwise documented within the containing element. [22.5. Element Specifications 22.5.3. Attribute List Specification 22.6. Class Specifications 22.7. Macro Specifications]
  element tei:remarks {
    cust_model.pLike+,
    cust_att.global.attributes,
    cust_att.combinable.attributes,
    cust_att.translatable.attributes,
    
    ## specifies the remark concerned.
    attribute ident { xsd:string }?,
    empty
  }
cust_listRef =
  
  ## (list of references) supplies a list of significant references to places where this element is discussed, in the current document or elsewhere.
  element tei:listRef {
    (cust_desc*, cust_model.ptrLike+),
    cust_att.global.attributes,
    cust_att.typed.attributes,
    empty
  }
cust_exemplum =
  
  ## (exemplum) groups an example demonstrating the use of an element along with optional paragraphs of commentary. [22.5. Element Specifications]
  element tei:exemplum {
    (cust_model.pLike*, (cust_egXML | cust_eg), cust_model.pLike*),
    cust_att.global.attributes,
    cust_att.typed.attributes,
    cust_att.translatable.attributes,
    empty
  }
cust_classes =
  
  ## (classes) specifies all the classes of which the documented element or class is a member or subclass. [22.5. Element Specifications 22.6. Class Specifications]
  element tei:classes {
    cust_memberOf*,
    cust_att.global.attributes,
    
    ## specifies the effect of this declaration on its parent module.
    [ a:defaultValue = "replace" ]
    attribute mode {
      
      ## this declaration changes the declaration of the same name in the current definition
      "change"
      | 
        ## this declaration replaces the declaration of the same name in the current definition
        "replace"
    },
    empty
  }
cust_memberOf =
  
  ## specifies class membership of the documented element or class. [22.4.3. Classification of Components]
  element tei:memberOf {
    cust_macro.xtext,
    cust_att.global.attributes,
    
    ## 
    ## Suggested values include: 1] att.anchoring (anchoring); 2] att.ascribed; 3] att.ascribed.directed; 4] att.breaking; 5] att.cReferencing; 6] att.canonical; 7] att.citeStructurePart; 8] att.citing; 9] att.combinable; 10] att.coordinated; 11] att.damaged; 12] att.datable; 13] att.datable.custom; 14] att.datable.iso; 15] att.datable.w3c; 16] att.datcat; 17] att.declarable; 18] att.declaring; 19] att.deprecated; 20] att.dimensions; 21] att.divLike; 22] att.docStatus; 23] att.duration; 24] att.duration.iso; 25] att.duration.w3c; 26] att.editLike; 27] att.edition; 28] att.enjamb (enjambement); 29] att.entryLike; 30] att.formula; 31] att.fragmentable; 32] att.gaijiProp; 33] att.global; 34] att.global.analytic; 35] att.global.change; 36] att.global.facs; 37] att.global.linking; 38] att.global.rendition; 39] att.global.responsibility; 40] att.global.source; 41] att.handFeatures; 42] att.identified; 43] att.internetMedia; 44] att.interpLike; 45] att.lexicographic; 46] att.lexicographic.normalized; 47] att.linguistic; 48] att.measurement; 49] att.media; 50] att.metrical; 51] att.milestoneUnit; 52] att.msClass; 53] att.msExcerpt (manuscript excerpt); 54] att.namespaceable; 55] att.naming; 56] att.notated; 57] att.partials; 58] att.patternReplacement; 59] att.personal (attributes for components of names usually, but not necessarily, personal names); 60] att.placement; 61] att.pointing; 62] att.pointing.group; 63] att.predicate; 64] att.ranging; 65] att.rdgPart; 66] att.repeatable; 67] att.resourced; 68] att.scoping; 69] att.segLike; 70] att.sortable; 71] att.spanning; 72] att.styleDef; 73] att.tableDecoration; 74] att.textCritical; 75] att.timed; 76] att.transcriptional; 77] att.translatable; 78] att.typed; 79] att.witnessed; 80] att.written; 81] model.addrPart; 82] model.addressLike; 83] model.annotationLike; 84] model.annotationPart.body; 85] model.applicationLike; 86] model.attributable; 87] model.availabilityPart; 88] model.biblLike; 89] model.biblPart; 90] model.castItemPart; 91] model.catDescPart; 92] model.certLike; 93] model.choicePart; 94] model.common; 95] model.contentPart; 96] model.correspActionPart; 97] model.correspContextPart; 98] model.correspDescPart; 99] model.dateLike; 100] model.descLike; 101] model.describedResource; 102] model.dimLike; 103] model.div1Like; 104] model.div2Like; 105] model.div3Like; 106] model.div4Like; 107] model.div5Like; 108] model.div6Like; 109] model.div7Like; 110] model.divBottom; 111] model.divBottomPart; 112] model.divGenLike; 113] model.divLike; 114] model.divPart; 115] model.divPart.spoken; 116] model.divTop; 117] model.divTopPart; 118] model.divWrapper; 119] model.editorialDeclPart; 120] model.egLike; 121] model.emphLike; 122] model.encodingDescPart; 123] model.entryLike; 124] model.entryPart; 125] model.entryPart.top; 126] model.eventLike; 127] model.featureVal; 128] model.featureVal.complex; 129] model.featureVal.single; 130] model.formPart; 131] model.frontPart; 132] model.frontPart.drama; 133] model.fsdDeclPart; 134] model.gLike; 135] model.global; 136] model.global.edit; 137] model.global.meta; 138] model.global.spoken; 139] model.glossLike; 140] model.gramPart; 141] model.graphicLike; 142] model.headLike; 143] model.hiLike; 144] model.highlighted; 145] model.imprintPart; 146] model.inter; 147] model.lLike; 148] model.lPart; 149] model.labelLike; 150] model.lexicalRefinement; 151] model.limitedPhrase; 152] model.linePart; 153] model.listLike; 154] model.measureLike; 155] model.milestoneLike; 156] model.morphLike; 157] model.msItemPart; 158] model.msQuoteLike; 159] model.nameLike; 160] model.nameLike.agent; 161] model.noteLike; 162] model.objectLike; 163] model.oddDecl; 164] model.oddRef; 165] model.offsetLike; 166] model.orgPart; 167] model.orgStateLike; 168] model.pLike; 169] model.pLike.front; 170] model.pPart.data; 171] model.pPart.edit; 172] model.pPart.editorial; 173] model.pPart.msdesc; 174] model.pPart.transcriptional; 175] model.persNamePart; 176] model.persStateLike; 177] model.personLike; 178] model.personPart; 179] model.phrase; 180] model.phrase.xml; 181] model.physDescPart; 182] model.placeLike; 183] model.placeNamePart; 184] model.placeStateLike; 185] model.profileDescPart; 186] model.ptrLike; 187] model.ptrLike.form; 188] model.publicationStmtPart.agency; 189] model.publicationStmtPart.detail; 190] model.quoteLike; 191] model.rdgLike; 192] model.rdgPart; 193] model.recordingPart; 194] model.resource; 195] model.respLike; 196] model.segLike; 197] model.settingPart; 198] model.sourceDescPart; 199] model.specDescLike; 200] model.stageLike; 201] model.standOffPart; 202] model.teiHeaderPart; 203] model.textDescPart; 204] model.titlepagePart
    attribute key {
      
      ## (anchoring) 
      "att.anchoring"
      | 
        ##
        "att.ascribed"
      | 
        ##
        "att.ascribed.directed"
      | 
        ##
        "att.breaking"
      | 
        ##
        "att.cReferencing"
      | 
        ##
        "att.canonical"
      | 
        ##
        "att.citeStructurePart"
      | 
        ##
        "att.citing"
      | 
        ##
        "att.combinable"
      | 
        ##
        "att.coordinated"
      | 
        ##
        "att.damaged"
      | 
        ##
        "att.datable"
      | 
        ##
        "att.datable.custom"
      | 
        ##
        "att.datable.iso"
      | 
        ##
        "att.datable.w3c"
      | 
        ##
        "att.datcat"
      | 
        ##
        "att.declarable"
      | 
        ##
        "att.declaring"
      | 
        ##
        "att.deprecated"
      | 
        ##
        "att.dimensions"
      | 
        ##
        "att.divLike"
      | 
        ##
        "att.docStatus"
      | 
        ##
        "att.duration"
      | 
        ##
        "att.duration.iso"
      | 
        ##
        "att.duration.w3c"
      | 
        ##
        "att.editLike"
      | 
        ##
        "att.edition"
      | 
        ## (enjambement) 
        "att.enjamb"
      | 
        ##
        "att.entryLike"
      | 
        ##
        "att.formula"
      | 
        ##
        "att.fragmentable"
      | 
        ##
        "att.gaijiProp"
      | 
        ##
        "att.global"
      | 
        ##
        "att.global.analytic"
      | 
        ##
        "att.global.change"
      | 
        ##
        "att.global.facs"
      | 
        ##
        "att.global.linking"
      | 
        ##
        "att.global.rendition"
      | 
        ##
        "att.global.responsibility"
      | 
        ##
        "att.global.source"
      | 
        ##
        "att.handFeatures"
      | 
        ##
        "att.identified"
      | 
        ##
        "att.internetMedia"
      | 
        ##
        "att.interpLike"
      | 
        ##
        "att.lexicographic"
      | 
        ##
        "att.lexicographic.normalized"
      | 
        ##
        "att.linguistic"
      | 
        ##
        "att.measurement"
      | 
        ##
        "att.media"
      | 
        ##
        "att.metrical"
      | 
        ##
        "att.milestoneUnit"
      | 
        ##
        "att.msClass"
      | 
        ## (manuscript excerpt) 
        "att.msExcerpt"
      | 
        ##
        "att.namespaceable"
      | 
        ##
        "att.naming"
      | 
        ##
        "att.notated"
      | 
        ##
        "att.partials"
      | 
        ##
        "att.patternReplacement"
      | 
        ## (attributes for components of names usually, but not necessarily, personal names) 
        "att.personal"
      | 
        ##
        "att.placement"
      | 
        ##
        "att.pointing"
      | 
        ##
        "att.pointing.group"
      | 
        ##
        "att.predicate"
      | 
        ##
        "att.ranging"
      | 
        ##
        "att.rdgPart"
      | 
        ##
        "att.repeatable"
      | 
        ##
        "att.resourced"
      | 
        ##
        "att.scoping"
      | 
        ##
        "att.segLike"
      | 
        ##
        "att.sortable"
      | 
        ##
        "att.spanning"
      | 
        ##
        "att.styleDef"
      | 
        ##
        "att.tableDecoration"
      | 
        ##
        "att.textCritical"
      | 
        ##
        "att.timed"
      | 
        ##
        "att.transcriptional"
      | 
        ##
        "att.translatable"
      | 
        ##
        "att.typed"
      | 
        ##
        "att.witnessed"
      | 
        ##
        "att.written"
      | 
        ##
        "model.addrPart"
      | 
        ##
        "model.addressLike"
      | 
        ##
        "model.annotationLike"
      | 
        ##
        "model.annotationPart.body"
      | 
        ##
        "model.applicationLike"
      | 
        ##
        "model.attributable"
      | 
        ##
        "model.availabilityPart"
      | 
        ##
        "model.biblLike"
      | 
        ##
        "model.biblPart"
      | 
        ##
        "model.castItemPart"
      | 
        ##
        "model.catDescPart"
      | 
        ##
        "model.certLike"
      | 
        ##
        "model.choicePart"
      | 
        ##
        "model.common"
      | 
        ##
        "model.contentPart"
      | 
        ##
        "model.correspActionPart"
      | 
        ##
        "model.correspContextPart"
      | 
        ##
        "model.correspDescPart"
      | 
        ##
        "model.dateLike"
      | 
        ##
        "model.descLike"
      | 
        ##
        "model.describedResource"
      | 
        ##
        "model.dimLike"
      | 
        ##
        "model.div1Like"
      | 
        ##
        "model.div2Like"
      | 
        ##
        "model.div3Like"
      | 
        ##
        "model.div4Like"
      | 
        ##
        "model.div5Like"
      | 
        ##
        "model.div6Like"
      | 
        ##
        "model.div7Like"
      | 
        ##
        "model.divBottom"
      | 
        ##
        "model.divBottomPart"
      | 
        ##
        "model.divGenLike"
      | 
        ##
        "model.divLike"
      | 
        ##
        "model.divPart"
      | 
        ##
        "model.divPart.spoken"
      | 
        ##
        "model.divTop"
      | 
        ##
        "model.divTopPart"
      | 
        ##
        "model.divWrapper"
      | 
        ##
        "model.editorialDeclPart"
      | 
        ##
        "model.egLike"
      | 
        ##
        "model.emphLike"
      | 
        ##
        "model.encodingDescPart"
      | 
        ##
        "model.entryLike"
      | 
        ##
        "model.entryPart"
      | 
        ##
        "model.entryPart.top"
      | 
        ##
        "model.eventLike"
      | 
        ##
        "model.featureVal"
      | 
        ##
        "model.featureVal.complex"
      | 
        ##
        "model.featureVal.single"
      | 
        ##
        "model.formPart"
      | 
        ##
        "model.frontPart"
      | 
        ##
        "model.frontPart.drama"
      | 
        ##
        "model.fsdDeclPart"
      | 
        ##
        "model.gLike"
      | 
        ##
        "model.global"
      | 
        ##
        "model.global.edit"
      | 
        ##
        "model.global.meta"
      | 
        ##
        "model.global.spoken"
      | 
        ##
        "model.glossLike"
      | 
        ##
        "model.gramPart"
      | 
        ##
        "model.graphicLike"
      | 
        ##
        "model.headLike"
      | 
        ##
        "model.hiLike"
      | 
        ##
        "model.highlighted"
      | 
        ##
        "model.imprintPart"
      | 
        ##
        "model.inter"
      | 
        ##
        "model.lLike"
      | 
        ##
        "model.lPart"
      | 
        ##
        "model.labelLike"
      | 
        ##
        "model.lexicalRefinement"
      | 
        ##
        "model.limitedPhrase"
      | 
        ##
        "model.linePart"
      | 
        ##
        "model.listLike"
      | 
        ##
        "model.measureLike"
      | 
        ##
        "model.milestoneLike"
      | 
        ##
        "model.morphLike"
      | 
        ##
        "model.msItemPart"
      | 
        ##
        "model.msQuoteLike"
      | 
        ##
        "model.nameLike"
      | 
        ##
        "model.nameLike.agent"
      | 
        ##
        "model.noteLike"
      | 
        ##
        "model.objectLike"
      | 
        ##
        "model.oddDecl"
      | 
        ##
        "model.oddRef"
      | 
        ##
        "model.offsetLike"
      | 
        ##
        "model.orgPart"
      | 
        ##
        "model.orgStateLike"
      | 
        ##
        "model.pLike"
      | 
        ##
        "model.pLike.front"
      | 
        ##
        "model.pPart.data"
      | 
        ##
        "model.pPart.edit"
      | 
        ##
        "model.pPart.editorial"
      | 
        ##
        "model.pPart.msdesc"
      | 
        ##
        "model.pPart.transcriptional"
      | 
        ##
        "model.persNamePart"
      | 
        ##
        "model.persStateLike"
      | 
        ##
        "model.personLike"
      | 
        ##
        "model.personPart"
      | 
        ##
        "model.phrase"
      | 
        ##
        "model.phrase.xml"
      | 
        ##
        "model.physDescPart"
      | 
        ##
        "model.placeLike"
      | 
        ##
        "model.placeNamePart"
      | 
        ##
        "model.placeStateLike"
      | 
        ##
        "model.profileDescPart"
      | 
        ##
        "model.ptrLike"
      | 
        ##
        "model.ptrLike.form"
      | 
        ##
        "model.publicationStmtPart.agency"
      | 
        ##
        "model.publicationStmtPart.detail"
      | 
        ##
        "model.quoteLike"
      | 
        ##
        "model.rdgLike"
      | 
        ##
        "model.rdgPart"
      | 
        ##
        "model.recordingPart"
      | 
        ##
        "model.resource"
      | 
        ##
        "model.respLike"
      | 
        ##
        "model.segLike"
      | 
        ##
        "model.settingPart"
      | 
        ##
        "model.sourceDescPart"
      | 
        ##
        "model.specDescLike"
      | 
        ##
        "model.stageLike"
      | 
        ##
        "model.standOffPart"
      | 
        ##
        "model.teiHeaderPart"
      | 
        ##
        "model.textDescPart"
      | 
        ##
        "model.titlepagePart"
      | xsd:token { pattern = "[^\p{C}\p{Z}]+" }
    }?,
    
    ## specifies the effect of this declaration on its parent module.
    [ a:defaultValue = "add" ]
    attribute mode {
      
      ## this declaration is added to the current definitions
      "add"
      | 
        ## this declaration and all of its children are removed from the current setup
        "delete"
    }?,
    
    ## supplies the maximum number of times the element can occur in elements which use this model class in their content model
    attribute max {
      xsd:double
      | xsd:token { pattern = "(\-?[\d]+/\-?[\d]+)" }
      | xsd:decimal
    }?,
    
    ## supplies the minumum number of times the element must occur in elements which use this model class in their content model
    attribute min {
      xsd:double
      | xsd:token { pattern = "(\-?[\d]+/\-?[\d]+)" }
      | xsd:decimal
    }?,
    empty
  }
cust_equiv =
  
  ## (equivalent) specifies a component which is considered equivalent to the parent element, either by co-reference, or by external link. [3.4.1. Terms and Glosses 22.4.1. Description of Components]
  element tei:equiv {
    empty,
    cust_att.global.attributes,
    cust_att.internetMedia.attributes,
    cust_att.predicate.attributes,
    
    ## a single word which follows the rules defining a legal XML name (see ), naming the underlying concept of which the parent is a representation.
    attribute name { xsd:Name }?,
    
    ## (uniform resource identifier) references the underlying concept of which the parent is a representation by means of some external identifier
    attribute uri { xsd:anyURI }?,
    
    ## references an external script which contains a method to transform instances of this element to canonical TEI
    attribute filter { xsd:anyURI }?,
    empty
  }
cust_altIdent =
  
  ## (alternate identifier) supplies the recommended XML name for an element, class, attribute, etc. in some language. [3.4.1. Terms and Glosses 22.4.1. Description of Components]
  element tei:altIdent {
    text
    >> sch:pattern [
         id =
           "tei_customization-altIdent-altIdent-only-NCName-constraint-report-43"
         "\x{a}" ~
         "            "
         sch:rule [
           context = "tei:altIdent"
           "\x{a}" ~
           "               "
           sch:report [
             test =
               "if ( parent::taxonomy | parent::valItem )                                       then false()                                       else contains( .,':')"
             " The content of ＜altIdent＞ should be an XML Name (w/o a namespace prefix),\x{a}" ~
             "                      unless a child of ＜valItem＞ (and even then, it's not a bad idea :-)"
           ]
           "\x{a}" ~
           "            "
         ]
         "\x{a}" ~
         "         "
       ],
    cust_att.global.attributes,
    cust_att.typed.attributes,
    empty
  }
cust_model =
  
  ## describes the processing intended for a specified element. [22.5.4.1. The TEI processing model]
  element tei:model {
    ((cust_model.glossLike | cust_model.descLike)*,
     cust_param*,
     cust_outputRendition*)
    >> sch:pattern [
         id =
           "tei_customization-model-no_dup_default_models-constraint-rule-57"
         "\x{a}" ~
         "            "
         sch:rule [
           context =
             "tei:model[ not( parent::tei:modelSequence ) ][ not( @predicate ) ]"
           "\x{a}" ~
           "               "
           sch:let [
             name = "output"
             value = "normalize-space( @output )"
           ]
           "\x{a}" ~
           "               "
           sch:report [
             test =
               "following-sibling::tei:model                             [ not( @predicate )]                             [ normalize-space( @output ) eq $output ]"
             "\x{a}" ~
             "          There are 2 (or more) 'model' elements in this '"
             sch:value-of [ select = "local-name(..)" ]
             "'\x{a}" ~
             "          that have no predicate, but are targeted to the same output\x{a}" ~
             '          ("'
             sch:value-of [
               select = "( $output, parent::modelGrp/@output, 'all')[1]"
             ]
             '")'
           ]
           "\x{a}" ~
           "            "
         ]
         "\x{a}" ~
         "         "
       ]
    >> sch:pattern [
         id = "tei_customization-model-no_dup_models-constraint-rule-58"
         "\x{a}" ~
         "            "
         sch:rule [
           context =
             "tei:model[ not( parent::tei:modelSequence ) ][ @predicate ]"
           "\x{a}" ~
           "               "
           sch:let [
             name = "predicate"
             value = "normalize-space( @predicate )"
           ]
           "\x{a}" ~
           "               "
           sch:let [
             name = "output"
             value = "normalize-space( @output )"
           ]
           "\x{a}" ~
           "               "
           sch:report [
             test =
               "following-sibling::tei:model                             [ normalize-space( @predicate ) eq $predicate ]                             [ normalize-space( @output ) eq $output ]"
             "\x{a}" ~
             "          There are 2 (or more) 'model' elements in this\x{a}" ~
             "          '"
             sch:value-of [ select = "local-name(..)" ]
             "' that have\x{a}" ~
             "          the same predicate, and are targeted to the same output\x{a}" ~
             '          ("'
             sch:value-of [
               select = "( $output, parent::modelGrp/@output, 'all')[1]"
             ]
             '")'
           ]
           "\x{a}" ~
           "            "
         ]
         "\x{a}" ~
         "         "
       ],
    cust_att.global.attributes,
    cust_att.predicate.attributes,
    
    ## names the process or function which this processing model uses in order to produce output.
    ## Suggested values include: 1] alternate; 2] anchor; 3] block; 4] body; 5] break; 6] cell; 7] cit; 8] document; 9] figure; 10] glyph; 11] graphic; 12] heading; 13] index; 14] inline; 15] link; 16] list; 17] listItem; 18] metadata; 19] note; 20] omit; 21] paragraph; 22] row; 23] section; 24] table; 25] text; 26] title
    attribute behaviour {
      
      ## support display of alternative visualisations, for example by displaying the preferred content, by displaying both in parallel, or by toggling between the two.
      "alternate"
      | 
        ## create an identifiable anchor point in the output.
        "anchor"
      | 
        ## create a block structure
        "block"
      | 
        ## create the body of a document.
        "body"
      | 
        ## create a line, column, or page break according to the value of type
        "break"
      | 
        ## create a table cell
        "cell"
      | 
        ## show the content, with an indication of the source
        "cit"
      | 
        ## start a new output document
        "document"
      | 
        ## make a figure with the title as caption
        "figure"
      | 
        ## show a character by looking up reference to a chardesc at the given URI
        "glyph"
      | 
        ## if url is present, uses it to display graphic, else display a placeholder image.
        "graphic"
      | 
        ## creates a heading. 
        "heading"
      | 
        ## generate list according to type.
        "index"
      | 
        ## creates inline element out of content
        "inline"
      | 
        ## create hyperlink
        "link"
      | 
        ## create a list. 
        "list"
      | 
        ## create a list item.
        "listItem"
      | 
        ## create metadata section
        "metadata"
      | 
        ## create a note, often out of line, depending on the value of place; could be margin, footnote, endnote, inline
        "note"
      | 
        ## do nothing, do not process children
        "omit"
      | 
        ## create a paragraph out of content.
        "paragraph"
      | 
        ## create a table row
        "row"
      | 
        ## create a new section of the output document
        "section"
      | 
        ## create a table
        "table"
      | 
        ## create literal text
        "text"
      | 
        ## create document title
        "title"
      | xsd:token { pattern = "[^\p{C}\p{Z}]+" }
    },
    
    ## whether to obey any rendition attribute which is present.
    attribute useSourceRendition { xsd:boolean }?,
    
    ## the intended output.
    ## Sample values include: 1] web; 2] print; 3] plain
    attribute output {
      xsd:token { pattern = "[^\p{C}\p{Z}]+" }
    }?,
    
    ## the name of a CSS class which should be associated with this element
    attribute cssClass {
      list { xsd:Name+ }
    }?,
    empty
  }
cust_modelSequence =
  [
    a:documentation [
      "any sequence of model or "
      ns1:code [ "<modelSequence>" ]
      " elements which is to be processed as a single set of actions [22.5.4.7. Model sequence]"
    ]
  ]
  element tei:modelSequence {
    ((cust_model.glossLike | cust_model.descLike)*,
     (cust_model, cust_model, cust_model*))
    >> sch:pattern [
         id =
           "tei_customization-modelSequence-no_outputs_nor_predicates_4_my_kids-constraint-report-46"
         "\x{a}" ~
         "            "
         sch:rule [
           context = "tei:modelSequence"
           "\x{a}" ~
           "               "
           sch:report [
             test = "tei:model[@output]"
             role = "warning"
             "The 'model' children\x{a}" ~
             "      of a 'modelSequence' element inherit the @output attribute of the\x{a}" ~
             "      parent 'modelSequence', and thus should not have their own"
           ]
           "\x{a}" ~
           "            "
         ]
         "\x{a}" ~
         "         "
       ],
    cust_att.global.attributes,
    
    ## the condition under which this model applies given as an XPath Predicate Expression
    attribute predicate { text }?,
    
    ## whether to obey any rendition attribute which is present
    attribute useSourceRendition { xsd:boolean }?,
    
    ## the intended output method
    ## Suggested values include: 1] web; 2] print; 3] plaintext
    attribute output {
      
      ## the output is intended for presentation in a web format
      "web"
      | 
        ## the output is intended for presentation in a print format
        "print"
      | 
        ## the output is intended for presentation in a plain text format
        "plaintext"
      | xsd:token { pattern = "[^\p{C}\p{Z}]+" }
    }?,
    empty
  }
cust_outputRendition =
  
  ## describes the rendering or appearance intended for all occurrences of an element in a specified context for a specified type of output.
  element tei:outputRendition {
    text,
    cust_att.global.attributes,
    
    ## provides a way of defining pseudo-elements, that is, styling rules applicable to specific sub-portions of an element.
    ## Sample values include: 1] first-line; 2] first-letter; 3] before; 4] after
    attribute scope {
      xsd:token { pattern = "[^\p{C}\p{Z}]+" }
    }?,
    empty
  }
cust_paramList =
  
  ## list of parameter specifications
  element tei:paramList {
    cust_paramSpec*, cust_att.global.attributes, empty
  }
cust_paramSpec =
  
  ## supplies specification for one parameter of a model behaviour [22.5.4.8. Defining a processing model]
  element tei:paramSpec {
    (cust_model.glossLike | cust_model.descLike)*,
    cust_att.global.attributes,
    cust_att.identified.attributes,
    empty
  }
cust_param =
  
  ## provides a parameter for a model behaviour by supplying its name and an XPath expression identifying the location of its content. [22.5.4.5. Behaviours and their parameters]
  element tei:param {
    empty,
    cust_att.global.attributes,
    
    ## a name for the parameter being supplied
    ## Suggested values include: 1] alternate; 2] default; 3] height; 4] id; 5] label; 6] level; 7] link; 8] place; 9] type; 10] url; 11] width
    attribute name {
      [
        a:documentation [
          "when used with behaviour alternate, a parameter of this name supplies one of the pair of possible values; for example the regularized form rather than the original form within a "
          ns1:code [ "<choice>" ]
          " element."
        ]
      ]
      "alternate"
      | [
          a:documentation [
            "when used with behaviour alternate, a parameter of this name supplies one of the pair of possible values; for example the original form rather than the regularized form within a "
            ns1:code [ "<choice>" ]
            " element."
          ]
        ]
        "default"
      | 
        ## when used with behaviour graphic, a parameter of this name supplies a value for the height of the graphic e.g. "300px", "50%".
        "height"
      | 
        ## a parameter of this name should supply a unique identifier for the element being processed; as for example with the anchor behaviour
        "id"
      | 
        ## a parameter of this name should supply an expression to be used to label something, for example  for a page break or  for a footnote reference; typically used with the note or break behaviours
        "label"
      | 
        ## when used with the heading behaviour, a parameter of this name supplies a positive integer indicating the hierarchic level of a heading.
        "level"
      | 
        ## when used with the link behaviour, a parameter of this name should supply a URL to be used as the target of a link.
        "link"
      | 
        ## when used with the note behaviour, a parameter of this name should provide a string which describes the intended placement of some text; typical values include "margin", "footnote", "endnote", "inline", "bottom"
        "place"
      | 
        ## a parameter of this name can be used to categorize the specified behaviour in any way; for example the kind of break (when used with the break behaviour) or the kind of index to be generated (if used with the index behaviour) etc.
        "type"
      | 
        ## when used with behaviour graphic, a parameter of this name supplies a a URL indicating the graphic intended.
        "url"
      | 
        ## when used with behaviour graphic, a parameter of this name supplies a value for the width of the graphic e.g. "400px", "70%".
        "width"
      | xsd:token { pattern = "[^\p{C}\p{Z}]+" }
    },
    
    ## supplies an XPath expression which when evaluated provides the value for the parameter
    attribute value { text },
    empty
  }
cust_content =
  
  ## (content model) contains a declaration of the intended content model for the element (or other construct) being specified. [22.5. Element Specifications]
  element tei:content {
    (cust_valList | cust_model.contentPart+ | anyElement-content+),
    cust_att.global.attributes,
    
    ## controls whether or not pattern names generated in the corresponding RELAX NG schema source are automatically prefixed to avoid potential nameclashes.
    [ a:defaultValue = "true" ]
    attribute autoPrefix {
      [
        a:documentation [
          "Each name referenced in e.g. an "
          ns1:code [ "<rng:ref>" ]
          " element within a content model is automatically prefixed by the value of the "
          ns1:code [ "@prefix" ]
          " attribute on the current "
          ns1:code [ "<schemaSpec>" ]
          "\x{a}" ~
          "                  "
        ]
      ]
      "true"
      | [
          a:documentation [
            "No prefixes are added: any prefix required by the value of the "
            ns1:code [ "@prefix" ]
            " attribute on the current "
            ns1:code [ "<schemaSpec>" ]
            " must therefore be supplied explicitly, as appropriate."
          ]
        ]
        "false"
    }?,
    empty
  }
cust_sequence =
  
  ## indicates that the constructs referenced by its children form a sequence [22.5.1. Defining Content Models]
  element tei:sequence {
    (cust_model.contentPart+)
    >> sch:pattern [
         id =
           "tei_customization-sequence-sequencechilden-constraint-assert-66"
         "\x{a}" ~
         "            "
         sch:rule [
           context = "tei:sequence"
           "\x{a}" ~
           "               "
           sch:assert [
             test = "count(*)>1"
             "The sequence element must have at least two child elements"
           ]
           "\x{a}" ~
           "            "
         ]
         "\x{a}" ~
         "         "
       ],
    cust_att.global.attributes,
    cust_att.repeatable.attributes,
    
    ## if true, indicates that the order in which component elements of a sequence appear in a document must correspond to the order in which they are given in the content model.
    attribute preserveOrder { xsd:boolean }?,
    empty
  }
cust_alternate =
  
  ## indicates that the constructs referenced by its children form an alternation [22.5.1. Defining Content Models]
  element tei:alternate {
    ((cust_valList | cust_model.contentPart)+)
    >> sch:pattern [
         id =
           "tei_customization-alternate-alternatechilden-constraint-assert-67"
         "\x{a}" ~
         "            "
         sch:rule [
           context = "tei:alternate"
           "\x{a}" ~
           "               "
           sch:assert [
             test = "count(*)>1"
             "The alternate element must have at least two child elements"
           ]
           "\x{a}" ~
           "            "
         ]
         "\x{a}" ~
         "         "
       ],
    cust_att.global.attributes,
    cust_att.repeatable.attributes,
    empty
  }
cust_constraint =
  
  ## (constraint rules) the formal rules of a constraint [22.5. Element Specifications]
  element tei:constraint {
    (sch_assert
     | sch_let
     | sch_ns
     | sch_report
     | sch_rule
     | sch_pattern)+,
    cust_att.global.attributes,
    empty
  }
cust_constraintSpec =
  
  ## (constraint on schema) contains a formal constraint, typically expressed in a rule-based schema language, to which a construct must conform in order to be considered valid [22.5. Element Specifications]
  element tei:constraintSpec {
    ((cust_model.glossLike | cust_model.descLike)*, cust_constraint?)
    >> sch:ns [
         prefix = "s"
         uri = "http://www.ascc.net/xml/schematron"
       ]
    >> sch:pattern [
         id =
           "tei_customization-constraintSpec-sch_no_more-constraint-report-47"
         "\x{a}" ~
         "            "
         sch:rule [
           context = "tei:constraintSpec"
           "\x{a}" ~
           "               "
           sch:report [
             test =
               "tei:constraint/s:*  and  @scheme = ('isoschematron','schematron')"
             "Rules\x{a}" ~
             "        in the Schematron 1.* language must be inside a constraintSpec\x{a}" ~
             "        with a value other than 'schematron' or 'isoschematron' on the\x{a}" ~
             "        scheme attribute"
           ]
           "\x{a}" ~
           "            "
         ]
         "\x{a}" ~
         "         "
       ]
    >> sch:ns [
         prefix = "sch"
         uri = "http://purl.oclc.org/dsdl/schematron"
       ]
    >> sch:pattern [
         id =
           "tei_customization-constraintSpec-isosch-constraint-report-48"
         "\x{a}" ~
         "            "
         sch:rule [
           context = "tei:constraintSpec"
           "\x{a}" ~
           "               "
           sch:report [
             test =
               "tei:constraint/sch:*  and  not( @scheme eq 'schematron')"
             "Rules\x{a}" ~
             "        in the ISO Schematron language must be inside a constraintSpec\x{a}" ~
             "        with the value 'schematron' on the scheme attribute"
           ]
           "\x{a}" ~
           "            "
         ]
         "\x{a}" ~
         "         "
       ]
    >> sch:ns [
         prefix = "sch"
         uri = "http://purl.oclc.org/dsdl/schematron"
       ]
    >> sch:pattern [
         id =
           "tei_customization-constraintSpec-needrules-constraint-rule-59"
         "\x{a}" ~
         "            "
         sch:rule [
           context =
             "tei:macroSpec/tei:constraintSpec[@scheme eq 'schematron']/tei:constraint"
           "\x{a}" ~
           "               "
           sch:report [
             test = "sch:assert|sch:report"
             "An ISO Schematron constraint specification for a macro should not\x{a}" ~
             "        have an 'assert' or 'report' element without a parent 'rule' element"
           ]
           "\x{a}" ~
           "            "
         ]
         "\x{a}" ~
         "         "
       ],
    cust_att.global.attributes,
    cust_att.identified.attributes,
    cust_att.typed.attribute.subtype,
    [
      a:documentation [
        "characterizes the "
        ns1:code [ "<constraintSpec>" ]
        " element in some sense; used to indicate when a "
        ns1:code [ "<constraintSpec>" ]
        " warns about a deprecated construct.\x{a}" ~
        "Suggested values include: 1] deprecationWarning"
      ]
    ]
    attribute type {
      
      ## Indicates that this constraint specification warns that some other construct in the schema is deprecated.
      "deprecationWarning"
      | xsd:token { pattern = "[^\p{C}\p{Z}]+" }
    }?,
    
    ## supplies the name of the language in which the constraints are defined
    ## Suggested values include: 1] schematron (ISO Schematron)
    attribute scheme {
      
      ## (ISO Schematron) 
      "schematron"
      | xsd:token { pattern = "[^\p{C}\p{Z}]+" }
    },
    empty
  }
cust_attList =
  [
    a:documentation [
      "(attribute list) contains documentation for all the attributes associated with this element, as a series of "
      ns1:code [ "<attDef>" ]
      " elements. [22.5. Element Specifications 22.6. Class Specifications]"
    ]
  ]
  element tei:attList {
    (cust_attRef | cust_attDef | cust_attList)+,
    cust_att.global.attributes,
    
    ## (organization) specifies whether all the attributes in the list are available (org="group") or only one of them (org="choice")
    [ a:defaultValue = "group" ]
    attribute org {
      
      ## grouped
      "group"
      | 
        ## alternated
        "choice"
    }?,
    empty
  }
cust_attDef =
  
  ## (attribute definition) contains the definition of a single attribute. [22.5.3. Attribute List Specification]
  element tei:attDef {
    ((cust_model.glossLike | cust_model.descLike)*,
     cust_datatype?,
     cust_constraintSpec*,
     cust_defaultVal?,
     (cust_valList | cust_valDesc+)?,
     cust_exemplum*,
     cust_remarks*)
    >> sch:ns [
         prefix = "teix"
         uri = "http://www.tei-c.org/ns/Examples"
       ]
    >> sch:pattern [
         id =
           "tei_customization-attDef-attDefContents-constraint-assert-70"
         "\x{a}" ~
         "            "
         sch:rule [
           context = "tei:attDef"
           "\x{a}" ~
           "               "
           sch:assert [
             test =
               "ancestor::teix:egXML[@valid='feasible'] or @mode eq 'change' or @mode eq 'delete' or tei:datatype or tei:valList[@type='closed']"
             "Attribute: the definition of the @"
             sch:value-of [ select = "@ident" ]
             " attribute in the "
             sch:value-of [ select = "ancestor::*[@ident][1]/@ident" ]
             "\x{a}" ~
             "                  "
             sch:value-of [ select = "' '" ]
             "\x{a}" ~
             "                  "
             sch:value-of [
               select = "local-name(ancestor::*[@ident][1])"
             ]
             " should have a closed valList or a datatype"
           ]
           "\x{a}" ~
           "            "
         ]
         "\x{a}" ~
         "         "
       ]
    >> sch:pattern [
         id =
           "tei_customization-attDef-noDefault4Required-constraint-rule-60"
         "\x{a}" ~
         "            "
         sch:rule [
           context = "tei:attDef[@usage eq 'req']"
           "\x{a}" ~
           "	              "
           sch:report [
             test = "tei:defaultVal"
             "Since the @"
             sch:value-of [ select = "@ident" ]
             ' attribute is required, it will always be specified. Thus the default value (of "'
             sch:value-of [ select = "normalize-space(tei:defaultVal)" ]
             '") will never be used. Either change the definition of the attribute so it is not required ("rec" or "opt"), or remove the defaultVal element.'
           ]
           "\x{a}" ~
           "            "
         ]
         "\x{a}" ~
         "         "
       ]
    >> sch:pattern [
         id =
           "tei_customization-attDef-defaultIsInClosedList-twoOrMore-constraint-rule-61"
         "\x{a}" ~
         "            "
         sch:rule [
           context =
             "tei:attDef[   tei:defaultVal   and   tei:valList[@type eq 'closed']   and   tei:datatype[    @maxOccurs > 1    or    @minOccurs > 1    or    @maxOccurs = 'unbounded'    ]   ]"
           "\x{a}" ~
           "               "
           sch:assert [
             test =
               "     tokenize(normalize-space(tei:defaultVal),' ')     =     tei:valList/tei:valItem/@ident"
             "In the "
             sch:value-of [
               select = "local-name(ancestor::*[@ident][1])"
             ]
             " defining\x{a}" ~
             "        "
             sch:value-of [ select = "ancestor::*[@ident][1]/@ident" ]
             " the default value of the\x{a}" ~
             "        @"
             sch:value-of [ select = "@ident" ]
             " attribute is not among the closed list of possible\x{a}" ~
             "        values"
           ]
           "\x{a}" ~
           "            "
         ]
         "\x{a}" ~
         "         "
       ]
    >> sch:pattern [
         id =
           "tei_customization-attDef-defaultIsInClosedList-one-constraint-rule-62"
         "\x{a}" ~
         "            "
         sch:rule [
           context =
             "tei:attDef[   tei:defaultVal   and   tei:valList[@type eq 'closed']   and   tei:datatype[    not(@maxOccurs)    or (    if ( @maxOccurs castable as xs:integer )     then ( @maxOccurs cast as xs:integer eq 1 )     else false()    )]   ]"
           "\x{a}" ~
           "               "
           sch:assert [
             test =
               "string(tei:defaultVal)      =      tei:valList/tei:valItem/@ident"
             "In the "
             sch:value-of [
               select = "local-name(ancestor::*[@ident][1])"
             ]
             " defining\x{a}" ~
             "        "
             sch:value-of [ select = "ancestor::*[@ident][1]/@ident" ]
             " the default value of the\x{a}" ~
             "        @"
             sch:value-of [ select = "@ident" ]
             " attribute is not among the closed list of possible\x{a}" ~
             "        values"
           ]
           "\x{a}" ~
           "            "
         ]
         "\x{a}" ~
         "         "
       ],
    cust_att.global.attributes,
    cust_att.identified.attributes,
    
    ## specifies the optionality of the attribute.
    [ a:defaultValue = "opt" ]
    attribute usage {
      
      ## (required) 
      "req"
      | 
        ## (recommended ) 
        "rec"
      | 
        ## (optional ) 
        "opt"
    }?,
    
    ## (namespace) specifies the namespace to which this attribute belongs
    attribute ns { xsd:anyURI }?,
    empty
  }
cust_attRef =
  
  ## (attribute pointer) points to the definition of an attribute or group of attributes. [22.2. Modules and Schemas]
  element tei:attRef {
    empty,
    cust_att.global.attributes,
    
    ## the name of the attribute class
    attribute class {
      xsd:token { pattern = "[^\p{C}\p{Z}]+" }
    }?,
    
    ## the name of the attribute
    attribute name { xsd:Name }?,
    empty
  }
cust_datatype =
  
  ## (datatype) specifies the declared value for an attribute, by referring to any datatype defined by the chosen schema language. [1.4.2. Datatype Specifications 22.5.3. Attribute List Specification]
  element tei:datatype {
    (cust_dataRef | anyElement-datatype),
    cust_att.global.attributes,
    
    ## (minimum number of occurences) indicates the minimum number of times this datatype may occur in an instance of the attribute being defined
    [ a:defaultValue = "1" ]
    attribute minOccurs { xsd:nonNegativeInteger }?,
    
    ## (maximum number of occurences) indicates the maximum number of times this datatype may occur in an instance of the attribute being defined
    [ a:defaultValue = "1" ]
    attribute maxOccurs {
      xsd:nonNegativeInteger
      | (
         ##
         "unbounded")
    }?,
    empty
  }
cust_dataRef =
  
  ## identifies the datatype of an attribute value, either by referencing an item in an externally defined datatype library, or by pointing to a TEI-defined data specification [22.5.3.1. Datatypes]
  element tei:dataRef {
    (cust_dataFacet*)
    >> sch:pattern [
         id =
           "tei_customization-dataRef-restrictDataFacet-constraint-rule-63"
         "\x{a}" ~
         "            "
         sch:rule [
           context = "tei:dataRef[tei:dataFacet]"
           "\x{a}" ~
           "               "
           sch:assert [
             test = "@name"
             role = "nonfatal"
             "Data facets can only be specified for references to datatypes specified by\x{a}" ~
             "          XML Schemas: Part 2: Datatypes"
           ]
           "\x{a}" ~
           "            "
         ]
         "\x{a}" ~
         "         "
       ]
    >> sch:pattern [
         id =
           "tei_customization-dataRef-restrictAttRestriction-constraint-rule-64"
         "\x{a}" ~
         "            "
         sch:rule [
           context = "tei:dataRef[tei:dataFacet]"
           "\x{a}" ~
           "               "
           sch:report [
             test = "@restriction"
             role = "nonfatal"
             "The attribute restriction cannot be used when dataFacet elements are present."
           ]
           "\x{a}" ~
           "            "
         ]
         "\x{a}" ~
         "         "
       ]
    >> sch:pattern [
         id =
           "tei_customization-dataRef-restrictAttResctrictionName-constraint-rule-65"
         "\x{a}" ~
         "            "
         sch:rule [
           context = "tei:dataRef"
           "\x{a}" ~
           "               "
           sch:report [
             test = "@restriction and not(@name)"
             role = "fatal"
             "The attribute restriction can only be used with a name attribute."
           ]
           "\x{a}" ~
           "            "
         ]
         "\x{a}" ~
         "         "
       ],
    cust_att.global.attributes,
    
    ##
    attribute key {
      
      ##
      "teidata.authority"
      | 
        ##
        "teidata.certainty"
      | 
        ##
        "teidata.count"
      | 
        ##
        "teidata.duration.iso"
      | 
        ##
        "teidata.duration.w3c"
      | 
        ##
        "teidata.enumerated"
      | 
        ##
        "teidata.interval"
      | 
        ##
        "teidata.language"
      | 
        ##
        "teidata.name"
      | 
        ##
        "teidata.namespace"
      | 
        ##
        "teidata.namespaceOrName"
      | 
        ##
        "teidata.nullOrName"
      | 
        ##
        "teidata.numeric"
      | 
        ##
        "teidata.outputMeasurement"
      | 
        ##
        "teidata.pattern"
      | 
        ##
        "teidata.point"
      | 
        ##
        "teidata.pointer"
      | 
        ##
        "teidata.prefix"
      | 
        ##
        "teidata.probCert"
      | 
        ##
        "teidata.probability"
      | 
        ##
        "teidata.replacement"
      | 
        ##
        "teidata.sex"
      | 
        ##
        "teidata.temporal.iso"
      | 
        ##
        "teidata.temporal.w3c"
      | 
        ##
        "teidata.temporal.working"
      | 
        ##
        "teidata.text"
      | 
        ##
        "teidata.truthValue"
      | 
        ##
        "teidata.unboundedInt"
      | 
        ##
        "teidata.version"
      | 
        ##
        "teidata.versionNumber"
      | 
        ##
        "teidata.word"
      | 
        ## (extended truth value) 
        "teidata.xTruthValue"
      | 
        ##
        "teidata.xmlName"
      | 
        ##
        "teidata.xpath"
    }?,
    ([
       a:documentation [
         "the name of a datatype in the list provided by "
         ns1:a [ href = "#XSD2" "XML Schemas: Part 2: Datatypes" ]
         "\x{a}" ~
         "                  "
       ]
     ]
     attribute name { xsd:NCName }?
     | 
       ## a pointer to a datatype defined in some datatype library
       attribute ref { xsd:anyURI }?),
    
    ## supplies a string representing a regular expression providing additional constraints on the strings used to represent values of this datatype
    attribute restriction { xsd:token }?,
    empty
  }
cust_dataFacet =
  [
    a:documentation [
      "Restricts the value of the strings used to represent values of a datatype, according to "
      ns1:a [ href = "#XSD2" "XML Schemas: Part 2: Datatypes" ]
      ". [22.5.3.1. Datatypes]"
    ]
  ]
  element tei:dataFacet {
    empty,
    cust_att.global.attributes,
    
    ## the name of the facet.
    attribute name {
      
      ##
      "length"
      | 
        ##
        "minLength"
      | 
        ##
        "maxLength"
      | 
        ##
        "pattern"
      | 
        ##
        "enumeration"
      | 
        ##
        "whiteSpace"
      | 
        ##
        "maxInclusive"
      | 
        ##
        "minInclusive"
      | 
        ##
        "maxExclusive"
      | 
        ##
        "minExclusive"
      | 
        ##
        "totalDigits"
      | 
        ##
        "fractionDigits"
    },
    
    ## the facet value.
    attribute value { xsd:string },
    empty
  }
cust_defaultVal =
  
  ## (default value) specifies the default declared value for an attribute. [22.5.3. Attribute List Specification]
  element tei:defaultVal {
    text,
    cust_att.global.attributes,
    cust_att.combinable.attributes,
    empty
  }
cust_valDesc =
  [
    a:documentation [
      "(value description) specifies any semantic or syntactic constraint on the value that an attribute may take, additional to the information carried by the "
      ns1:code [ "<datatype>" ]
      " element. [22.5.3. Attribute List Specification]"
    ]
  ]
  element tei:valDesc {
    cust_macro.phraseSeq.limited,
    cust_att.global.attributes,
    cust_att.translatable.attributes,
    cust_att.combinable.attributes,
    empty
  }
cust_valItem =
  
  ## documents a single value in a predefined list of values. [22.5.3. Attribute List Specification]
  element tei:valItem {
    (cust_model.glossLike*,
     (cust_model.descLike+,
      (cust_model.glossLike, cust_model.descLike*)*,
      cust_remarks*)?,
     cust_paramList?),
    cust_att.global.attributes,
    cust_att.combinable.attributes,
    
    ## specifies the value concerned.
    attribute ident { xsd:string },
    empty
  }
cust_valList =
  [
    a:documentation [
      "(value list) contains one or more "
      ns1:code [ "<valItem>" ]
      " elements defining possible values. [22.5.3. Attribute List Specification]"
    ]
  ]
  element tei:valList {
    cust_valItem*,
    cust_att.global.attributes,
    cust_att.combinable.attributes,
    
    ## specifies the extensibility of the list of values specified.
    [ a:defaultValue = "open" ]
    attribute type {
      
      ## only the values specified are permitted.
      "closed"
      | 
        ## (semi-open) all the values specified should be supported, but other values are legal and software should have appropriate fallback processing for them.
        "semi"
      | 
        ## the values specified are sample values only.
        "open"
    },
    empty
  }
cust_textNode =
  
  ## indicates the presence of a text node in a content model [22. Documentation Elements]
  element tei:textNode { empty, cust_att.global.attributes, empty }
cust_anyElement =
  
  ## indicates the presence of any elements in a content model [22. Documentation Elements]
  element tei:anyElement {
    empty,
    cust_att.global.attributes,
    cust_att.repeatable.attributes,
    
    ## supplies a list of namespaces to one of which the permitted elements must belong. 
    attribute require {
      list { xsd:anyURI+ }
    }?,
    
    ## supplies a list of namespaces or prefixed element names which are not permitted.
    attribute except {
      list {
        (xsd:anyURI { pattern = "[^/]+:.*" }
         | xsd:Name { pattern = ".+:.+" })+
      }
    }?,
    empty
  }
cust_empty =
  
  ## indicates the presence of an empty node within a content model [22. Documentation Elements]
  element tei:empty { empty, cust_att.global.attributes, empty }
cust_att.datable.custom.attributes =
  cust_att.datable.custom.attribute.when-custom,
  cust_att.datable.custom.attribute.notBefore-custom,
  cust_att.datable.custom.attribute.notAfter-custom,
  cust_att.datable.custom.attribute.from-custom,
  cust_att.datable.custom.attribute.to-custom,
  cust_att.datable.custom.attribute.datingPoint,
  cust_att.datable.custom.attribute.datingMethod
cust_att.datable.custom.attribute.when-custom =
  
  ## supplies the value of a date or time in some custom standard form.
  attribute when-custom {
    list {
      xsd:token { pattern = "[^\p{C}\p{Z}]+" }+
    }
  }?
cust_att.datable.custom.attribute.notBefore-custom =
  
  ## specifies the earliest possible date for the event in some custom standard form.
  attribute notBefore-custom {
    list {
      xsd:token { pattern = "[^\p{C}\p{Z}]+" }+
    }
  }?
cust_att.datable.custom.attribute.notAfter-custom =
  
  ## specifies the latest possible date for the event in some custom standard form.
  attribute notAfter-custom {
    list {
      xsd:token { pattern = "[^\p{C}\p{Z}]+" }+
    }
  }?
cust_att.datable.custom.attribute.from-custom =
  
  ## indicates the starting point of the period in some custom standard form.
  attribute from-custom {
    list {
      xsd:token { pattern = "[^\p{C}\p{Z}]+" }+
    }
  }?
cust_att.datable.custom.attribute.to-custom =
  
  ## indicates the ending point of the period in some custom standard form.
  attribute to-custom {
    list {
      xsd:token { pattern = "[^\p{C}\p{Z}]+" }+
    }
  }?
cust_att.datable.custom.attribute.datingPoint =
  
  ## supplies a pointer to some location defining a named point in time with reference to which the datable item is understood to have occurred
  attribute datingPoint { xsd:anyURI }?
cust_att.datable.custom.attribute.datingMethod =
  [
    a:documentation [
      "supplies a pointer to a "
      ns1:code [ "<calendar>" ]
      " element or other means of interpreting the values of the custom dating attributes."
    ]
  ]
  attribute datingMethod { xsd:anyURI }?
cust_model.persNamePart = notAllowed
cust_model.persNamePart_alternation = notAllowed
cust_model.persNamePart_sequence = empty
cust_model.persNamePart_sequenceOptional = empty
cust_model.persNamePart_sequenceOptionalRepeatable = empty
cust_model.persNamePart_sequenceRepeatable = notAllowed
cust_att.datable.iso.attributes =
  cust_att.datable.iso.attribute.when-iso,
  cust_att.datable.iso.attribute.notBefore-iso,
  cust_att.datable.iso.attribute.notAfter-iso,
  cust_att.datable.iso.attribute.from-iso,
  cust_att.datable.iso.attribute.to-iso
cust_att.datable.iso.attribute.when-iso =
  
  ## supplies the value of a date or time in a standard form.
  attribute when-iso {
    xsd:date
    | xsd:gYear
    | xsd:gMonth
    | xsd:gDay
    | xsd:gYearMonth
    | xsd:gMonthDay
    | xsd:time
    | xsd:dateTime
    | xsd:token { pattern = "[0-9.,DHMPRSTWYZ/:+\-]+" }
  }?
cust_att.datable.iso.attribute.notBefore-iso =
  
  ## specifies the earliest possible date for the event in standard form, e.g. yyyy-mm-dd.
  attribute notBefore-iso {
    xsd:date
    | xsd:gYear
    | xsd:gMonth
    | xsd:gDay
    | xsd:gYearMonth
    | xsd:gMonthDay
    | xsd:time
    | xsd:dateTime
    | xsd:token { pattern = "[0-9.,DHMPRSTWYZ/:+\-]+" }
  }?
cust_att.datable.iso.attribute.notAfter-iso =
  
  ## specifies the latest possible date for the event in standard form, e.g. yyyy-mm-dd.
  attribute notAfter-iso {
    xsd:date
    | xsd:gYear
    | xsd:gMonth
    | xsd:gDay
    | xsd:gYearMonth
    | xsd:gMonthDay
    | xsd:time
    | xsd:dateTime
    | xsd:token { pattern = "[0-9.,DHMPRSTWYZ/:+\-]+" }
  }?
cust_att.datable.iso.attribute.from-iso =
  
  ## indicates the starting point of the period in standard form.
  attribute from-iso {
    xsd:date
    | xsd:gYear
    | xsd:gMonth
    | xsd:gDay
    | xsd:gYearMonth
    | xsd:gMonthDay
    | xsd:time
    | xsd:dateTime
    | xsd:token { pattern = "[0-9.,DHMPRSTWYZ/:+\-]+" }
  }?
cust_att.datable.iso.attribute.to-iso =
  
  ## indicates the ending point of the period in standard form.
  attribute to-iso {
    xsd:date
    | xsd:gYear
    | xsd:gMonth
    | xsd:gDay
    | xsd:gYearMonth
    | xsd:gMonthDay
    | xsd:time
    | xsd:dateTime
    | xsd:token { pattern = "[0-9.,DHMPRSTWYZ/:+\-]+" }
  }?
cust_orgName =
  
  ## (organization name) contains an organizational name. [13.2.2. Organizational Names]
  element tei:orgName {
    cust_macro.phraseSeq,
    cust_att.global.attributes,
    cust_att.datable.attributes,
    cust_att.editLike.attributes,
    cust_att.personal.attributes,
    cust_att.typed.attributes,
    empty
  }
cust_persName =
  
  ## (personal name) contains a proper noun or proper-noun phrase referring to a person, possibly including one or more of the person's forenames, surnames, honorifics, added names, etc. [13.2.1. Personal Names]
  element tei:persName {
    cust_macro.phraseSeq,
    cust_att.global.attributes,
    cust_att.datable.attributes,
    cust_att.editLike.attributes,
    cust_att.personal.attributes,
    cust_att.typed.attributes,
    empty
  }
cust_placeName =
  
  ## (place name) contains an absolute or relative place name. [13.2.3. Place Names]
  element tei:placeName {
    cust_macro.phraseSeq,
    cust_att.datable.attributes,
    cust_att.editLike.attributes,
    cust_att.global.attributes,
    cust_att.personal.attributes,
    cust_att.typed.attributes,
    empty
  }
cust_att.tableDecoration.attributes =
  cust_att.tableDecoration.attribute.role,
  cust_att.tableDecoration.attribute.rows,
  cust_att.tableDecoration.attribute.cols
cust_att.tableDecoration.attribute.role =
  
  ## (role) indicates the kind of information held in this cell or in each cell of this row.
  ## Suggested values include: 1] label; 2] data
  [ a:defaultValue = "data" ]
  attribute role {
    
    ## labelling or descriptive information only.
    "label"
    | 
      ## data values.
      "data"
    | xsd:token { pattern = "[^\p{C}\p{Z}]+" }
  }?
cust_att.tableDecoration.attribute.rows =
  
  ## (rows) indicates the number of rows occupied by this cell or row.
  [ a:defaultValue = "1" ] attribute rows { xsd:nonNegativeInteger }?
cust_att.tableDecoration.attribute.cols =
  
  ## (columns) indicates the number of columns occupied by this cell or row.
  [ a:defaultValue = "1" ] attribute cols { xsd:nonNegativeInteger }?
cust_table =
  
  ## (table) contains text displayed in tabular form, in rows and columns. [14.1.1. TEI Tables]
  element tei:table {
    ((cust_model.headLike | cust_model.global)*,
     ((cust_row, cust_model.global*)+
      | (cust_model.graphicLike, cust_model.global*)+),
     (cust_model.divBottom, cust_model.global*)*),
    cust_att.global.attributes,
    cust_att.typed.attributes,
    
    ## (rows) indicates the number of rows in the table.
    attribute rows { xsd:nonNegativeInteger }?,
    
    ## (columns) indicates the number of columns in each row of the table.
    attribute cols { xsd:nonNegativeInteger }?,
    empty
  }
cust_row =
  
  ## (row) contains one row of a table. [14.1.1. TEI Tables]
  element tei:row {
    cust_cell+,
    cust_att.global.attributes,
    cust_att.tableDecoration.attributes,
    empty
  }
cust_cell =
  
  ## (cell) contains one cell of a table. [14.1.1. TEI Tables]
  element tei:cell {
    cust_macro.specialPara,
    cust_att.global.attributes,
    cust_att.tableDecoration.attributes,
    empty
  }
cust_formula =
  
  ## (formula) contains a mathematical or other formula. [14.2. Formulæ and Mathematical Expressions]
  element tei:formula {
    (text | cust_model.graphicLike | cust_model.hiLike)*,
    cust_att.global.attributes,
    cust_att.notated.attributes,
    empty
  }
cust_figure =
  
  ## (figure) groups elements representing or containing graphic information such as an illustration, formula, or figure. [14.4. Specific Elements for Graphic Images]
  element tei:figure {
    (cust_model.headLike
     | cust_model.common
     | cust_figDesc
     | cust_model.graphicLike
     | cust_model.global
     | cust_model.divBottom)*,
    cust_att.global.attributes,
    cust_att.placement.attributes,
    cust_att.typed.attributes,
    cust_att.written.attributes,
    empty
  }
cust_figDesc =
  
  ## (description of figure) contains a brief prose description of the appearance or content of a graphic figure, for use when documenting an image without displaying it. [14.4. Specific Elements for Graphic Images]
  element tei:figDesc {
    cust_macro.limitedContent, cust_att.global.attributes, empty
  }
cust_fallback =
  
  ##
  element fallback { (text | anyElement-fallback)+ }
start =
  cust_TEI
  | cust_body
  | cust_schemaSpec
  | cust_elementSpec
  | cust_classSpec
  | cust_macroSpec
  | cust_div
sch:pattern [
  id = "tei_customization-mode-child-sanity-constraint-rule-66"
  "\x{a}" ~
  "      "
  sch:rule [
    context = "*[ @mode eq 'delete' ]"
    "\x{a}" ~
    "                        "
    sch:report [
      test = "child::*"
      "The specification element ＜"
      sch:name [ ]
      "＞ has both a\x{a}" ~
      '                      mode= of "delete" and child elements, which is incongruous'
    ]
    "\x{a}" ~
    "                     "
  ]
  "\x{a}" ~
  "      "
  sch:rule [
    context =
      "                       tei:valList[ @mode = ('add','change','replace') ]                     | tei:moduleSpec[ @mode = ('add','change','replace') ]                     | tei:schemaSpec[ @mode = ('add','change','replace') ]                     | tei:elementSpec[ @mode = ('add','change','replace') ]                     | tei:classSpec[ @mode = ('add','change','replace') ]                     | tei:macroSpec[ @mode = ('add','change','replace') ]                     | tei:constraintSpec[ @mode = ('add','change','replace') ]                     | tei:attDef[ @mode = ('add','change','replace') ]                     | tei:classes[ @mode = ('add','change','replace') ]"
    "\x{a}" ~
    "                        "
    sch:assert [
      test = "child::* | (@* except (@mode, @ident))"
      "The specification\x{a}" ~
      "                      element ＜"
      sch:name [ ]
      '＞ has a mode= of "'
      sch:value-of [ select = "@mode" ]
      '", but\x{a}' ~
      "                      does not have any child elements or schema-changing attributes, which is\x{a}" ~
      "                      incongruous"
    ]
    "\x{a}" ~
    "                     "
  ]
  "\x{a}" ~
  "   "
]
sch:pattern [
  id = "tei_customization-tei-source-constraint-rule-68"
  "\x{a}" ~
  "      "
  sch:rule [
    context =
      " tei:classRef[@source]                                      |tei:dataRef[@source]                                      |tei:elementRef[@source]                                      |tei:macroRef[@source]                                      |tei:moduleRef[@source]                                      |tei:schemaSpec[@source]"
    "\x{a}" ~
    "                        "
    sch:assert [
      test =
        "matches(normalize-space(@source), '^tei:([0-9]+\.[0-9]+\.[0-9]+|current)$')"
      role = "information"
      "The @source attribute of ＜"
      sch:name [ ]
      "＞ is not in the\x{a}" ~
      '                      recommended format, which is either "tei:current" or "tei:x.y.z", where x.y.z is a version number.'
    ]
    "\x{a}" ~
    "                     "
  ]
  "\x{a}" ~
  "   "
]
