namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0" 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" default 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 2023-04-04T17:12:19Z. . # TEI Edition: Version 4.6.0. Last updated on # 4th April 2023, revision f18deffba # TEI Edition Location: https://www.tei-c.org/Vault/P5/Version 4.6.0/ # # TEI material can be licensed differently depending on the use you intend to make of it. Hence it is made available under both the CC+BY and BSD-2 licences. The CC+BY licence is generally appropriate for usages which treat TEI content as data or documentation. The BSD-2 licence is generally appropriate for usage of TEI content in a software environment. For further information or clarification, please contact the TEI Consortium (info@tei-c.org). macro.abContent = (text | model.paraPart | ab)* macro.paraContent = (text | model.paraPart)* macro.limitedContent = (text | model.limitedPhrase | model.inter)* macro.phraseSeq = (text | model.gLike | model.attributable | model.phrase | model.global)* macro.phraseSeq.limited = (text | model.limitedPhrase | model.global)* macro.specialPara = (text | model.gLike | model.phrase | model.inter | model.divPart | model.global)* macro.xtext = (text | 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 = "d9e125670-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-constraint = element * - (tei:* | teix:egXML) { attribute * { text }*, (text | anyElement-constraint)* } anyElement-datatype = element * - (tei:* | teix:egXML) { attribute * { text }*, (text | anyElement-datatype)* } >> sch:pattern [ id = "d9e127054-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}" ~ " " ] att.anchoring.attributes = att.anchoring.attribute.anchored, att.anchoring.attribute.targetEnd 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 }? 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 { pattern = "\S+" }+ } }? att.ascribed.attributes = att.ascribed.attribute.who att.ascribed.attribute.who = ## indicates the person, or group of people, to whom the element content is ascribed. attribute who { list { xsd:anyURI { pattern = "\S+" }+ } }? att.ascribed.directed.attributes = att.ascribed.attributes, att.ascribed.directed.attribute.toWhom 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 { pattern = "\S+" }+ } }? att.canonical.attributes = att.canonical.attribute.key, att.canonical.attribute.ref 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 }? 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 { pattern = "\S+" }+ } }? att.ranging.attributes = att.ranging.attribute.atLeast, att.ranging.attribute.atMost, att.ranging.attribute.min, att.ranging.attribute.max, att.ranging.attribute.confidence att.ranging.attribute.atLeast = ## gives a minimum estimated value for the approximate measurement. attribute atLeast { xsd:double | xsd:token { pattern = "(\-?[\d]+/\-?[\d]+)" } | xsd:decimal }? att.ranging.attribute.atMost = ## gives a maximum estimated value for the approximate measurement. attribute atMost { xsd:double | xsd:token { pattern = "(\-?[\d]+/\-?[\d]+)" } | xsd:decimal }? 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 }? 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 }? 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 }? att.dimensions.attributes = att.ranging.attributes, att.dimensions.attribute.unit, att.dimensions.attribute.quantity, att.dimensions.attribute.extent, att.dimensions.attribute.precision, att.dimensions.attribute.scope 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}]+" } }? att.dimensions.attribute.quantity = ## specifies the length in the units specified attribute quantity { xsd:double | xsd:token { pattern = "(\-?[\d]+/\-?[\d]+)" } | xsd:decimal }? 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 }? att.dimensions.attribute.precision = ## characterizes the precision of the values specified by the other attributes. attribute precision { ## "high" | ## "medium" | ## "low" | ## "unknown" }? 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}]+" } }? att.written.attributes = att.written.attribute.hand att.written.attribute.hand = [ a:documentation [ "points to a " ns1:code [ "" ] " element describing the hand considered responsible for the content of the element concerned." ] ] attribute hand { xsd:anyURI { pattern = "\S+" } }? att.damaged.attributes = att.dimensions.attributes, att.written.attributes, att.damaged.attribute.agent, att.damaged.attribute.degree, att.damaged.attribute.group att.damaged.attribute.agent = ## categorizes the cause of the damage, if it can be identified. ## Sample values include: 1] rubbing; 2] mildew; 3] smoke attribute agent { xsd:token { pattern = "[^\p{C}\p{Z}]+" } }? att.damaged.attribute.degree = [ a:documentation [ "provides a coded representation of the degree of damage, either as a number between 0 (undamaged) and 1 (very extensively damaged), or as one of the codes high, medium, low, or unknown. The " ns1:code [ "" ] " element with the " ns1:code [ "@degree" ] " attribute should only be used where the text may be read with some confidence; text supplied from other sources should be tagged as " ns1:code [ "" ] "." ] ] attribute degree { xsd:double | ( ## "high" | ## "medium" | ## "low" | ## "unknown") }? att.damaged.attribute.group = ## assigns an arbitrary number to each stretch of damage regarded as forming part of the same physical phenomenon. attribute group { xsd:nonNegativeInteger }? att.breaking.attributes = att.breaking.attribute.break att.breaking.attribute.break = ## indicates whether or not the element bearing this attribute should be considered to mark the end of an orthographic token in the same way as whitespace. attribute break { xsd:token { pattern = "[^\p{C}\p{Z}]+" } }? att.cReferencing.attributes = att.cReferencing.attribute.cRef 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 [ "" ] " element in the TEI header" ] ] attribute cRef { xsd:string }? att.datable.w3c.attributes = att.datable.w3c.attribute.when, att.datable.w3c.attribute.notBefore, att.datable.w3c.attribute.notAfter, att.datable.w3c.attribute.from, att.datable.w3c.attribute.to 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 }? 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 }? 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 }? 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 }? 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_all-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_all-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_all-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}" ~ " " ] att.datable.attributes = att.datable.w3c.attributes, att.datable.iso.attributes, att.datable.custom.attributes, att.datable.attribute.calendar, att.datable.attribute.period att.datable.attribute.calendar = ## indicates one or more systems or calendars to which the date represented by the content of this element belongs. attribute calendar { list { xsd:anyURI { pattern = "\S+" }+ } }? sch:pattern [ id = "tei_all-att.datable-calendar-calendar-constraint-rule-4" "\x{a}" ~ " " sch:rule [ context = "tei:*[@calendar]" "\x{a}" ~ " " sch:assert [ test = "string-length( normalize-space(.) ) gt 0" " @calendar indicates one or more\x{a}" ~ " systems or calendars to which the date represented by the content of this element belongs,\x{a}" ~ " but this " sch:name [ ] " element has no textual content." ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] att.datable.attribute.period = [ a:documentation [ "supplies pointers to one or more definitions of named periods of time (typically " ns1:code [ "" ] "s or " ns1:code [ "" ] "s) within which the datable item is understood to have occurred." ] ] attribute period { list { xsd:anyURI { pattern = "\S+" }+ } }? att.datcat.attributes = att.datcat.attribute.datcat, att.datcat.attribute.valueDatcat, att.datcat.attribute.targetDatcat att.datcat.attribute.datcat = [ a:documentation [ "provides a pointer to a definition of, and/or general information about, (a) an information container (element or attribute) or (b) a value of an information container (element content or attribute value), by referencing an external taxonomy or ontology. If " ns1:code [ "@valueDatcat" ] " is present in the immediate context, this attribute takes on role (a), while " ns1:code [ "@valueDatcat" ] " performs role (b)." ] ] attribute datcat { list { xsd:anyURI { pattern = "\S+" }+ } }? att.datcat.attribute.valueDatcat = [ a:documentation [ "provides a definition of, and/or general information about a value of an information container (element content or attribute value), by reference to an external taxonomy or ontology. Used especially where a contrast with " ns1:code [ "@datcat" ] " is needed." ] ] attribute valueDatcat { list { xsd:anyURI { pattern = "\S+" }+ } }? att.datcat.attribute.targetDatcat = [ a:documentation [ "provides a definition of, and/or general information about, information structure of an object referenced or modeled by the containing element, by reference to an external taxonomy or ontology. This attribute has the characteristics of the " ns1:code [ "@datcat" ] " attribute, except that it addresses not its containing element, but an object that is being referenced or modeled by its containing element." ] ] attribute targetDatcat { list { xsd:anyURI { pattern = "\S+" }+ } }? att.declarable.attributes = att.declarable.attribute.default 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" }? att.declaring.attributes = att.declaring.attribute.decls att.declaring.attribute.decls = ## (declarations) 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 { pattern = "\S+" }+ } }? att.fragmentable.attributes = att.fragmentable.attribute.part 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" }? att.divLike.attributes = att.metrical.attributes, att.fragmentable.attributes, att.divLike.attribute.org, att.divLike.attribute.sample 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" }? 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" }? att.docStatus.attributes = att.docStatus.attribute.status 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}]+" } }? att.duration.w3c.attributes = att.duration.w3c.attribute.dur att.duration.w3c.attribute.dur = ## (duration) indicates the length of this element in time. attribute dur { xsd:duration }? att.global.responsibility.attributes = att.global.responsibility.attribute.cert, att.global.responsibility.attribute.resp att.global.responsibility.attribute.cert = ## (certainty) signifies the degree of certainty associated with the intervention or interpretation. attribute cert { xsd:double | ( ## "high" | ## "medium" | ## "low" | ## "unknown") }? att.global.responsibility.attribute.resp = ## (responsible party) indicates the agency responsible for the intervention or interpretation, for example an editor or transcriber. attribute resp { list { xsd:anyURI { pattern = "\S+" }+ } }? att.editLike.attributes = att.editLike.attribute.evidence, att.editLike.attribute.instant 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}]+" })+ } }? att.editLike.attribute.instant = ## indicates whether this is an instant revision or not. [ a:defaultValue = "false" ] attribute instant { xsd:boolean | ( ## "unknown" | ## "inapplicable") }? att.global.rendition.attributes = att.global.rendition.attribute.rend, att.global.rendition.attribute.style, att.global.rendition.attribute.rendition att.global.rendition.attribute.rend = ## (rendition) indicates how the element in question was rendered or presented in the source text. attribute rend { list { xsd:token { pattern = "[^\p{C}\p{Z}]+" }+ } }? att.global.rendition.attribute.style = ## contains an expression in some formal style definition language which defines the rendering or presentation used for this element in the source text attribute style { xsd:string }? att.global.rendition.attribute.rendition = ## points to a description of the rendering or presentation used for this element in the source text. attribute rendition { list { xsd:anyURI { pattern = "\S+" }+ } }? att.global.source.attributes = att.global.source.attribute.source att.global.source.attribute.source = ## specifies the source from which some aspect of this element is drawn. attribute source { list { xsd:anyURI { pattern = "\S+" }+ } }? sch:pattern [ id = "tei_all-att.global.source-source-only_1_ODD_source-constraint-rule-5" "\x{a}" ~ " " sch:rule [ context = "tei:*[@source]" "\x{a}" ~ " " sch:let [ name = "srcs" value = "tokenize( normalize-space(@source),' ')" ] "\x{a}" ~ " " sch:report [ test = "( self::tei:classRef | self::tei:dataRef | self::tei:elementRef | self::tei:macroRef | self::tei:moduleRef | self::tei:schemaSpec ) and $srcs[2]" "\x{a}" ~ " When used on a schema description element (like\x{a}" ~ " " sch:value-of [ select = "name(.)" ] "), the @source attribute\x{a}" ~ " should have only 1 value. (This one has " sch:value-of [ select = "count($srcs)" ] ".)\x{a}" ~ " " ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] att.global.attributes = att.global.rendition.attributes, att.global.linking.attributes, att.global.analytic.attributes, att.global.facs.attributes, att.global.change.attributes, att.global.responsibility.attributes, att.global.source.attributes, att.global.attribute.xmlid, att.global.attribute.n, att.global.attribute.xmllang, att.global.attribute.xmlbase, att.global.attribute.xmlspace att.global.attribute.xmlid = ## (identifier) provides a unique identifier for the element bearing the attribute. attribute xml:id { xsd:ID }? 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 }? 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 | ( ## "") }? 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 { pattern = "\S+" } }? 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" }? att.handFeatures.attributes = att.handFeatures.attribute.scribe, att.handFeatures.attribute.scribeRef, att.handFeatures.attribute.script, att.handFeatures.attribute.scriptRef, att.handFeatures.attribute.medium, att.handFeatures.attribute.scope att.handFeatures.attribute.scribe = ## gives a name or other identifier for the scribe believed to be responsible for this hand. attribute scribe { xsd:Name }? att.handFeatures.attribute.scribeRef = [ a:documentation [ "points to a full description of the scribe concerned, typically supplied by a " ns1:code [ "" ] " element elsewhere in the description." ] ] attribute scribeRef { list { xsd:anyURI { pattern = "\S+" }+ } }? att.handFeatures.attribute.script = ## characterizes the particular script or writing style used by this hand, for example secretary, copperplate, Chancery, Italian, etc. attribute script { list { xsd:Name+ } }? att.handFeatures.attribute.scriptRef = [ a:documentation [ "points to a full description of the script or writing style used by this hand, typically supplied by a " ns1:code [ "" ] " element elsewhere in the description." ] ] attribute scriptRef { list { xsd:anyURI { pattern = "\S+" }+ } }? att.handFeatures.attribute.medium = ## describes the tint or type of ink, e.g. brown, or other writing medium, e.g. pencil attribute medium { list { xsd:token { pattern = "[^\p{C}\p{Z}]+" }+ } }? att.handFeatures.attribute.scope = ## specifies how widely this hand is used in the manuscript. attribute scope { ## only this hand is used throughout the manuscript "sole" | ## this hand is used through most of the manuscript "major" | ## this hand is used occasionally in the manuscript "minor" }? att.internetMedia.attributes = att.internetMedia.attribute.mimeType 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}]+" }+ } }? att.media.attributes = att.internetMedia.attributes, att.media.attribute.width, att.media.attribute.height, att.media.attribute.scale 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|ch|rem|vw|vh|vmin|vmax)" } }? 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|ch|rem|vw|vh|vmin|vmax)" } }? 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 }? att.resourced.attributes = att.resourced.attribute.url att.resourced.attribute.url = ## (uniform resource locator) specifies the URL from which the media concerned may be obtained. attribute url { xsd:anyURI { pattern = "\S+" } } att.interpLike.attributes = att.interpLike.attribute.type, att.interpLike.attribute.subtype, att.interpLike.attribute.inst att.interpLike.attribute.type = ## indicates what kind of phenomenon is being noted in the passage. ## Sample values include: 1] image; 2] character; 3] theme; 4] allusion attribute type { xsd:token { pattern = "[^\p{C}\p{Z}]+" } }? att.interpLike.attribute.subtype = ## (subtype) provides a sub-categorization of the phenomenon is being noted in the passage, if needed attribute subtype { xsd:token { pattern = "[^\p{C}\p{Z}]+" } }? att.interpLike.attribute.inst = ## (instances) points to instances of the analysis or interpretation represented by the current element. attribute inst { list { xsd:anyURI { pattern = "\S+" }+ } }? att.measurement.attributes = att.measurement.attribute.unit, att.measurement.attribute.unitRef, att.measurement.attribute.quantity, att.measurement.attribute.commodity 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}]+" } }? att.measurement.attribute.unitRef = [ a:documentation [ "points to a unique identifier stored in the " ns1:code [ "@xml:id" ] " of a " ns1:code [ "" ] " element that defines a unit of measure." ] ] attribute unitRef { xsd:anyURI { pattern = "\S+" } }? 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 }? 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_all-att.measurement-att-measurement-unitRef-constraint-rule-6" "\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}" ~ " " ] att.naming.attributes = att.canonical.attributes, att.naming.attribute.role, att.naming.attribute.nymRef 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}]+" }+ } }? 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 { pattern = "\S+" }+ } }? att.notated.attributes = att.notated.attribute.notation att.notated.attribute.notation = ## names the notation used for the content of the element. attribute notation { xsd:token { pattern = "[^\p{C}\p{Z}]+" } }? att.placement.attributes = att.placement.attribute.place 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}]+" })+ } }? att.typed.attributes = att.typed.attribute.type, att.typed.attribute.subtype 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}]+" } }? 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_all-att.typed-subtypeTyped-constraint-rule-7" "\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}" ~ " " ] att.pointing.attributes = att.pointing.attribute.targetLang, att.pointing.attribute.target, att.pointing.attribute.evaluate 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_all-att.pointing-targetLang-targetLang-constraint-rule-8" "\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}" ~ " " ] att.pointing.attribute.target = ## specifies the destination of the reference by supplying one or more URI References attribute target { list { xsd:anyURI { pattern = "\S+" }+ } }? 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" }? att.pointing.group.attributes = att.pointing.attributes, att.typed.attributes, att.pointing.group.attribute.domains, att.pointing.group.attribute.targFunc att.pointing.group.attribute.domains = ## optionally specifies the identifiers of the elements within which all elements indicated by the contents of this element lie. attribute domains { list { xsd:anyURI { pattern = "\S+" }, xsd:anyURI { pattern = "\S+" }, xsd:anyURI { pattern = "\S+" }* } }? att.pointing.group.attribute.targFunc = [ a:documentation [ "(target function) describes the function of each of the values of the " ns1:code [ "@target" ] " attribute of the enclosed " ns1:code [ "" ] ", " ns1:code [ "" ] ", or " ns1:code [ "" ] " tags." ] ] attribute targFunc { list { xsd:token { pattern = "[^\p{C}\p{Z}]+" }, xsd:token { pattern = "[^\p{C}\p{Z}]+" }, xsd:token { pattern = "[^\p{C}\p{Z}]+" }* } }? att.scoping.attributes = att.scoping.attribute.target, att.scoping.attribute.match att.scoping.attribute.target = ## points at one or more sets of zero or more elements each. attribute target { list { xsd:anyURI { pattern = "\S+" }+ } }? att.scoping.attribute.match = [ a:documentation [ "supplies an XPath selection pattern using the syntax defined in which identifies a set of nodes, selected within the context identified by the " ns1:code [ "@target" ] " attribute if this is supplied, or within the context of the parent element if it is not." ] ] attribute match { text }? att.segLike.attributes = att.metrical.attributes, att.datcat.attributes, att.fragmentable.attributes, att.segLike.attribute.function att.segLike.attribute.function = ## (function) characterizes the function of the segment. attribute function { xsd:token { pattern = "[^\p{C}\p{Z}]+" } }? att.sortable.attributes = att.sortable.attribute.sortKey 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}]+" } }? att.edition.attributes = att.edition.attribute.ed, att.edition.attribute.edRef att.edition.attribute.ed = ## (edition) supplies a sigil or other arbitrary identifier for the source edition in which the associated feature (for example, a page, column, or line break) occurs at this point in the text. attribute ed { list { xsd:token { pattern = "[^\p{C}\p{Z}]+" }+ } }? att.edition.attribute.edRef = ## (edition reference) provides a pointer to the source edition in which the associated feature (for example, a page, column, or line break) occurs at this point in the text. attribute edRef { list { xsd:anyURI { pattern = "\S+" }+ } }? att.spanning.attributes = att.spanning.attribute.spanTo att.spanning.attribute.spanTo = ## indicates the end of a span initiated by the element bearing this attribute. attribute spanTo { xsd:anyURI { pattern = "\S+" } }? sch:pattern [ id = "tei_all-att.spanning-spanTo-spanTo-points-to-following-constraint-rule-9" "\x{a}" ~ " " sch:rule [ context = "tei:*[@spanTo]" "\x{a}" ~ " " sch:assert [ test = "id(substring(@spanTo,2)) and following::*[@xml:id=substring(current()/@spanTo,2)]" "\x{a}" ~ "The element indicated by @spanTo (" sch:value-of [ select = "@spanTo" ] ") must follow the current element " sch:name [ ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] "\x{a}" ~ " " ] att.styleDef.attributes = att.styleDef.attribute.scheme, att.styleDef.attribute.schemeVersion 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" }? 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_all-att.styleDef-schemeVersion-schemeVersionRequiresScheme-constraint-rule-10" "\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}" ~ " " ] att.timed.attributes = att.duration.attributes, att.timed.attribute.start, att.timed.attribute.end att.timed.attribute.start = ## indicates the location within a temporal alignment at which this element begins. attribute start { xsd:anyURI { pattern = "\S+" } }? att.timed.attribute.end = ## indicates the location within a temporal alignment at which this element ends. attribute end { xsd:anyURI { pattern = "\S+" } }? att.transcriptional.attributes = att.editLike.attributes, att.written.attributes, att.transcriptional.attribute.status, att.transcriptional.attribute.cause, att.transcriptional.attribute.seq 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}]+" } }? att.transcriptional.attribute.cause = ## documents the presumed cause for the intervention. attribute cause { xsd:token { pattern = "[^\p{C}\p{Z}]+" } }? 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 }? att.citing.attributes = att.citing.attribute.unit, att.citing.attribute.from, att.citing.attribute.to 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}]+" } }? 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}]+" } }? 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}]+" } }? model.nameLike.agent = name | orgName | persName model.nameLike.agent_alternation = name | orgName | persName model.nameLike.agent_sequence = name, orgName, persName model.nameLike.agent_sequenceOptional = name?, orgName?, persName? model.nameLike.agent_sequenceOptionalRepeatable = name*, orgName*, persName* model.nameLike.agent_sequenceRepeatable = name+, orgName+, persName+ model.segLike = s | cl | phr | w | m | c | pc | seg model.segLike_alternation = s | cl | phr | w | m | c | pc | seg model.segLike_sequence = s, cl, phr, w, m, c, pc, seg model.segLike_sequenceOptional = s?, cl?, phr?, w?, m?, c?, pc?, seg? model.segLike_sequenceOptionalRepeatable = s*, cl*, phr*, w*, m*, c*, pc*, seg* model.segLike_sequenceRepeatable = s+, cl+, phr+, w+, m+, c+, pc+, seg+ model.hiLike = hi | q model.hiLike_alternation = hi | q model.hiLike_sequence = hi, q model.hiLike_sequenceOptional = hi?, q? model.hiLike_sequenceOptionalRepeatable = hi*, q* model.hiLike_sequenceRepeatable = hi+, q+ model.emphLike = foreign | emph | distinct | mentioned | soCalled | gloss | term | title | code | ident model.emphLike_alternation = foreign | emph | distinct | mentioned | soCalled | gloss | term | title | code | ident model.emphLike_sequence = foreign, emph, distinct, mentioned, soCalled, gloss, term, title, code, ident model.emphLike_sequenceOptional = foreign?, emph?, distinct?, mentioned?, soCalled?, gloss?, term?, title?, code?, ident? model.emphLike_sequenceOptionalRepeatable = foreign*, emph*, distinct*, mentioned*, soCalled*, gloss*, term*, title*, code*, ident* model.emphLike_sequenceRepeatable = foreign+, emph+, distinct+, mentioned+, soCalled+, gloss+, term+, title+, code+, ident+ model.highlighted = model.hiLike | model.emphLike model.highlighted_alternation = model.hiLike_alternation | model.emphLike_alternation model.highlighted_sequence = model.hiLike_sequence, model.emphLike_sequence model.highlighted_sequenceOptional = model.hiLike_sequenceOptional?, model.emphLike_sequenceOptional? model.highlighted_sequenceOptionalRepeatable = model.hiLike_sequenceOptionalRepeatable*, model.emphLike_sequenceOptionalRepeatable* model.highlighted_sequenceRepeatable = model.hiLike_sequenceRepeatable+, model.emphLike_sequenceRepeatable+ model.dateLike = date | time model.dateLike_alternation = date | time model.dateLike_sequence = date, time model.dateLike_sequenceOptional = date?, time? model.dateLike_sequenceOptionalRepeatable = date*, time* model.dateLike_sequenceRepeatable = date+, time+ model.dimLike = height | depth | width model.measureLike = num | measure | measureGrp | unit | dim | height | depth | width | geo model.measureLike_alternation = num | measure | measureGrp | unit | dim | height | depth | width | geo model.measureLike_sequence = num, measure, measureGrp, unit, dim, height, depth, width, geo model.measureLike_sequenceOptional = num?, measure?, measureGrp?, unit?, dim?, height?, depth?, width?, geo? model.measureLike_sequenceOptionalRepeatable = num*, measure*, measureGrp*, unit*, dim*, height*, depth*, width*, geo* model.measureLike_sequenceRepeatable = num+, measure+, measureGrp+, unit+, dim+, height+, depth+, width+, geo+ model.egLike = eg | egXML model.egLike_alternation = eg | egXML model.egLike_sequence = eg, egXML model.egLike_sequenceOptional = eg?, egXML? model.egLike_sequenceOptionalRepeatable = eg*, egXML* model.egLike_sequenceRepeatable = eg+, egXML+ model.graphicLike = media | graphic | binaryObject | formula model.graphicLike_alternation = media | graphic | binaryObject | formula model.graphicLike_sequence = media, graphic, binaryObject, formula model.graphicLike_sequenceOptional = media?, graphic?, binaryObject?, formula? model.graphicLike_sequenceOptionalRepeatable = media*, graphic*, binaryObject*, formula* model.graphicLike_sequenceRepeatable = media+, graphic+, binaryObject+, formula+ model.offsetLike = offset | geogFeat model.offsetLike_alternation = offset | geogFeat model.offsetLike_sequence = offset, geogFeat model.offsetLike_sequenceOptional = offset?, geogFeat? model.offsetLike_sequenceOptionalRepeatable = offset*, geogFeat* model.offsetLike_sequenceRepeatable = offset+, geogFeat+ model.pPart.msdesc = catchwords | dimensions | heraldry | locus | locusGrp | material | objectType | origDate | origPlace | secFol | signatures | stamp | watermark model.pPart.msdesc_alternation = catchwords | dimensions | heraldry | locus | locusGrp | material | objectType | origDate | origPlace | secFol | signatures | stamp | watermark model.pPart.msdesc_sequence = catchwords, dimensions, heraldry, locus, locusGrp, material, objectType, origDate, origPlace, secFol, signatures, stamp, watermark model.pPart.msdesc_sequenceOptional = catchwords?, dimensions?, heraldry?, locus?, locusGrp?, material?, objectType?, origDate?, origPlace?, secFol?, signatures?, stamp?, watermark? model.pPart.msdesc_sequenceOptionalRepeatable = catchwords*, dimensions*, heraldry*, locus*, locusGrp*, material*, objectType*, origDate*, origPlace*, secFol*, signatures*, stamp*, watermark* model.pPart.msdesc_sequenceRepeatable = catchwords+, dimensions+, heraldry+, locus+, locusGrp+, material+, objectType+, origDate+, origPlace+, secFol+, signatures+, stamp+, watermark+ model.pPart.editorial = choice | abbr | expan | ex | am | subst model.pPart.editorial_alternation = choice | abbr | expan | ex | am | subst model.pPart.editorial_sequence = choice, abbr, expan, ex, am, subst model.pPart.editorial_sequenceOptional = choice?, abbr?, expan?, ex?, am?, subst? model.pPart.editorial_sequenceOptionalRepeatable = choice*, abbr*, expan*, ex*, am*, subst* model.pPart.editorial_sequenceRepeatable = choice+, abbr+, expan+, ex+, am+, subst+ model.pPart.transcriptional = sic | corr | reg | orig | add | del | unclear | damage | handShift | restore | supplied | surplus | secl | mod | redo | retrace | undo model.pPart.transcriptional_alternation = sic | corr | reg | orig | add | del | unclear | damage | handShift | restore | supplied | surplus | secl | mod | redo | retrace | undo model.pPart.transcriptional_sequence = sic, corr, reg, orig, add, del, unclear, damage, handShift, restore, supplied, surplus, secl, mod, redo, retrace, undo model.pPart.transcriptional_sequenceOptional = sic?, corr?, reg?, orig?, add?, del?, unclear?, damage?, handShift?, restore?, supplied?, surplus?, secl?, mod?, redo?, retrace?, undo? model.pPart.transcriptional_sequenceOptionalRepeatable = sic*, corr*, reg*, orig*, add*, del*, unclear*, damage*, handShift*, restore*, supplied*, surplus*, secl*, mod*, redo*, retrace*, undo* model.pPart.transcriptional_sequenceRepeatable = sic+, corr+, reg+, orig+, add+, del+, unclear+, damage+, handShift+, restore+, supplied+, surplus+, secl+, mod+, redo+, retrace+, undo+ model.pPart.edit = model.pPart.editorial | model.pPart.transcriptional model.pPart.edit_alternation = model.pPart.editorial_alternation | model.pPart.transcriptional_alternation model.pPart.edit_sequence = model.pPart.editorial_sequence, model.pPart.transcriptional_sequence model.pPart.edit_sequenceOptional = model.pPart.editorial_sequenceOptional?, model.pPart.transcriptional_sequenceOptional? model.pPart.edit_sequenceOptionalRepeatable = model.pPart.editorial_sequenceOptionalRepeatable*, model.pPart.transcriptional_sequenceOptionalRepeatable* model.pPart.edit_sequenceRepeatable = model.pPart.editorial_sequenceRepeatable+, model.pPart.transcriptional_sequenceRepeatable+ model.linePart = model.hiLike | choice | add | del | unclear | w | c | pc | zone | path | damage | handShift | restore | line | mod | redo | retrace | undo | seg model.ptrLike = ptr | ref | listRef model.ptrLike_alternation = ptr | ref | listRef model.ptrLike_sequence = ptr, ref, listRef model.ptrLike_sequenceOptional = ptr?, ref?, listRef? model.ptrLike_sequenceOptionalRepeatable = ptr*, ref*, listRef* model.ptrLike_sequenceRepeatable = ptr+, ref+, listRef+ model.lPart = caesura | rhyme model.lPart_alternation = caesura | rhyme model.lPart_sequence = caesura, rhyme model.lPart_sequenceOptional = caesura?, rhyme? model.lPart_sequenceOptionalRepeatable = caesura*, rhyme* model.lPart_sequenceRepeatable = caesura+, rhyme+ model.global.meta = index | span | spanGrp | interp | interpGrp | substJoin | listTranspose | link | linkGrp | timeline | join | joinGrp | alt | altGrp | fs | fLib | fvLib | precision | certainty | respons model.global.meta_alternation = index | span | spanGrp | interp | interpGrp | substJoin | listTranspose | link | linkGrp | timeline | join | joinGrp | alt | altGrp | fs | fLib | fvLib | precision | certainty | respons model.global.meta_sequence = index, span, spanGrp, interp, interpGrp, substJoin, listTranspose, link, linkGrp, timeline, join, joinGrp, alt, altGrp, fs, fLib, fvLib, precision, certainty, respons model.global.meta_sequenceOptional = index?, span?, spanGrp?, interp?, interpGrp?, substJoin?, listTranspose?, link?, linkGrp?, timeline?, join?, joinGrp?, alt?, altGrp?, fs?, fLib?, fvLib?, precision?, certainty?, respons? model.global.meta_sequenceOptionalRepeatable = index*, span*, spanGrp*, interp*, interpGrp*, substJoin*, listTranspose*, link*, linkGrp*, timeline*, join*, joinGrp*, alt*, altGrp*, fs*, fLib*, fvLib*, precision*, certainty*, respons* model.global.meta_sequenceRepeatable = index+, span+, spanGrp+, interp+, interpGrp+, substJoin+, listTranspose+, link+, linkGrp+, timeline+, join+, joinGrp+, alt+, altGrp+, fs+, fLib+, fvLib+, precision+, certainty+, respons+ model.milestoneLike = milestone | gb | pb | lb | cb | fw | anchor model.milestoneLike_alternation = milestone | gb | pb | lb | cb | fw | anchor model.milestoneLike_sequence = milestone, gb, pb, lb, cb, fw, anchor model.milestoneLike_sequenceOptional = milestone?, gb?, pb?, lb?, cb?, fw?, anchor? model.milestoneLike_sequenceOptionalRepeatable = milestone*, gb*, pb*, lb*, cb*, fw*, anchor* model.milestoneLike_sequenceRepeatable = milestone+, gb+, pb+, lb+, cb+, fw+, anchor+ model.gLike = g model.oddDecl = moduleSpec | specGrp | specGrpRef | elementSpec | classSpec | dataSpec | macroSpec | outputRendition | constraintSpec model.oddDecl_alternation = moduleSpec | specGrp | specGrpRef | elementSpec | classSpec | dataSpec | macroSpec | outputRendition | constraintSpec model.oddDecl_sequence = moduleSpec, specGrp, specGrpRef, elementSpec, classSpec, dataSpec, macroSpec, outputRendition, constraintSpec model.oddDecl_sequenceOptional = moduleSpec?, specGrp?, specGrpRef?, elementSpec?, classSpec?, dataSpec?, macroSpec?, outputRendition?, constraintSpec? model.oddDecl_sequenceOptionalRepeatable = moduleSpec*, specGrp*, specGrpRef*, elementSpec*, classSpec*, dataSpec*, macroSpec*, outputRendition*, constraintSpec* model.oddDecl_sequenceRepeatable = moduleSpec+, specGrp+, specGrpRef+, elementSpec+, classSpec+, dataSpec+, macroSpec+, outputRendition+, constraintSpec+ model.oddRef = classRef | elementRef | macroRef | moduleRef | dataRef model.phrase.xml = att | gi | tag | val model.phrase.xml_alternation = att | gi | tag | val model.phrase.xml_sequence = att, gi, tag, val model.phrase.xml_sequenceOptional = att?, gi?, tag?, val? model.phrase.xml_sequenceOptionalRepeatable = att*, gi*, tag*, val* model.phrase.xml_sequenceRepeatable = att+, gi+, tag+, val+ model.specDescLike = specList | specDesc model.specDescLike_alternation = specList | specDesc model.specDescLike_sequence = specList, specDesc model.specDescLike_sequenceOptional = specList?, specDesc? model.specDescLike_sequenceOptionalRepeatable = specList*, specDesc* model.specDescLike_sequenceRepeatable = specList+, specDesc+ model.biblLike = bibl | biblStruct | listBibl | biblFull | msDesc model.biblLike_alternation = bibl | biblStruct | listBibl | biblFull | msDesc model.biblLike_sequence = bibl, biblStruct, listBibl, biblFull, msDesc model.biblLike_sequenceOptional = bibl?, biblStruct?, listBibl?, biblFull?, msDesc? model.biblLike_sequenceOptionalRepeatable = bibl*, biblStruct*, listBibl*, biblFull*, msDesc* model.biblLike_sequenceRepeatable = bibl+, biblStruct+, listBibl+, biblFull+, msDesc+ model.headLike = head model.headLike_alternation = head model.headLike_sequence = head model.headLike_sequenceOptional = head? model.headLike_sequenceOptionalRepeatable = head* model.headLike_sequenceRepeatable = head+ model.labelLike = desc | label model.labelLike_alternation = desc | label model.labelLike_sequence = desc, label model.labelLike_sequenceOptional = desc?, label? model.labelLike_sequenceOptionalRepeatable = desc*, label* model.labelLike_sequenceRepeatable = desc+, label+ model.listLike = \list | listApp | listWit | listOrg | listEvent | listPerson | listPlace | listRelation | listObject | listNym | table model.listLike_alternation = \list | listApp | listWit | listOrg | listEvent | listPerson | listPlace | listRelation | listObject | listNym | table model.listLike_sequence = \list, listApp, listWit, listOrg, listEvent, listPerson, listPlace, listRelation, listObject, listNym, table model.listLike_sequenceOptional = \list?, listApp?, listWit?, listOrg?, listEvent?, listPerson?, listPlace?, listRelation?, listObject?, listNym?, table? model.listLike_sequenceOptionalRepeatable = \list*, listApp*, listWit*, listOrg*, listEvent*, listPerson*, listPlace*, listRelation*, listObject*, listNym*, table* model.listLike_sequenceRepeatable = \list+, listApp+, listWit+, listOrg+, listEvent+, listPerson+, listPlace+, listRelation+, listObject+, listNym+, table+ model.noteLike = note | noteGrp model.noteLike_alternation = note | noteGrp model.noteLike_sequence = note, noteGrp model.noteLike_sequenceOptional = note?, noteGrp? model.noteLike_sequenceOptionalRepeatable = note*, noteGrp* model.noteLike_sequenceRepeatable = note+, noteGrp+ model.lLike = l model.lLike_alternation = l model.lLike_sequence = l model.lLike_sequenceOptional = l? model.lLike_sequenceOptionalRepeatable = l* model.lLike_sequenceRepeatable = l+ model.pLike = p | ab model.pLike_alternation = p | ab model.pLike_sequence = p, ab model.pLike_sequenceOptional = p?, ab? model.pLike_sequenceOptionalRepeatable = p*, ab* model.pLike_sequenceRepeatable = p+, ab+ model.stageLike = stage | move | view | camera | sound | caption | tech model.stageLike_alternation = stage | move | view | camera | sound | caption | tech model.stageLike_sequence = stage, move, view, camera, sound, caption, tech model.stageLike_sequenceOptional = stage?, move?, view?, camera?, sound?, caption?, tech? model.stageLike_sequenceOptionalRepeatable = stage*, move*, view*, camera*, sound*, caption*, tech* model.stageLike_sequenceRepeatable = stage+, move+, view+, camera+, sound+, caption+, tech+ model.featureVal.complex = fs | vColl | vNot | vMerge model.featureVal.single = binary | symbol | numeric | \string | vLabel | \default | vAlt model.entryPart = superEntry | hom | sense | form | orth | pron | hyph | syll | gramGrp | pos | subc | colloc | def | etym | usg | lbl | xr | re model.entryPart.top = model.biblLike | cit | entry | dictScrap | form | gramGrp | def | etym | usg | lbl | xr | re model.eventLike = event | listEvent model.global.edit = gap | ellipsis | addSpan | damageSpan | delSpan | space | app | witDetail model.global.edit_alternation = gap | ellipsis | addSpan | damageSpan | delSpan | space | app | witDetail model.global.edit_sequence = gap, ellipsis, addSpan, damageSpan, delSpan, space, app, witDetail model.global.edit_sequenceOptional = gap?, ellipsis?, addSpan?, damageSpan?, delSpan?, space?, app?, witDetail? model.global.edit_sequenceOptionalRepeatable = gap*, ellipsis*, addSpan*, damageSpan*, delSpan*, space*, app*, witDetail* model.global.edit_sequenceRepeatable = gap+, ellipsis+, addSpan+, damageSpan+, delSpan+, space+, app+, witDetail+ model.divPart = model.lLike | model.pLike | lg | sp | spGrp | model.divPart.spoken | graph | tree | eTree | forest | listForest model.persStateLike = persName | affiliation | age | education | faith | floruit | gender | langKnowledge | nationality | occupation | persona | persPronouns | residence | sex | socecStatus | state | trait model.personLike = org | person | personGrp model.personPart = model.biblLike | model.eventLike | model.persStateLike | name | idno | birth | death model.placeNamePart = placeName | bloc | country | region | settlement | district | geogName model.placeNamePart_alternation = placeName | bloc | country | region | settlement | district | geogName model.placeNamePart_sequence = placeName, bloc, country, region, settlement, district, geogName model.placeNamePart_sequenceOptional = placeName?, bloc?, country?, region?, settlement?, district?, geogName? model.placeNamePart_sequenceOptionalRepeatable = placeName*, bloc*, country*, region*, settlement*, district*, geogName* model.placeNamePart_sequenceRepeatable = placeName+, bloc+, country+, region+, settlement+, district+, geogName+ model.placeStateLike = model.placeNamePart | climate | location | population | state | terrain | trait model.placeStateLike_alternation = model.placeNamePart_alternation | climate | location | population | state | terrain | trait model.placeStateLike_sequence = model.placeNamePart_sequence, climate, location, population, state, terrain, trait model.placeStateLike_sequenceOptional = model.placeNamePart_sequenceOptional?, climate?, location?, population?, state?, terrain?, trait? model.placeStateLike_sequenceOptionalRepeatable = model.placeNamePart_sequenceOptionalRepeatable*, climate*, location*, population*, state*, terrain*, trait* model.placeStateLike_sequenceRepeatable = model.placeNamePart_sequenceRepeatable+, climate+, location+, population+, state+, terrain+, trait+ model.orgPart = model.eventLike | listOrg | listPerson | listPlace model.publicationStmtPart.agency = publisher | distributor | authority model.publicationStmtPart.detail = model.ptrLike | address | date | pubPlace | idno | availability model.availabilityPart = licence model.certLike = precision | certainty | respons model.descLike = desc model.identEquiv = gloss | equiv model.identSynonyms = model.identEquiv | altIdent model.quoteLike = quote | cit model.quoteLike_alternation = quote | cit model.quoteLike_sequence = quote, cit model.quoteLike_sequenceOptional = quote?, cit? model.quoteLike_sequenceOptionalRepeatable = quote*, cit* model.quoteLike_sequenceRepeatable = quote+, cit+ model.attributable = model.quoteLike | said | floatingText model.attributable_alternation = model.quoteLike_alternation | said | floatingText model.attributable_sequence = model.quoteLike_sequence, said, floatingText model.attributable_sequenceOptional = model.quoteLike_sequenceOptional?, said?, floatingText? model.attributable_sequenceOptionalRepeatable = model.quoteLike_sequenceOptionalRepeatable*, said*, floatingText* model.attributable_sequenceRepeatable = model.quoteLike_sequenceRepeatable+, said+, floatingText+ model.respLike = author | editor | respStmt | meeting | sponsor | funder | principal model.divWrapper = meeting | byline | dateline | argument | epigraph | salute | docAuthor | docDate model.divTopPart = model.headLike | opener | signed model.divTop = model.divWrapper | model.divTopPart model.frontPart.drama = set | prologue | epilogue | performance | castList model.pLike.front = head | byline | dateline | argument | epigraph | docTitle | titlePart | docAuthor | docEdition | docImprint | docDate model.divBottomPart = trailer | closer | signed | postscript model.divBottom = model.divWrapper | model.divBottomPart model.titlepagePart = graphic | binaryObject | byline | argument | epigraph | docTitle | titlePart | docAuthor | imprimatur | docEdition | docImprint | docDate model.msQuoteLike = title | colophon | explicit | finalRubric | incipit | rubric model.msItemPart = model.biblLike | model.quoteLike | model.respLike | model.msQuoteLike | textLang | idno | filiation | msItem | msItemStruct | decoNote model.choicePart = sic | corr | reg | orig | unclear | abbr | expan | ex | am | supplied | seg model.imprintPart = publisher | biblScope | pubPlace | distributor model.catDescPart = textDesc model.settingPart = placeName | locale | activity model.castItemPart = role | roleDesc | actor model.addressLike = email | address | affiliation model.addressLike_alternation = email | address | affiliation model.addressLike_sequence = email, address, affiliation model.addressLike_sequenceOptional = email?, address?, affiliation? model.addressLike_sequenceOptionalRepeatable = email*, address*, affiliation* model.addressLike_sequenceRepeatable = email+, address+, affiliation+ model.nameLike = model.nameLike.agent | model.offsetLike | model.placeStateLike | rs | idno | lang | model.persNamePart | objectName model.nameLike_alternation = model.nameLike.agent_alternation | model.offsetLike_alternation | model.placeStateLike_alternation | rs | idno | lang | model.persNamePart_alternation | objectName model.nameLike_sequence = model.nameLike.agent_sequence, model.offsetLike_sequence, model.placeStateLike_sequence, rs, idno, lang, model.persNamePart_sequence, objectName model.nameLike_sequenceOptional = model.nameLike.agent_sequenceOptional?, model.offsetLike_sequenceOptional?, model.placeStateLike_sequenceOptional?, rs?, idno?, lang?, model.persNamePart_sequenceOptional?, objectName? model.nameLike_sequenceOptionalRepeatable = model.nameLike.agent_sequenceOptionalRepeatable*, model.offsetLike_sequenceOptionalRepeatable*, model.placeStateLike_sequenceOptionalRepeatable*, rs*, idno*, lang*, model.persNamePart_sequenceOptionalRepeatable*, objectName* model.nameLike_sequenceRepeatable = model.nameLike.agent_sequenceRepeatable+, model.offsetLike_sequenceRepeatable+, model.placeStateLike_sequenceRepeatable+, rs+, idno+, lang+, model.persNamePart_sequenceRepeatable+, objectName+ model.global = model.global.meta | model.milestoneLike | model.noteLike | model.global.edit | model.global.spoken | metamark | notatedMusic | figure model.featureVal = model.featureVal.complex | model.featureVal.single model.biblPart = model.respLike | model.imprintPart | series | citedRange | bibl | relatedItem | textLang | edition | extent | availability | msIdentifier | explicit | incipit | decoNote | listRelation | objectIdentifier model.frontPart = model.frontPart.drama | listBibl | divGen | titlePage | schemaSpec model.addrPart = model.nameLike | addrLine | street | postCode | postBox model.pPart.data = model.dateLike | model.measureLike | model.addressLike | model.nameLike model.pPart.data_alternation = model.dateLike_alternation | model.measureLike_alternation | model.addressLike_alternation | model.nameLike_alternation model.pPart.data_sequence = model.dateLike_sequence, model.measureLike_sequence, model.addressLike_sequence, model.nameLike_sequence model.pPart.data_sequenceOptional = model.dateLike_sequenceOptional?, model.measureLike_sequenceOptional?, model.addressLike_sequenceOptional?, model.nameLike_sequenceOptional? model.pPart.data_sequenceOptionalRepeatable = model.dateLike_sequenceOptionalRepeatable*, model.measureLike_sequenceOptionalRepeatable*, model.addressLike_sequenceOptionalRepeatable*, model.nameLike_sequenceOptionalRepeatable* model.pPart.data_sequenceRepeatable = model.dateLike_sequenceRepeatable+, model.measureLike_sequenceRepeatable+, model.addressLike_sequenceRepeatable+, model.nameLike_sequenceRepeatable+ model.inter = model.egLike | model.oddDecl | model.biblLike | model.labelLike | model.listLike | model.stageLike | model.attributable | castList model.common = model.divPart | model.inter | q | model.entryLike model.phrase = model.segLike | model.highlighted | model.graphicLike | model.pPart.msdesc | model.pPart.edit | model.ptrLike | model.lPart | model.phrase.xml | model.specDescLike | model.pPart.data | ruby | model.ptrLike.form model.paraPart = model.gLike | model.lLike | model.global | model.inter | model.phrase | lg model.limitedPhrase = model.hiLike | model.emphLike | model.pPart.msdesc | model.pPart.editorial | model.ptrLike | model.phrase.xml | model.pPart.data model.divLike = \div model.divGenLike = divGen model.div1Like = div1 model.div2Like = div2 model.div3Like = div3 model.div4Like = div4 model.div5Like = div5 model.div6Like = div6 model.div7Like = div7 model.annotationLike = note | annotationBlock | annotation model.annotationPart.body = ptr | ref | note model.applicationLike = application model.teiHeaderPart = encodingDesc | profileDesc | xenoData model.sourceDescPart = scriptStmt | recordingStmt model.encodingDescPart = schemaRef | projectDesc | samplingDecl | editorialDecl | tagsDecl | styleDefDecl | refsDecl | listPrefixDef | classDecl | geoDecl | unitDecl | appInfo | charDecl | metDecl | transcriptionDesc | variantEncoding | fsdDecl | schemaSpec model.editorialDeclPart = correction | normalization | quotation | hyphenation | segmentation | stdVals | interpretation | punctuation model.profileDescPart = abstract | creation | langUsage | textClass | calendarDesc | correspDesc | handNotes | listTranspose | textDesc | particDesc | settingDesc model.standOffPart = model.global.meta | model.biblLike | model.listLike | model.annotationLike | listChange | castList | u | model.entryLike | zone | seg | listAnnotation | graph | tree | eTree | forest | listForest att.formula.attributes = att.formula.attribute.formula 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 }? att.locatable.attributes = att.locatable.attribute.where att.locatable.attribute.where = [ a:documentation [ "indicates one or more locations by pointing to a " ns1:code [ "" ] " element or other canonical description." ] ] attribute where { list { xsd:anyURI { pattern = "\S+" }+ } }? model.correspActionPart = model.dateLike | model.addressLike | model.nameLike | note | noteGrp model.correspContextPart = model.ptrLike | model.pLike | note | noteGrp model.correspDescPart = note | noteGrp | correspAction | correspContext att.partials.attributes = att.partials.attribute.extent att.partials.attribute.extent = ## indicates whether the pronunciation or orthography applies to all or part of a word. ## Suggested values include: 1] full (full form); 2] pref (prefix); 3] suff (suffix); 4] inf (infix); 5] part (partial) attribute extent { ## (full form) "full" | ## (prefix) "pref" | ## (suffix) "suff" | ## (infix) "inf" | ## (partial) "part" | xsd:token { pattern = "[^\p{C}\p{Z}]+" } }? model.resource = \text | facsimile | sourceDoc | standOff | fsdDecl model.describedResource = teiCorpus | TEI model.objectLike = object | listObject att.personal.attributes = att.naming.attributes, att.personal.attribute.full, att.personal.attribute.sort 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" }? att.personal.attribute.sort = ## (sort) specifies the sort order of the name component in relation to others within the name. attribute sort { xsd:nonNegativeInteger }? model.placeLike = place att.duration.iso.attributes = att.duration.iso.attribute.dur-iso att.duration.iso.attribute.dur-iso = ## (duration) indicates the length of this element in time. attribute dur-iso { xsd:token { pattern = "[0-9.,DHMPRSTWYZ/:+\-]+" } }? att.milestoneUnit.attributes = att.milestoneUnit.attribute.unit att.milestoneUnit.attribute.unit = ## provides a conventional name for the kind of section changing at this milestone. ## Suggested values include: 1] page; 2] column; 3] line; 4] book; 5] poem; 6] canto; 7] speaker; 8] stanza; 9] act; 10] scene; 11] section; 12] absent; 13] unnumbered attribute unit { [ a:documentation [ "physical page breaks (synonymous with the " ns1:code [ "" ] " element)." ] ] "page" | ## column breaks. "column" | [ a:documentation [ "line breaks (synonymous with the " ns1:code [ "" ] " element)." ] ] "line" | ## any units termed book, liber, etc. "book" | ## individual poems in a collection. "poem" | ## cantos or other major sections of a poem. "canto" | ## changes of speaker or narrator. "speaker" | ## stanzas within a poem, book, or canto. "stanza" | ## acts within a play. "act" | ## scenes within a play or act. "scene" | ## sections of any kind. "section" | ## passages not present in the reference edition. "absent" | ## passages present in the text, but not to be included as part of the reference. "unnumbered" | xsd:token { pattern = "[^\p{C}\p{Z}]+" } } p = ## (paragraph) marks paragraphs in prose. [3.1. Paragraphs 7.2.5. Speech Contents] element p { macro.paraContent >> sch:pattern [ id = "tei_all-p-abstractModel-structure-p-in-ab-or-p-constraint-report-6" "\x{a}" ~ " " sch:rule [ context = "tei:p" "\x{a}" ~ " " sch:report [ test = "(ancestor::tei:ab or ancestor::tei:p) and not( ancestor::tei:floatingText |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_all-p-abstractModel-structure-p-in-l-or-lg-constraint-report-7" "\x{a}" ~ " " sch:rule [ context = "tei:p" "\x{a}" ~ " " sch:report [ test = "(ancestor::tei:l or ancestor::tei:lg) and not( ancestor::tei:floatingText |parent::tei:figure |parent::tei:note )" "\x{a}" ~ " Abstract model violation: Lines may not contain higher-level structural elements such as div, p, or ab, unless p is a child of figure or note, or is a descendant of floatingText.\x{a}" ~ " " ] "\x{a}" ~ " " ] "\x{a}" ~ " " ], att.global.attributes, att.declaring.attributes, att.fragmentable.attributes, att.written.attributes, empty } 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 foreign { macro.phraseSeq, att.global.attributes, empty } 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 emph { macro.paraContent, att.global.attributes, empty } 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 hi { macro.paraContent, att.global.attributes, att.written.attributes, empty } distinct = ## identifies any word or phrase which is regarded as linguistically distinct, for example as archaic, technical, dialectal, non-preferred, etc., or as forming part of a sublanguage. [3.3.2.3. Other Linguistically Distinct Material] element distinct { macro.phraseSeq, att.global.attributes, att.typed.attribute.subtype, ## specifies the sublanguage or register to which the word or phrase is being assigned attribute type { xsd:token { pattern = "[^\p{C}\p{Z}]+" } }?, ## specifies how the phrase is distinct diachronically attribute time { xsd:string }?, ## specifies how the phrase is distinct diatopically attribute space { xsd:string }?, ## specifies how the phrase is distinct diastratically attribute social { xsd:string }?, empty } 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 said { macro.specialPara, att.global.attributes, 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 } 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 quote { macro.specialPara, att.global.attributes, att.typed.attributes, att.msExcerpt.attributes, att.notated.attributes, empty } 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 q { macro.specialPara, att.global.attributes, 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 } 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 cit { (model.biblLike | model.egLike | model.entryPart | model.global | model.graphicLike | model.ptrLike | model.attributable | pc | q)+, att.global.attributes, att.typed.attributes, empty } mentioned = ## marks words or phrases mentioned, not used. [3.3.3. Quotation] element mentioned { macro.phraseSeq, att.global.attributes, empty } 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 soCalled { macro.phraseSeq, att.global.attributes, empty } desc = ## (description) contains a short description of the purpose, function, or use of its parent element, or when the parent is a documentation element, describes or defines the object being documented. [22.4.1. Description of Components] element desc { macro.limitedContent >> sch:pattern [ id = "tei_all-desc-deprecationInfo-only-in-deprecated-constraint-rule-11" "\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 .' ] "\x{a}" ~ " " ] "\x{a}" ~ " " ], att.global.attributes, att.translatable.attributes, att.typed.attribute.subtype, ## characterizes the element in some sense, using any convenient classification scheme or typology. ## Suggested values include: 1] deprecationInfo (deprecation information) attribute type { ## (deprecation ## information) This element describes why or how its parent element is being deprecated, typically including recommendations for alternate encoding. "deprecationInfo" | xsd:token { pattern = "[^\p{C}\p{Z}]+" } }?, empty } 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 gloss { macro.phraseSeq, att.global.attributes, att.declaring.attributes, att.translatable.attributes, att.typed.attributes, att.pointing.attributes, att.cReferencing.attributes, empty } 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 term { macro.phraseSeq, att.global.attributes, att.declaring.attributes, att.pointing.attributes, att.typed.attributes, att.canonical.attributes, att.sortable.attributes, att.cReferencing.attributes, empty } ruby = ## (ruby container) contains a passage of base text along with its associated ruby gloss(es). [3.4.2. Ruby Annotations] element ruby { (rb, rt+), att.global.attributes, att.typed.attributes, empty } rb = ## (ruby base) contains the base text annotated by a ruby gloss. [3.4.2. Ruby Annotations] element rb { macro.phraseSeq, att.global.attributes, att.typed.attributes, empty } rt = ## (ruby text) contains a ruby text, an annotation closely associated with a passage of the main text. [3.4.2. Ruby Annotations] element rt { macro.phraseSeq, att.global.attributes, att.typed.attributes, att.placement.attributes, att.transcriptional.attributes, ( ## supplies a pointer to the base being glossed by this ruby text. attribute target { xsd:anyURI { pattern = "\S+" } }?) >> sch:pattern [ id = "tei_all-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 { pattern = "\S+" } }?) >> sch:pattern [ id = "tei_all-rt-from-rt-from-constraint-assert-7" "\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 { pattern = "\S+" } }?) >> sch:pattern [ id = "tei_all-rt-to-rt-to-constraint-assert-8" "\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 } sic = ## (Latin for thus or so) contains text reproduced although apparently incorrect or inaccurate. [3.5.1. Apparent Errors] element sic { macro.paraContent, att.global.attributes, empty } corr = ## (correction) contains the correct form of a passage apparently erroneous in the copy text. [3.5.1. Apparent Errors] element corr { macro.paraContent, att.global.attributes, att.editLike.attributes, att.typed.attributes, empty } choice = ## (choice) groups a number of alternative encodings for the same point in a text. [3.5. Simple Editorial Changes] element choice { (model.choicePart | choice)+, att.global.attributes, empty } reg = ## (regularization) contains a reading which has been regularized or normalized in some sense. [3.5.2. Regularization and ## Normalization 12. Critical Apparatus] element reg { macro.paraContent, att.global.attributes, att.editLike.attributes, att.typed.attributes, empty } orig = ## (original form) contains a reading which is marked as following the original, rather than being normalized or corrected. [3.5.2. Regularization and ## Normalization 12. Critical Apparatus] element orig { macro.paraContent, att.global.attributes, empty } gap = ## (gap) indicates a point where material has been omitted in a transcription, whether for editorial reasons described in the TEI header, as part of sampling practice, or because the material is illegible, invisible, or inaudible. [3.5.3. Additions, Deletions, and Omissions] element gap { (model.descLike | model.certLike)*, att.global.attributes, att.timed.attributes, att.editLike.attributes, att.dimensions.attributes, ## (reason) gives the reason for omission ## Suggested values include: 1] cancelled (cancelled); 2] deleted (deleted); 3] editorial (editorial); 4] illegible (illegible); 5] inaudible (inaudible); 6] irrelevant (irrelevant); 7] sampling (sampling) attribute reason { list { ( ## (cancelled) "cancelled" | ## (deleted) "deleted" | ## (editorial) for features omitted from transcription due to editorial policy "editorial" | ## (illegible) "illegible" | ## (inaudible) "inaudible" | ## (irrelevant) "irrelevant" | ## (sampling) "sampling" | xsd:token { pattern = "[^\p{C}\p{Z}]+" })+ } }?, ## (agent) in the case of text omitted because of damage, categorizes the cause of the damage, if it can be identified. ## Sample values include: 1] rubbing (rubbing); 2] mildew (mildew); 3] smoke (smoke) attribute agent { xsd:token { pattern = "[^\p{C}\p{Z}]+" } }?, empty } ellipsis = ## (deliberately marked omission) indicates a purposeful marking in the source document signalling that content has been omitted, and may also supply or describe the omitted content. [3.5.3. Additions, Deletions, and Omissions] element ellipsis { (metamark, model.descLike?, supplied?), att.global.attributes, att.dimensions.attributes, att.timed.attributes, empty } add = ## (addition) contains letters, words, or phrases inserted in the source text by an author, scribe, or a previous annotator or corrector. [3.5.3. Additions, Deletions, and Omissions] element add { macro.paraContent, att.global.attributes, att.transcriptional.attributes, att.placement.attributes, att.typed.attributes, att.dimensions.attributes, empty } del = ## (deletion) contains a letter, word, or passage deleted, marked as deleted, or otherwise indicated as superfluous or spurious in the copy text by an author, scribe, or a previous annotator or corrector. [3.5.3. Additions, Deletions, and Omissions] element del { macro.paraContent, att.global.attributes, att.transcriptional.attributes, att.typed.attributes, att.dimensions.attributes, empty } unclear = ## (unclear) contains a word, phrase, or passage which cannot be transcribed with certainty because it is illegible or inaudible in the source. [11.3.3.1. Damage, Illegibility, and Supplied Text 3.5.3. Additions, Deletions, and Omissions] element unclear { macro.paraContent, att.global.attributes, att.editLike.attributes, att.dimensions.attributes, ## indicates why the material is hard to transcribe. ## Suggested values include: 1] illegible (illegible); 2] inaudible (inaudible); 3] faded (faded); 4] background_noise (background noise); 5] eccentric_ductus (eccentric ductus) attribute reason { list { ( ## (illegible) "illegible" | ## (inaudible) "inaudible" | ## (faded) "faded" | ## (background noise) "background_noise" | ## (eccentric ductus) indicates illegibility due to an unusual, awkward, or incompetent execution of a glyph or glyphs "eccentric_ductus" | xsd:token { pattern = "[^\p{C}\p{Z}]+" })+ } }?, ## Where the difficulty in transcription arises from damage, categorizes the cause of the damage, if it can be identified. ## Sample values include: 1] rubbing; 2] mildew; 3] smoke attribute agent { xsd:token { pattern = "[^\p{C}\p{Z}]+" } }?, empty } name = ## (name, proper noun) contains a proper noun or noun phrase. [3.6.1. Referring Strings] element name { macro.phraseSeq, att.global.attributes, att.personal.attributes, att.datable.attributes, att.editLike.attributes, att.typed.attributes, empty } rs = ## (referencing string) contains a general purpose name or referring string. [13.2.1. Personal Names 3.6.1. Referring Strings] element rs { macro.phraseSeq, att.global.attributes, att.naming.attributes, att.typed.attributes, empty } email = ## (electronic mail address) contains an email address identifying a location to which email messages can be delivered. [3.6.2. Addresses] element email { macro.phraseSeq, att.global.attributes, empty } 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 address { (model.global*, (model.addrPart, model.global*)+), att.global.attributes, empty } 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 addrLine { macro.phraseSeq, att.global.attributes, empty } 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 street { macro.phraseSeq, att.global.attributes, empty } 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 postCode { text, att.global.attributes, empty } 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 postBox { text, att.global.attributes, empty } num = ## (number) contains a number, written in any form. [3.6.3. Numbers and ## Measures] element num { macro.phraseSeq, att.global.attributes, att.typed.attribute.subtype, 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 } measure = ## (measure) contains a word or phrase referring to some quantity of an object or commodity, usually comprising a number, a unit, and a commodity name. [3.6.3. Numbers and ## Measures] element measure { macro.phraseSeq, att.global.attributes, att.typed.attribute.subtype, att.measurement.attributes, att.ranging.attributes, ## specifies the type of measurement in any convenient typology. attribute type { xsd:token { pattern = "[^\p{C}\p{Z}]+" } }?, empty } measureGrp = ## (measure group) contains a group of dimensional specifications which relate to the same object, for example the height and width of a manuscript page. [10.3.4. Dimensions] element measureGrp { (text | model.gLike | model.measureLike)*, att.global.attributes, att.measurement.attributes, att.typed.attributes, empty } 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 unit { macro.phraseSeq, att.global.attributes, att.typed.attributes, att.measurement.attributes, empty } 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 date { (text | model.gLike | model.phrase | model.global)*, att.global.attributes, att.canonical.attributes, att.datable.attributes, att.duration.attributes, att.editLike.attributes, att.dimensions.attributes, att.typed.attributes, empty } time = ## (time) contains a phrase defining a time of day in any format. [3.6.4. Dates and Times] element time { (text | model.gLike | model.phrase | model.global)*, att.global.attributes, att.datable.attributes, att.canonical.attributes, att.duration.attributes, att.editLike.attributes, att.dimensions.attributes, att.typed.attributes, empty } abbr = ## (abbreviation) contains an abbreviation of any sort. [3.6.5. Abbreviations and Their Expansions] element abbr { macro.phraseSeq, att.global.attributes, 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 } expan = ## (expansion) contains the expansion of an abbreviation. [3.6.5. Abbreviations and Their Expansions] element expan { macro.phraseSeq, att.global.attributes, att.editLike.attributes, empty } ptr = ## (pointer) defines a pointer to another location. [3.7. Simple Links and Cross-References 16.1. Links] element ptr { empty >> sch:pattern [ id = "tei_all-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}" ~ " " ], att.cReferencing.attributes, att.declaring.attributes, att.global.attributes, att.internetMedia.attributes, att.pointing.attributes, att.typed.attributes, empty } 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 ref { macro.paraContent >> sch:pattern [ id = "tei_all-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}" ~ " " ], att.cReferencing.attributes, att.declaring.attributes, att.global.attributes, att.internetMedia.attributes, att.pointing.attributes, att.typed.attributes, empty } \list = ## (list) contains any sequence of items organized as a list. [3.8. Lists] element list { ((model.divTop | model.global | desc*)*, ((item, model.global*)+ | (headLabel?, headItem?, (label, model.global*, item, model.global*)+)), (model.divBottom, model.global*)*) >> sch:pattern [ id = "tei_all-list-gloss-list-must-have-labels-constraint-rule-12" "\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}" ~ " " ], att.global.attributes, att.sortable.attributes, 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 [ "