You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

16233 lines
482 KiB
Plaintext

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 [ "<handNote>" ]
" 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 [ "<damage>" ]
" 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 [ "<supplied>" ]
"."
]
]
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 [ "<refsDecl>" ]
" 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 [ "<category>" ]
"s or "
ns1:code [ "<calendar>" ]
"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 [ "<person>" ]
" 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 [ "<scriptNote>" ]
" 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 1000000 bytes
"MB"
|
## (mebibyte) 2²⁰ or 1048576 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 [ "<unitDef>" ]
" 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 [ "<link>" ]
", "
ns1:code [ "<join>" ]
", or "
ns1:code [ "<alt>" ]
" 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 [ "<place>" ]
" 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 [ "<pb>" ]
" element)."
]
]
"page"
|
## column breaks.
"column"
| [
a:documentation [
"line breaks (synonymous with the "
ns1:code [ "<lb>" ]
" 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 <desc\x{a}" ~
' type="deprecationInfo">.'
]
"\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 [ "<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
}
item =
## (item) contains one component of a list. [3.8. Lists 2.6. The Revision Description]
element item {
macro.specialPara,
att.global.attributes,
att.sortable.attributes,
empty
}
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 label {
macro.phraseSeq,
att.global.attributes,
att.typed.attributes,
att.placement.attributes,
att.written.attributes,
empty
}
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 head {
(text
| lg
| model.gLike
| model.phrase
| model.inter
| model.lLike
| model.global)*,
att.global.attributes,
att.typed.attributes,
att.placement.attributes,
att.written.attributes,
empty
}
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 headLabel { macro.phraseSeq, att.global.attributes, empty }
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 headItem { macro.phraseSeq, att.global.attributes, empty }
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 note {
macro.specialPara,
att.global.attributes,
att.placement.attributes,
att.pointing.attributes,
att.typed.attributes,
att.written.attributes,
att.anchoring.attributes,
empty
}
noteGrp =
## (note group) contains a group of notes [3.9.1.1. Encoding Grouped Notes]
element noteGrp {
(desc*, (note | noteGrp)+),
att.global.attributes,
att.placement.attributes,
att.pointing.attributes,
att.typed.attributes,
att.written.attributes,
att.anchoring.attributes,
empty
}
index =
## (index entry) marks a location to be indexed for whatever purpose. [3.9.2. Index Entries]
element index {
(term, index?)*,
att.global.attributes,
att.spanning.attributes,
## a single word which follows the rules defining a legal XML name (see ), supplying a name to specify which index (of several) the index entry belongs to.
attribute indexName { xsd:Name }?,
empty
}
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 media {
model.descLike*,
att.typed.attributes,
att.global.attributes,
att.media.attribute.width,
att.media.attribute.height,
att.media.attribute.scale,
att.resourced.attributes,
att.declaring.attributes,
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
}
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 graphic {
model.descLike*,
att.global.attributes,
att.media.attributes,
att.resourced.attributes,
att.declaring.attributes,
att.typed.attributes,
empty
}
binaryObject =
## provides encoded binary data representing an inline graphic, audio, video or other object. [3.10. Graphics and Other Non-textual Components]
element binaryObject {
text,
att.global.attributes,
att.media.attributes,
att.timed.attributes,
att.typed.attributes,
[
a:documentation [
"The encoding used to encode the binary data. If not specified, this is assumed to be "
ns1:a [ href = "http://en.wikipedia.org/wiki/Base64" "Base64" ]
"."
]
]
attribute encoding {
list {
xsd:token { pattern = "[^\p{C}\p{Z}]+" }+
}
}?,
empty
}
milestone =
## (milestone) marks a boundary point separating any kind of section of a text, typically but not necessarily indicating a point at which some part of a standard reference system changes, where the change is not represented by a structural element. [3.11.3. Milestone
## Elements]
element milestone {
empty,
att.global.attributes,
att.milestoneUnit.attributes,
att.typed.attributes,
att.edition.attributes,
att.spanning.attributes,
att.breaking.attributes,
empty
}
gb =
## (gathering beginning) marks the beginning of a new gathering or quire in a transcribed codex. [3.11.3. Milestone
## Elements]
element gb {
empty,
att.global.attributes,
att.typed.attributes,
att.spanning.attributes,
att.breaking.attributes,
att.edition.attributes,
empty
}
pb =
## (page beginning) marks the beginning of a new page in a paginated document. [3.11.3. Milestone
## Elements]
element pb {
empty,
att.global.attributes,
att.typed.attributes,
att.edition.attributes,
att.spanning.attributes,
att.breaking.attributes,
empty
}
lb =
## (line beginning) marks the beginning of a new (typographic) line in some edition or version of a text. [3.11.3. Milestone
## Elements 7.2.5. Speech Contents]
element lb {
empty,
att.global.attributes,
att.typed.attributes,
att.edition.attributes,
att.spanning.attributes,
att.breaking.attributes,
empty
}
cb =
## (column beginning) marks the beginning of a new column of a text on a multi-column page. [3.11.3. Milestone
## Elements]
element cb {
empty,
att.global.attributes,
att.typed.attributes,
att.edition.attributes,
att.spanning.attributes,
att.breaking.attributes,
empty
}
analytic =
## (analytic level) contains bibliographic elements describing an item (e.g. an article or poem) published within a monograph or journal and not as an independent publication. [3.12.2.1. Analytic, Monographic, and Series Levels]
element analytic {
(author
| editor
| respStmt
| title
| model.ptrLike
| date
| textLang
| idno
| availability)*,
att.global.attributes,
empty
}
monogr =
## (monographic level) contains bibliographic elements describing an item (e.g. a book or journal) published as an independent item (i.e. as a separate physical object). [3.12.2.1. Analytic, Monographic, and Series Levels]
element monogr {
((((author | editor | meeting | respStmt),
(author | editor | meeting | respStmt)*,
title+,
(model.ptrLike | idno | textLang | editor | respStmt)*)
| ((title | model.ptrLike | idno)+,
(textLang | author | editor | meeting | respStmt)*)
| (authority, idno))?,
availability*,
model.noteLike*,
(edition,
(idno | model.ptrLike | editor | sponsor | funder | respStmt)*)*,
imprint,
(imprint | extent | biblScope)*),
att.global.attributes,
empty
}
series =
## (series information) contains information about the series in which a book or other bibliographic item has appeared. [3.12.2.1. Analytic, Monographic, and Series Levels]
element series {
(text
| model.gLike
| title
| model.ptrLike
| editor
| respStmt
| biblScope
| idno
| textLang
| model.global
| availability)*,
att.global.attributes,
empty
}
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 author {
macro.phraseSeq,
att.global.attributes,
att.naming.attributes,
att.datable.attributes,
empty
}
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 editor {
macro.phraseSeq,
att.global.attributes,
att.naming.attributes,
att.datable.attributes,
empty
}
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 respStmt {
(((resp+, model.nameLike.agent+) | (model.nameLike.agent+, resp+)),
note*),
att.global.attributes,
att.canonical.attributes,
empty
}
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 resp {
macro.phraseSeq.limited,
att.global.attributes,
att.canonical.attributes,
att.datable.attributes,
empty
}
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 title {
macro.paraContent,
att.global.attributes,
att.typed.attribute.subtype,
att.canonical.attributes,
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
}
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 meeting {
macro.limitedContent,
att.global.attributes,
att.datable.attributes,
att.canonical.attributes,
empty
}
imprint =
## groups information relating to the publication or distribution of a bibliographic item. [3.12.2.4. Imprint, Size of a Document, and Reprint Information]
element imprint {
((classCode | catRef)*,
((model.imprintPart | model.dateLike), respStmt*, model.global*)+),
att.global.attributes,
empty
}
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 publisher {
macro.phraseSeq,
att.global.attributes,
att.canonical.attributes,
empty
}
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 biblScope {
macro.phraseSeq, att.global.attributes, att.citing.attributes, empty
}
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 citedRange {
macro.phraseSeq,
att.global.attributes,
att.pointing.attributes,
att.citing.attributes,
empty
}
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 pubPlace {
macro.phraseSeq, att.global.attributes, att.naming.attributes, empty
}
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 bibl {
(text
| model.gLike
| model.highlighted
| model.pPart.data
| model.pPart.edit
| model.segLike
| model.ptrLike
| model.biblPart
| model.global)*,
att.global.attributes,
att.declarable.attributes,
att.typed.attributes,
att.sortable.attributes,
att.docStatus.attributes,
empty
}
biblStruct =
## (structured bibliographic citation) contains a structured bibliographic citation, in which only bibliographic sub-elements appear and in a specified order. [3.12.1. Methods of Encoding Bibliographic References and Lists of References 2.2.7. The Source Description 15.3.2. Declarable Elements]
element biblStruct {
(analytic*,
(monogr, series*)+,
(model.noteLike | model.ptrLike | relatedItem | citedRange)*),
att.global.attributes,
att.declarable.attributes,
att.typed.attributes,
att.sortable.attributes,
att.docStatus.attributes,
empty
}
listBibl =
## (citation list) contains a list of bibliographic citations of any kind. [3.12.1. Methods of Encoding Bibliographic References and Lists of References 2.2.7. The Source Description 15.3.2. Declarable Elements]
element listBibl {
(model.headLike*,
desc*,
(model.milestoneLike | relation | listRelation)*,
(model.biblLike+,
(model.milestoneLike | relation | listRelation)*)+),
att.global.attributes,
att.sortable.attributes,
att.declarable.attributes,
att.typed.attributes,
empty
}
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 relatedItem {
((model.biblLike | model.ptrLike)?)
>> sch:pattern [
id =
"tei_all-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}" ~
" "
],
att.global.attributes,
att.typed.attributes,
## points to the related bibliographic element by means of an absolute or relative URI reference
attribute target {
xsd:anyURI { pattern = "\S+" }
}?,
empty
}
l =
## (verse line) contains a single, possibly incomplete, line of verse. [3.13.1. Core Tags for Verse 3.13. Passages of Verse or Drama 7.2.5. Speech Contents]
element l {
((text | model.gLike | model.phrase | model.inter | model.global)*)
>> sch:pattern [
id =
"tei_all-l-abstractModel-structure-l-in-l-constraint-report-12"
"\x{a}" ~
" "
sch:rule [
context = "tei:l"
"\x{a}" ~
" "
sch:report [
test =
"ancestor::tei:l[not(.//tei:note//tei:l[. = current()])]"
"\x{a}" ~
" Abstract model violation: Lines may not contain lines or lg elements.\x{a}" ~
" "
]
"\x{a}" ~
" "
]
"\x{a}" ~
" "
],
att.global.attributes,
att.metrical.attributes,
att.enjamb.attributes,
att.fragmentable.attributes,
empty
}
lg =
## (line group) contains one or more verse lines functioning as a formal unit, e.g. a stanza, refrain, verse paragraph, etc. [3.13.1. Core Tags for Verse 3.13. Passages of Verse or Drama 7.2.5. Speech Contents]
element lg {
((model.divTop | model.global)*,
(model.lLike
| model.stageLike
| model.labelLike
| model.pPart.transcriptional
| lg),
(model.lLike
| model.stageLike
| model.labelLike
| model.pPart.transcriptional
| model.global
| lg)*,
(model.divBottom, model.global*)*)
>> sch:pattern [
id = "tei_all-lg-atleast1oflggapl-constraint-assert-11"
"\x{a}" ~
" "
sch:rule [
context = "tei:lg"
"\x{a}" ~
" "
sch:assert [
test =
"count(descendant::tei:lg|descendant::tei:l|descendant::tei:gap) > 0"
"An lg element\x{a}" ~
" must contain at least one child l, lg, or gap element."
]
"\x{a}" ~
" "
]
"\x{a}" ~
" "
]
>> sch:pattern [
id =
"tei_all-lg-abstractModel-structure-lg-in-l-constraint-report-13"
"\x{a}" ~
" "
sch:rule [
context = "tei:lg"
"\x{a}" ~
" "
sch:report [
test =
"ancestor::tei:l[not(.//tei:note//tei:lg[. = current()])]"
"\x{a}" ~
" Abstract model violation: Lines may not contain line groups.\x{a}" ~
" "
]
"\x{a}" ~
" "
]
"\x{a}" ~
" "
],
att.global.attributes,
att.divLike.attributes,
att.typed.attributes,
att.declaring.attributes,
empty
}
sp =
## (speech) contains an individual speech in a performance text, or a passage presented as such in a prose or verse text. [3.13.2. Core Tags for Drama 3.13. Passages of Verse or Drama 7.2.2. Speeches and Speakers]
element sp {
(model.global*,
(speaker, model.global*)?,
((lg
| model.lLike
| model.pLike
| model.listLike
| model.stageLike
| model.attributable),
(model.global* | q))+),
att.global.attributes,
att.ascribed.directed.attributes,
empty
}
speaker =
## contains a specialized form of heading or label, giving the name of one or more speakers in a dramatic text or fragment. [3.13.2. Core Tags for Drama]
element speaker { macro.phraseSeq, att.global.attributes, empty }
stage =
## (stage direction) contains any kind of stage direction within a dramatic text or fragment. [3.13.2. Core Tags for Drama 3.13. Passages of Verse or Drama 7.2.4. Stage Directions]
element stage {
macro.specialPara,
att.ascribed.directed.attributes,
att.global.attributes,
att.placement.attributes,
att.written.attributes,
## indicates the kind of stage direction.
## Suggested values include: 1] setting; 2] entrance; 3] exit; 4] business; 5] novelistic; 6] delivery; 7] modifier; 8] location; 9] mixed
attribute type {
list {
(
## describes a setting.
"setting"
|
## describes an entrance.
"entrance"
|
## describes an exit.
"exit"
|
## describes stage business.
"business"
|
## is a narrative, motivating stage direction.
"novelistic"
|
## describes how a character speaks.
"delivery"
|
## gives some detail about a character.
"modifier"
|
## describes a location.
"location"
|
## more than one of the above
"mixed"
| xsd:token { pattern = "[^\p{C}\p{Z}]+" })*
}
}?,
empty
}
teiCorpus =
[
a:documentation [
"(TEI corpus) contains the whole of a TEI encoded corpus, comprising a single corpus header and one or more "
ns1:code [ "<TEI>" ]
" elements, each containing a single text header and a text. [4. Default Text Structure 15.1. Varieties of Composite Text]"
]
]
element teiCorpus {
(teiHeader, model.resource*, model.describedResource+),
att.global.attributes,
att.typed.attributes,
## (version) specifies the version number of the TEI Guidelines against which this document is valid.
attribute version {
xsd:token { pattern = "[\d]+(\.[\d]+){0,2}" }
}?,
empty
}
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 divGen {
model.headLike*,
att.global.attributes,
att.typed.attribute.subtype,
## specifies what type of generated text division (e.g. index, table of contents, etc.) is to appear.
## Sample values include: 1] index; 2] toc; 3] figlist; 4] tablist
attribute type {
xsd:token { pattern = "[^\p{C}\p{Z}]+" }
}?,
empty
}
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 textLang {
macro.specialPara,
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
}
att.citeStructurePart.attributes = att.citeStructurePart.attribute.use
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 `<citeStructure>` or on the parent `<citeStructure>` in the case of `<citeData>`."
]
]
attribute use { text }
att.patternReplacement.attributes =
att.patternReplacement.attribute.matchPattern,
att.patternReplacement.attribute.replacementPattern
att.patternReplacement.attribute.matchPattern =
## specifies a regular expression against which the values of other attributes can be matched.
attribute matchPattern { xsd:token }
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 }
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 teiHeader {
(fileDesc, model.teiHeaderPart*, revisionDesc?),
att.global.attributes,
empty
}
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 fileDesc {
((titleStmt,
editionStmt?,
extent?,
publicationStmt,
seriesStmt*,
notesStmt?),
sourceDesc+),
att.global.attributes,
empty
}
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 titleStmt {
(title+, model.respLike*), att.global.attributes, empty
}
sponsor =
## (sponsor) specifies the name of a sponsoring organization or institution. [2.2.1. The Title Statement]
element sponsor {
macro.phraseSeq.limited,
att.global.attributes,
att.canonical.attributes,
att.datable.attributes,
empty
}
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 funder {
macro.phraseSeq.limited,
att.global.attributes,
att.canonical.attributes,
att.datable.attributes,
empty
}
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 principal {
macro.phraseSeq.limited,
att.global.attributes,
att.canonical.attributes,
att.datable.attributes,
empty
}
editionStmt =
## (edition statement) groups information relating to one edition of a text. [2.2.2. The Edition Statement 2.2. The File Description]
element editionStmt {
(model.pLike+ | (edition, model.respLike*)),
att.global.attributes,
empty
}
edition =
## (edition) describes the particularities of one edition of a text. [2.2.2. The Edition Statement]
element edition { macro.phraseSeq, att.global.attributes, empty }
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 extent { macro.phraseSeq, att.global.attributes, empty }
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 publicationStmt {
((model.publicationStmtPart.agency,
model.publicationStmtPart.detail*)+
| model.pLike+),
att.global.attributes,
empty
}
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 distributor {
macro.phraseSeq,
att.global.attributes,
att.canonical.attributes,
empty
}
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 authority {
macro.phraseSeq.limited,
att.global.attributes,
att.canonical.attributes,
empty
}
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 idno {
(text | model.gLike | idno)*,
att.global.attributes,
att.sortable.attributes,
att.datable.attributes,
att.typed.attribute.subtype,
## categorizes the identifier, for example as an ISBN, Social Security number, etc.
## Suggested values include: 1] ISBN; 2] ISSN; 3] DOI; 4] URI; 5] VIAF; 6] ESTC; 7] OCLC
attribute type {
[
a:documentation [
"International Standard Book Number: a 13- or (if assigned prior to 2007) 10-digit identifying number assigned by the publishing industry to a published book or similar item, registered with the "
ns1:a [
href = "https://www.isbn-international.org"
" International ISBN Agency."
]
"\x{a}" ~
" "
]
]
"ISBN"
|
## International Standard Serial Number: an eight-digit number to uniquely identify a serial publication.
"ISSN"
|
## Digital Object Identifier: a unique string of letters and numbers assigned to an electronic document.
"DOI"
| [
a:documentation [
"Uniform Resource Identifier: a string of characters to uniquely identify a resource, following the syntax of "
ns1:a [
href = "https://datatracker.ietf.org/doc/html/rfc3986"
"RFC 3986"
]
"."
]
]
"URI"
|
## A data number in the Virtual Internet Authority File assigned to link different names in catalogs around the world for the same entity.
"VIAF"
|
## English Short-Title Catalogue number: an identifying number assigned to a document in English printed in the British Isles or North America before 1801.
"ESTC"
|
## OCLC control number (record number) for the union catalog record in WorldCat, a union catalog for member libraries in the Online Computer Library Center global cooperative.
"OCLC"
| xsd:token { pattern = "[^\p{C}\p{Z}]+" }
}?,
empty
}
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 availability {
(model.availabilityPart | model.pLike)+,
att.global.attributes,
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
}
licence =
## contains information about a licence or other legal agreement applicable to the text. [2.2.4. Publication, Distribution, Licensing, etc.]
element licence {
macro.specialPara,
att.global.attributes,
att.pointing.attributes,
att.datable.attributes,
empty
}
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 seriesStmt {
(model.pLike+
| (title+, (editor | respStmt)*, (idno | biblScope)*)),
att.global.attributes,
att.declarable.attributes,
empty
}
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 notesStmt {
(model.noteLike | relatedItem)+, att.global.attributes, empty
}
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 sourceDesc {
(model.pLike+
| (model.biblLike | model.sourceDescPart | model.listLike)+),
att.global.attributes,
att.declarable.attributes,
empty
}
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 biblFull {
(((titleStmt,
editionStmt?,
extent?,
publicationStmt,
seriesStmt*,
notesStmt?),
sourceDesc*)
| (fileDesc, profileDesc)),
att.global.attributes,
att.declarable.attributes,
att.sortable.attributes,
att.docStatus.attributes,
empty
}
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 encodingDesc {
(model.encodingDescPart | model.pLike)+,
att.global.attributes,
empty
}
schemaRef =
## (schema reference) describes or points to a related customization or schema file [2.3.10. The Schema Specification]
element schemaRef {
model.descLike?,
att.global.attributes,
att.typed.attributes,
att.resourced.attributes,
## the identifier used for the customization or schema
attribute key { xsd:NCName }?,
empty
}
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 projectDesc {
model.pLike+,
att.global.attributes,
att.declarable.attributes,
empty
}
samplingDecl =
## (sampling declaration) contains a prose description of the rationale and methods used in sampling texts in the creation of a corpus or collection. [2.3.2. The Sampling Declaration 2.3. The Encoding Description 15.3.2. Declarable Elements]
element samplingDecl {
model.pLike+,
att.global.attributes,
att.declarable.attributes,
empty
}
editorialDecl =
## (editorial practice declaration) provides details of editorial principles and practices applied during the encoding of a text. [2.3.3. The Editorial Practices Declaration 2.3. The Encoding Description 15.3.2. Declarable Elements]
element editorialDecl {
(model.pLike | model.editorialDeclPart)+,
att.global.attributes,
att.declarable.attributes,
empty
}
correction =
## (correction principles) states how and under what circumstances corrections have been made in the text. [2.3.3. The Editorial Practices Declaration 15.3.2. Declarable Elements]
element correction {
model.pLike+,
att.global.attributes,
att.declarable.attributes,
## indicates the degree of correction applied to the text.
attribute status {
## the text has been thoroughly checked and proofread.
"high"
|
## the text has been checked at least once.
"medium"
|
## the text has not been checked.
"low"
|
## the correction status of the text is unknown.
"unknown"
}?,
## indicates the method adopted to indicate corrections within the text.
[ a:defaultValue = "silent" ]
attribute method {
## corrections have been made silently
"silent"
|
## corrections have been represented using markup
"markup"
}?,
empty
}
normalization =
## (normalization) indicates the extent of normalization or regularization of the original source carried out in converting it to electronic form. [2.3.3. The Editorial Practices Declaration 15.3.2. Declarable Elements]
element normalization {
model.pLike+,
att.global.attributes,
att.declarable.attributes,
## indicates the method adopted to indicate normalizations within the text.
[ a:defaultValue = "silent" ]
attribute method {
## normalization made silently
"silent"
|
## normalization represented using markup
"markup"
}?,
empty
}
quotation =
## (quotation) specifies editorial practice adopted with respect to quotation marks in the original. [2.3.3. The Editorial Practices Declaration 15.3.2. Declarable Elements]
element quotation {
(model.pLike*)
>> sch:pattern [
id = "tei_all-quotation-quotationContents-constraint-report-14"
"\x{a}" ~
" "
sch:rule [
context = "tei:quotation"
"\x{a}" ~
" "
sch:report [
test = "not(@marks) and not (tei:p)"
"\x{a}" ~
"On "
sch:name [ ]
", either the @marks attribute should be used, or a paragraph of description provided"
]
"\x{a}" ~
" "
]
"\x{a}" ~
" "
],
att.global.attributes,
att.declarable.attributes,
## (quotation marks) indicates whether or not quotation marks have been retained as content within the text.
attribute marks {
## no quotation marks have been retained
"none"
|
## some quotation marks have been retained
"some"
|
## all quotation marks have been retained
"all"
}?,
empty
}
hyphenation =
## (hyphenation) summarizes the way in which hyphenation in a source text has been treated in an encoded version of it. [2.3.3. The Editorial Practices Declaration 15.3.2. Declarable Elements]
element hyphenation {
model.pLike+,
att.global.attributes,
att.declarable.attributes,
## (end-of-line) indicates whether or not end-of-line hyphenation has been retained in a text.
[ a:defaultValue = "some" ]
attribute eol {
## all end-of-line hyphenation has been retained, even though the lineation of the original may not have been.
"all"
|
## end-of-line hyphenation has been retained in some cases.
"some"
|
## all soft end-of-line hyphenation has been removed: any remaining end-of-line hyphenation should be retained.
"hard"
|
## all end-of-line hyphenation has been removed: any remaining hyphenation occurred within the line.
"none"
}?,
empty
}
segmentation =
## (segmentation) describes the principles according to which the text has been segmented, for example into sentences, tone-units, graphemic strata, etc. [2.3.3. The Editorial Practices Declaration 15.3.2. Declarable Elements]
element segmentation {
model.pLike+,
att.global.attributes,
att.declarable.attributes,
empty
}
stdVals =
## (standard values) specifies the format used when standardized date or number values are supplied. [2.3.3. The Editorial Practices Declaration 15.3.2. Declarable Elements]
element stdVals {
model.pLike+,
att.global.attributes,
att.declarable.attributes,
empty
}
interpretation =
## (interpretation) describes the scope of any analytic or interpretive information added to the text in addition to the transcription. [2.3.3. The Editorial Practices Declaration]
element interpretation {
model.pLike+,
att.global.attributes,
att.declarable.attributes,
empty
}
punctuation =
## specifies editorial practice adopted with respect to punctuation marks in the original. [2.3.3. The Editorial Practices Declaration 3.2. Treatment of Punctuation]
element punctuation {
model.pLike*,
att.declarable.attributes,
att.global.attributes,
## indicates whether or not punctation marks have been retained as content within the text.
attribute marks {
## no punctuation marks have been retained
"none"
|
## some punctuation marks have been retained
"some"
|
## all punctuation marks have been retained
"all"
}?,
## indicates the positioning of punctuation marks that are associated with marked up text as being encoded within the element surrounding the text or immediately before or after it.
attribute placement {
## punctuation marks found at the start or end of a marked up text component are included within its surrounding element;
"internal"
|
## punctuation marks found at the start or end of a marked up text component appear immediately before or after the surrounding element
"external"
}?,
empty
}
tagsDecl =
## (tagging declaration) provides detailed information about the tagging applied to a document. [2.3.4. The Tagging Declaration 2.3. The Encoding Description]
element tagsDecl {
(rendition*, \namespace*),
att.global.attributes,
[
a:documentation [
"indicates whether the element types listed exhaustively include all those found within "
ns1:code [ "<text>" ]
", or represent only a subset."
]
]
attribute partial { xsd:boolean }?,
empty
}
tagUsage =
## (element usage) documents the usage of a specific element within a specified document. [2.3.4. The Tagging Declaration]
element tagUsage {
macro.limitedContent,
att.global.attributes,
att.datcat.attributes,
[
a:documentation [
"(generic identifier) specifies the name (generic identifier) of the element indicated by the tag, within the namespace indicated by the parent "
ns1:code [ "<namespace>" ]
" element."
]
]
attribute gi { xsd:Name },
## specifies the number of occurrences of this element within the text.
attribute occurs { xsd:nonNegativeInteger }?,
[
a:documentation [
"(with unique identifier) specifies the number of occurrences of this element within the text which bear a distinct value for the global "
ns1:code [ "@xml:id" ]
" attribute."
]
]
attribute withId { xsd:nonNegativeInteger }?,
empty
}
\namespace =
## (namespace) supplies the formal name of the namespace to which the elements documented by its children belong. [2.3.4. The Tagging Declaration]
element namespace {
tagUsage+,
att.global.attributes,
## specifies the full formal name of the namespace concerned.
attribute name {
xsd:anyURI { pattern = "\S*" }
},
empty
}
rendition =
## (rendition) supplies information about the rendition or appearance of one or more elements in the source text. [2.3.4. The Tagging Declaration]
element rendition {
macro.limitedContent,
att.global.attributes,
att.styleDef.attributes,
## where CSS is used, 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}]+" }
}?,
[
a:documentation [
"contains a selector or series of selectors specifying the elements to which the contained style description applies, expressed in the language specified in the "
ns1:code [ "@scheme" ]
" attribute."
]
]
attribute selector { xsd:string }?,
empty
}
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 styleDefDecl {
model.pLike*,
att.global.attributes,
att.declarable.attributes,
att.styleDef.attributes,
empty
}
refsDecl =
## (references declaration) specifies how canonical references are constructed for this text. [2.3.6.3. Milestone Method 2.3. The Encoding Description 2.3.6. The Reference System Declaration]
element refsDecl {
(model.pLike+ | citeStructure+ | cRefPattern+ | refState+),
att.global.attributes,
att.declarable.attributes,
empty
}
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 citeStructure {
(citeData*, citeStructure*, model.descLike*),
att.global.attributes,
att.citeStructurePart.attributes,
## (delimiter) supplies a delimiting string preceding the structural component.
attribute delim {
xsd:string { pattern = ".+" }
}?,
[
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_all-citeStructure-match-citestructure-outer-match-constraint-rule-13"
"\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_all-citeStructure-match-citestructure-inner-match-constraint-rule-14"
"\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
}
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 citeData {
empty,
att.global.attributes,
att.citeStructurePart.attributes,
## (property) A URI indicating a property definition.
attribute property {
xsd:anyURI { pattern = "\S+" }
},
empty
}
cRefPattern =
## (canonical reference pattern) specifies an expression and replacement pattern for transforming a canonical reference into a URI. [2.3.6.3. Milestone Method 2.3.6. The Reference System Declaration 2.3.6.2. Search-and-Replace Method]
element cRefPattern {
model.pLike*,
att.global.attributes,
att.patternReplacement.attributes,
empty
}
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 prefixDef {
model.pLike*,
att.global.attributes,
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
}
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 listPrefixDef {
(desc*, (prefixDef | listPrefixDef)+),
att.global.attributes,
empty
}
refState =
## (reference state) specifies one component of a canonical reference defined by the milestone method. [2.3.6.3. Milestone Method 2.3.6. The Reference System Declaration]
element refState {
empty,
att.global.attributes,
att.milestoneUnit.attributes,
att.edition.attributes,
## specifies the fixed length of the reference component.
attribute length { xsd:nonNegativeInteger }?,
## (delimiter) supplies a delimiting string following the reference component.
attribute delim { xsd:string }?,
empty
}
classDecl =
## (classification declarations) contains one or more taxonomies defining any classificatory codes used elsewhere in the text. [2.3.7. The Classification Declaration 2.3. The Encoding Description]
element classDecl { taxonomy+, att.global.attributes, empty }
taxonomy =
## (taxonomy) defines a typology either implicitly, by means of a bibliographic citation, or explicitly by a structured taxonomy. [2.3.7. The Classification Declaration]
element taxonomy {
(((category | taxonomy)+
| ((model.descLike | equiv | gloss)+, (category | taxonomy)*))
| (model.biblLike, (category | taxonomy)*)),
att.global.attributes,
empty
}
category =
## (category) contains an individual descriptive category, possibly nested within a superordinate category, within a user-defined taxonomy. [2.3.7. The Classification Declaration]
element category {
((catDesc+ | (model.descLike | equiv | gloss)*),
category*),
att.global.attributes,
empty
}
catDesc =
[
a:documentation [
"(category description) describes some category within a taxonomy or text typology, either in the form of a brief prose description or in terms of the situational parameters used by the TEI formal "
ns1:code [ "<textDesc>" ]
". [2.3.7. The Classification Declaration]"
]
]
element catDesc {
(text | model.limitedPhrase | model.catDescPart)*,
att.global.attributes,
att.canonical.attributes,
empty
}
geoDecl =
[
a:documentation [
"(geographic coordinates declaration) documents the notation and the datum used for geographic coordinates expressed as content of the "
ns1:code [ "<geo>" ]
" element elsewhere within the document. [2.3.8. The Geographic Coordinates Declaration]"
]
]
element geoDecl {
macro.phraseSeq,
att.global.attributes,
att.declarable.attributes,
## supplies a commonly used code name for the datum employed.
## Suggested values include: 1] WGS84 (World Geodetic System); 2] MGRS (Military Grid Reference System); 3] OSGB36 (ordnance survey great britain); 4] ED50 (European Datum coordinate system)
[ a:defaultValue = "WGS84" ]
attribute datum {
## (World Geodetic System) a pair of numbers to be interpreted as latitude followed by longitude according to the World Geodetic System.
"WGS84"
|
## (Military Grid Reference System) the values supplied are geospatial entity object codes, based on
"MGRS"
|
## (ordnance survey great britain) the value supplied is to be interpreted as a British National Grid Reference.
"OSGB36"
|
## (European Datum coordinate system) the value supplied is to be interpreted as latitude followed by longitude according to the European Datum coordinate system.
"ED50"
| xsd:token { pattern = "[^\p{C}\p{Z}]+" }
}?,
empty
}
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 unitDecl {
unitDef+,
att.canonical.attributes,
att.datable.attributes,
att.global.attributes,
empty
}
unitDef =
## (unit definition) contains descriptive information related to a specific unit of measurement. [2.3.9. The Unit Declaration]
element unitDef {
(model.labelLike | model.placeNamePart? | conversion? | unit?)+,
att.global.attributes,
att.datable.attributes,
att.canonical.attributes,
att.typed.attributes,
empty
}
conversion =
## defines how to calculate one unit of measure in terms of another. [2.3.9. The Unit Declaration]
element conversion {
empty,
att.global.attributes,
att.datable.attributes,
att.formula.attributes,
att.locatable.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 { pattern = "\S+" }
},
[
a:documentation [
"the target unit of measurement for a conversion from a source unit referenced in "
ns1:code [ "@fromUnit" ]
"."
]
]
attribute toUnit {
xsd:anyURI { pattern = "\S+" }
},
empty
}
appInfo =
## (application information) records information about an application which has edited the TEI file. [2.3.11. The Application Information Element]
element appInfo {
model.applicationLike+, att.global.attributes, empty
}
application =
## provides information about an application which has acted upon the document. [2.3.11. The Application Information Element]
element application {
(model.labelLike+, (model.ptrLike* | model.pLike*)),
att.global.attributes,
att.typed.attributes,
att.datable.attributes,
## supplies an identifier for the application, independent of its version number or display name.
attribute ident { xsd:Name },
## supplies a version number for the application, independent of its identifier or display name.
attribute version {
xsd:token {
pattern = "[\d]+[a-z]*[\d]*(\.[\d]+[a-z]*[\d]*){0,3}"
}
},
empty
}
profileDesc =
## (text-profile description) provides a detailed description of non-bibliographic aspects of a text, specifically the languages and sublanguages used, the situation in which it was produced, the participants and their setting. [2.4. The Profile Description 2.1.1. The TEI Header and Its Components]
element profileDesc {
model.profileDescPart*, att.global.attributes, empty
}
handNote =
## (note on hand) describes a particular style or hand distinguished within a manuscript. [10.7.2. Writing, Decoration, and Other Notations]
element handNote {
macro.specialPara,
att.global.attributes,
att.handFeatures.attributes,
empty
}
abstract =
## contains a summary or formal abstract prefixed to an existing source document by the encoder. [2.4.4. Abstracts]
element abstract {
(model.pLike | model.listLike | listBibl)+,
att.global.attributes,
empty
}
creation =
## (creation) contains information about the creation of a text. [2.4.1. Creation 2.4. The Profile Description]
element creation {
(text | model.limitedPhrase | listChange)*,
att.global.attributes,
att.datable.attributes,
empty
}
langUsage =
## (language usage) describes the languages, sublanguages, registers, dialects, etc. represented within a text. [2.4.2. Language Usage 2.4. The Profile Description 15.3.2. Declarable Elements]
element langUsage {
(model.pLike+ | language+),
att.global.attributes,
att.declarable.attributes,
empty
}
language =
## (language) characterizes a single language or sublanguage used within a text. [2.4.2. Language Usage]
element language {
macro.phraseSeq.limited,
att.global.attributes,
[
a:documentation [
"(identifier) Supplies a language code constructed as defined in "
ns1:a [ href = "https://tools.ietf.org/html/bcp47" "BCP 47" ]
" which is used to identify the language documented by this element, and which is referenced by the global "
ns1:code [ "@xml:lang" ]
" attribute."
]
]
attribute ident {
xsd:language
| (
##
"")
},
## specifies the approximate percentage (by volume) of the text which uses this language.
attribute usage { xsd:nonNegativeInteger }?,
empty
}
textClass =
## (text classification) groups information which describes the nature or topic of a text in terms of a standard classification scheme, thesaurus, etc. [2.4.3. The Text Classification]
element textClass {
(classCode | catRef | keywords)*,
att.global.attributes,
att.declarable.attributes,
empty
}
keywords =
## (keywords) contains a list of keywords or phrases identifying the topic or nature of a text. [2.4.3. The Text Classification]
element keywords {
(term+ | \list),
att.global.attributes,
[
a:documentation [
"identifies the controlled vocabulary within which the set of keywords concerned is defined, for example by a "
ns1:code [ "<taxonomy>" ]
" element, or by some other resource."
]
]
attribute scheme {
xsd:anyURI { pattern = "\S+" }
}?,
empty
}
classCode =
## (classification code) contains the classification code used for this text in some standard classification system. [2.4.3. The Text Classification]
element classCode {
macro.phraseSeq.limited,
att.global.attributes,
[
a:documentation [
"identifies the classification system in use, as defined by, e.g. a "
ns1:code [ "<taxonomy>" ]
" element, or some other resource."
]
]
attribute scheme {
xsd:anyURI { pattern = "\S+" }
},
empty
}
catRef =
## (category reference) specifies one or more defined categories within some taxonomy or text typology. [2.4.3. The Text Classification]
element catRef {
empty,
att.global.attributes,
att.pointing.attributes,
[
a:documentation [
"identifies the classification scheme within which the set of categories concerned is defined, for example by a "
ns1:code [ "<taxonomy>" ]
" element, or by some other resource."
]
]
attribute scheme {
xsd:anyURI { pattern = "\S+" }
}?,
empty
}
calendarDesc =
## (calendar description) contains a description of the calendar system used in any dating expression found in the text. [2.4. The Profile Description 2.4.5. Calendar Description]
element calendarDesc { calendar+, att.global.attributes, empty }
calendar =
## (calendar) describes a calendar or dating system used in a dating formula in the text. [2.4.5. Calendar Description]
element calendar {
model.pLike+,
att.global.attributes,
att.pointing.attributes,
att.typed.attributes,
empty
}
correspDesc =
## (correspondence description) contains a description of the actions related to one act of correspondence. [2.4.6. Correspondence Description]
element correspDesc {
(model.correspDescPart+ | model.pLike+),
att.declarable.attributes,
att.canonical.attributes,
att.global.attributes,
att.typed.attributes,
empty
}
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 correspAction {
(model.correspActionPart+ | model.pLike+),
att.global.attributes,
att.typed.attribute.subtype,
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
}
correspContext =
## (correspondence context) provides references to preceding or following correspondence related to this piece of correspondence. [2.4.6. Correspondence Description]
element correspContext {
model.correspContextPart+, att.global.attributes, empty
}
xenoData =
## (non-TEI metadata) provides a container element into which metadata in non-TEI formats may be placed. [2.5. Non-TEI Metadata]
element xenoData {
(text | anyElement-xenoData),
att.global.attributes,
att.declarable.attributes,
att.typed.attributes,
empty
}
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 revisionDesc {
(\list | listChange | change+),
att.global.attributes,
att.docStatus.attributes,
empty
}
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 change {
macro.specialPara,
att.ascribed.attributes,
att.datable.attributes,
att.docStatus.attributes,
att.global.attributes,
att.typed.attributes,
## (target) points to one or more elements that belong to this change.
attribute target {
list {
xsd:anyURI { pattern = "\S+" }+
}
}?,
empty
}
scriptNote =
## describes a particular script distinguished within the description of a manuscript or similar resource. [10.7.2. Writing, Decoration, and Other Notations]
element scriptNote {
macro.specialPara,
att.global.attributes,
att.handFeatures.attributes,
empty
}
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 listChange {
(desc*, (listChange | change)+),
att.global.attributes,
att.sortable.attributes,
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
}
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 {
(teiHeader,
((model.resource+, TEI*) | 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"
]
>> sch:ns [
prefix = "rna"
uri = "http://relaxng.org/ns/compatibility/annotations/1.0"
],
att.global.attributes,
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
}
\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 text {
(model.global*,
(front, model.global*)?,
(body | group),
model.global*,
(back, model.global*)?),
att.global.attributes,
att.declaring.attributes,
att.typed.attributes,
att.written.attributes,
empty
}
body =
## (text body) contains the whole body of a single unitary text, excluding any front or back matter. [4. Default Text Structure]
element body {
(model.global*,
(model.divTop, (model.global | model.divTop)*)?,
(model.divGenLike, (model.global | model.divGenLike)*)?,
((model.divLike, (model.global | model.divGenLike)*)+
| (model.div1Like, (model.global | model.divGenLike)*)+
| (((schemaSpec | model.common), model.global*)+,
((model.divLike, (model.global | model.divGenLike)*)+
| (model.div1Like, (model.global | model.divGenLike)*)+)?)),
(model.divBottom, model.global*)*),
att.global.attributes,
att.declaring.attributes,
empty
}
group =
## (group) contains the body of a composite text, grouping together a sequence of distinct texts (or groups of such texts) which are regarded as a unit for some purpose, for example the collected works of an author, a sequence of prose essays, etc. [4. Default Text Structure 4.3.1. Grouped Texts 15.1. Varieties of Composite Text]
element group {
((model.divTop | model.global)*,
((\text | group), (\text | group | model.global)*),
model.divBottom*),
att.global.attributes,
att.declaring.attributes,
att.typed.attributes,
empty
}
floatingText =
## (floating text) contains a single text of any kind, whether unitary or composite, which interrupts the text containing it at any point and after which the surrounding text resumes. [4.3.2. Floating Texts]
element floatingText {
(model.global*,
(front, model.global*)?,
(body | group),
model.global*,
(back, model.global*)?),
att.global.attributes,
att.declaring.attributes,
att.typed.attributes,
empty
}
\div =
## (text division) contains a subdivision of the front, body, or back of a text. [4.1. Divisions of the Body]
element div {
((model.divTop | model.global)*,
((((model.divLike | model.divGenLike), model.global*)+
| (((schemaSpec | model.common), model.global*)+,
((model.divLike | model.divGenLike), model.global*)*)),
(model.divBottom, model.global*)*)?)
>> sch:pattern [
id =
"tei_all-div-abstractModel-structure-div-in-l-or-lg-constraint-report-15"
"\x{a}" ~
" "
sch:rule [
context = "tei:div"
"\x{a}" ~
" "
sch:report [
test =
"(ancestor::tei:l or ancestor::tei:lg) and not(ancestor::tei:floatingText)"
"\x{a}" ~
" Abstract model violation: Lines may not contain higher-level structural elements such as div, unless div is a descendant of floatingText.\x{a}" ~
" "
]
"\x{a}" ~
" "
]
"\x{a}" ~
" "
]
>> sch:pattern [
id =
"tei_all-div-abstractModel-structure-div-in-ab-or-p-constraint-report-16"
"\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, unless div is a descendant of floatingText.\x{a}" ~
" "
]
"\x{a}" ~
" "
]
"\x{a}" ~
" "
],
att.global.attributes,
att.divLike.attributes,
att.typed.attributes,
att.declaring.attributes,
att.written.attributes,
empty
}
div1 =
## (level-1 text division) contains a first-level subdivision of the front, body, or back of a text. [4.1.2. Numbered Divisions]
element div1 {
((model.divTop | model.global)*,
((((model.div2Like | model.divGenLike), model.global*)+
| (((schemaSpec | model.common), model.global*)+,
((model.div2Like | model.divGenLike), model.global*)*)),
(model.divBottom, model.global*)*)?),
att.global.attributes,
att.divLike.attributes,
att.typed.attributes,
att.declaring.attributes,
empty
}
div2 =
## (level-2 text division) contains a second-level subdivision of the front, body, or back of a text. [4.1.2. Numbered Divisions]
element div2 {
((model.divTop | model.global)*,
((((model.div3Like | model.divGenLike), model.global*)+
| (((schemaSpec | model.common), model.global*)+,
((model.div3Like | model.divGenLike), model.global*)*)),
(model.divBottom, model.global*)*)?),
att.global.attributes,
att.divLike.attributes,
att.typed.attributes,
att.declaring.attributes,
empty
}
div3 =
## (level-3 text division) contains a third-level subdivision of the front, body, or back of a text. [4.1.2. Numbered Divisions]
element div3 {
((model.divTop | model.global)*,
((((model.div4Like | model.divGenLike), model.global*)+
| (((schemaSpec | model.common), model.global*)+,
((model.div4Like | model.divGenLike), model.global*)*)),
(model.divBottom, model.global*)*)?),
att.global.attributes,
att.divLike.attributes,
att.typed.attributes,
att.declaring.attributes,
empty
}
div4 =
## (level-4 text division) contains a fourth-level subdivision of the front, body, or back of a text. [4.1.2. Numbered Divisions]
element div4 {
((model.divTop | model.global)*,
((((model.div5Like | model.divGenLike), model.global*)+
| (((schemaSpec | model.common), model.global*)+,
((model.div5Like | model.divGenLike), model.global*)*)),
(model.divBottom, model.global*)*)?),
att.global.attributes,
att.divLike.attributes,
att.typed.attributes,
att.declaring.attributes,
empty
}
div5 =
## (level-5 text division) contains a fifth-level subdivision of the front, body, or back of a text. [4.1.2. Numbered Divisions]
element div5 {
((model.divTop | model.global)*,
((((model.div6Like | model.divGenLike), model.global*)+
| (((schemaSpec | model.common), model.global*)+,
((model.div6Like | model.divGenLike), model.global*)*)),
(model.divBottom, model.global*)*)?),
att.global.attributes,
att.divLike.attributes,
att.typed.attributes,
att.declaring.attributes,
empty
}
div6 =
## (level-6 text division) contains a sixth-level subdivision of the front, body, or back of a text. [4.1.2. Numbered Divisions]
element div6 {
((model.divTop | model.global)*,
((((model.div7Like | model.divGenLike), model.global*)+
| (((schemaSpec | model.common), model.global*)+,
((model.div7Like | model.divGenLike), model.global*)*)),
(model.divBottom, model.global*)*)?),
att.global.attributes,
att.divLike.attributes,
att.typed.attributes,
att.declaring.attributes,
empty
}
div7 =
## (level-7 text division) contains the smallest possible subdivision of the front, body or back of a text, larger than a paragraph. [4.1.2. Numbered Divisions]
element div7 {
((model.divTop | model.global)*,
(((schemaSpec | model.common), model.global*)+,
(model.divBottom, model.global*)*)?),
att.global.attributes,
att.divLike.attributes,
att.typed.attributes,
att.declaring.attributes,
empty
}
trailer =
## contains a closing title or footer appearing at the end of a division of a text. [4.2.4. Content of Textual Divisions 4.2. Elements Common to All Divisions]
element trailer {
(text
| lg
| model.gLike
| model.phrase
| model.inter
| model.lLike
| model.global)*,
att.global.attributes,
att.typed.attributes,
att.placement.attributes,
att.written.attributes,
empty
}
byline =
## (byline) contains the primary statement of responsibility given for a work on its title page or at the head or end of the work. [4.2.2. Openers and Closers 4.5. Front Matter]
element byline {
(text | model.gLike | model.phrase | docAuthor | model.global)*,
att.global.attributes,
empty
}
dateline =
## (dateline) contains a brief description of the place, date, time, etc. of production of a letter, newspaper story, or other work, prefixed or suffixed to it as a kind of heading or trailer. [4.2.2. Openers and Closers]
element dateline {
(text | model.gLike | model.phrase | model.global | docDate)*,
att.global.attributes,
empty
}
argument =
## (argument) contains a formal list or prose description of the topics addressed by a subdivision of a text. [4.2. Elements Common to All Divisions 4.6. Title Pages]
element argument {
((model.global | model.headLike)*, (model.common, model.global*)+),
att.global.attributes,
empty
}
epigraph =
## (epigraph) contains a quotation, anonymous or attributed, appearing at the start or end of a section or on a title page. [4.2.3. Arguments, Epigraphs, and Postscripts 4.2. Elements Common to All Divisions 4.6. Title Pages]
element epigraph {
(model.common | model.global)*, att.global.attributes, empty
}
opener =
## (opener) groups together dateline, byline, salutation, and similar phrases appearing as a preliminary group at the start of a division, especially of a letter. [4.2. Elements Common to All Divisions]
element opener {
(text
| model.gLike
| model.phrase
| argument
| byline
| dateline
| epigraph
| salute
| signed
| model.global)*,
att.global.attributes,
att.written.attributes,
empty
}
closer =
## (closer) groups together salutations, datelines, and similar phrases appearing as a final group at the end of a division, especially of a letter. [4.2.2. Openers and Closers 4.2. Elements Common to All Divisions]
element closer {
(text
| model.gLike
| signed
| dateline
| salute
| model.phrase
| model.global)*,
att.global.attributes,
att.written.attributes,
empty
}
salute =
## (salutation) contains a salutation or greeting prefixed to a foreword, dedicatory epistle, or other division of a text, or the salutation in the closing of a letter, preface, etc. [4.2.2. Openers and Closers]
element salute {
macro.paraContent,
att.global.attributes,
att.written.attributes,
empty
}
signed =
## (signature) contains the closing salutation, etc., appended to a foreword, dedicatory epistle, or other division of a text. [4.2.2. Openers and Closers]
element signed {
macro.paraContent,
att.global.attributes,
att.written.attributes,
empty
}
postscript =
## contains a postscript, e.g. to a letter. [4.2. Elements Common to All Divisions]
element postscript {
((model.global | model.divTopPart)*,
model.common,
(model.global | model.common)*,
(model.divBottomPart, model.global*)*),
att.global.attributes,
att.written.attributes,
empty
}
titlePage =
## (title page) contains the title page of a text, appearing within the front or back matter. [4.6. Title Pages]
element titlePage {
(model.global*,
model.titlepagePart,
(model.titlepagePart | model.global)*),
att.global.attributes,
att.typed.attribute.subtype,
## classifies the title page according to any convenient typology.
attribute type {
xsd:token { pattern = "[^\p{C}\p{Z}]+" }
}?,
empty
}
docTitle =
## (document title) contains the title of a document, including all its constituents, as given on a title page. [4.6. Title Pages]
element docTitle {
(model.global*, (titlePart, model.global*)+),
att.global.attributes,
att.canonical.attributes,
empty
}
titlePart =
## (title part) contains a subsection or division of the title of a work, as indicated on a title page. [4.6. Title Pages]
element titlePart {
macro.paraContent,
att.global.attributes,
att.typed.attribute.subtype,
## (type) specifies the role of this subdivision of the title.
## Suggested values include: 1] main (main); 2] sub (subordinate); 3] alt (alternate); 4] short (short); 5] desc (descriptive)
[ a:defaultValue = "main" ]
attribute type {
## (main) main title of the work
"main"
|
## (subordinate) subtitle of the work
"sub"
|
## (alternate) alternative title of the work
"alt"
|
## (short) abbreviated form of title
"short"
|
## (descriptive) descriptive paraphrase of the work
"desc"
| xsd:token { pattern = "[^\p{C}\p{Z}]+" }
}?,
empty
}
docAuthor =
## (document author) contains the name of the author of the document, as given on the title page (often but not always contained in a byline). [4.6. Title Pages]
element docAuthor {
macro.phraseSeq,
att.global.attributes,
att.canonical.attributes,
empty
}
imprimatur =
## (imprimatur) contains a formal statement authorizing the publication of a work, sometimes required to appear on a title page or its verso. [4.6. Title Pages]
element imprimatur { macro.paraContent, att.global.attributes, empty }
docEdition =
## (document edition) contains an edition statement as presented on a title page of a document. [4.6. Title Pages]
element docEdition { macro.paraContent, att.global.attributes, empty }
docImprint =
## (document imprint) contains the imprint statement (place and date of publication, publisher name), as given (usually) at the foot of a title page. [4.6. Title Pages]
element docImprint {
(text
| model.gLike
| model.phrase
| pubPlace
| docDate
| publisher
| model.global)*,
att.global.attributes,
empty
}
docDate =
## (document date) contains the date of a document, as given on a title page or in a dateline. [4.6. Title Pages]
element docDate {
macro.phraseSeq,
att.global.attributes,
## (when) gives the value of the date in standard form, i.e. YYYY-MM-DD.
attribute when {
xsd:date
| xsd:gYear
| xsd:gMonth
| xsd:gDay
| xsd:gYearMonth
| xsd:gMonthDay
| xsd:time
| xsd:dateTime
}?,
empty
}
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 front {
((model.frontPart
| model.pLike
| model.pLike.front
| model.global)*,
(((model.div1Like,
(model.div1Like | model.frontPart | model.global)*)
| (model.divLike,
(model.divLike | model.frontPart | model.global)*)),
(model.divBottom, (model.divBottom | model.global)*)?)?),
att.global.attributes,
att.declaring.attributes,
empty
}
back =
## (back matter) contains any appendixes, etc. following the main part of a text. [4.7. Back Matter 4. Default Text Structure]
element back {
((model.frontPart
| model.pLike.front
| model.pLike
| model.listLike
| model.global)*,
((model.div1Like,
(model.frontPart | model.div1Like | model.global)*)
| (model.divLike,
(model.frontPart | model.divLike | model.global)*))?,
(model.divBottomPart, (model.divBottomPart | model.global)*)?),
att.global.attributes,
att.declaring.attributes,
empty
}
att.gaijiProp.attributes =
att.gaijiProp.attribute.name,
att.gaijiProp.attribute.value,
att.gaijiProp.attribute.version
att.gaijiProp.attribute.name =
## provides the name of the character or glyph property being defined.
attribute name { xsd:NCName }
att.gaijiProp.attribute.value =
## provides the value of the character or glyph property being defined.
attribute value { xsd:string }
att.gaijiProp.attribute.version =
## specifies the version number of the Unicode Standard in which this property name is defined.
## Suggested values include: 1] 1.0.1; 2] 1.1; 3] 2.0; 4] 2.1; 5] 3.0; 6] 3.1; 7] 3.2; 8] 4.0; 9] 4.1; 10] 5.0; 11] 5.1; 12] 5.2; 13] 6.0; 14] 6.1; 15] 6.2; 16] 6.3; 17] 7.0; 18] 8.0; 19] 9.0; 20] 10.0; 21] 11.0; 22] 12.0; 23] 12.1; 24] unassigned
attribute version {
##
"1.0.1"
|
##
"1.1"
|
##
"2.0"
|
##
"2.1"
|
##
"3.0"
|
##
"3.1"
|
##
"3.2"
|
##
"4.0"
|
##
"4.1"
|
##
"5.0"
|
##
"5.1"
|
##
"5.2"
|
##
"6.0"
|
##
"6.1"
|
##
"6.2"
|
##
"6.3"
|
##
"7.0"
|
##
"8.0"
|
##
"9.0"
|
##
"10.0"
|
##
"11.0"
|
##
"12.0"
|
##
"12.1"
|
##
"unassigned"
| xsd:token { pattern = "[^\p{C}\p{Z}]+" }
}?
g =
## (character or glyph) represents a glyph, or a non-standard character. [5. Characters, Glyphs, and Writing Modes]
element g {
text,
att.global.attributes,
att.typed.attributes,
## points to a description of the character or glyph intended.
attribute ref {
xsd:anyURI { pattern = "\S+" }
}?,
empty
}
charDecl =
## (character declarations) provides information about nonstandard characters and glyphs. [5.2. Markup Constructs for Representation of Characters and Glyphs]
element charDecl {
(desc?, (char | glyph)+),
att.global.attributes,
empty
}
char =
## (character) provides descriptive information about a character. [5.2. Markup Constructs for Representation of Characters and Glyphs]
element char {
(unicodeProp
| unihanProp
| localProp
| mapping
| figure
| model.graphicLike
| model.noteLike
| model.descLike)*,
att.global.attributes,
empty
}
glyph =
## (character glyph) provides descriptive information about a character glyph. [5.2. Markup Constructs for Representation of Characters and Glyphs]
element glyph {
(unicodeProp
| unihanProp
| localProp
| mapping
| figure
| model.graphicLike
| model.noteLike
| model.descLike)*,
att.global.attributes,
empty
}
localProp =
## (locally defined property) provides a locally defined character (or glyph) property. [5.2.1. Character Properties]
element localProp {
empty, att.global.attributes, att.gaijiProp.attributes, empty
}
mapping =
[
a:documentation [
"(character mapping) contains one or more characters which are related to the parent character or glyph in some respect, as specified by the "
ns1:code [ "@type" ]
" attribute. [5.2. Markup Constructs for Representation of Characters and Glyphs]"
]
]
element mapping {
macro.xtext, att.global.attributes, att.typed.attributes, empty
}
unihanProp =
## (unihan property) holds the name and value of a normative or informative Unihan character (or glyph) property as part of its attributes. [5.2.1. Character Properties]
element unihanProp {
empty,
att.global.attributes,
att.gaijiProp.attribute.version,
## specifies the normalized name of a unicode han database (Unihan) property
attribute name {
##
"kZVariant"
|
##
"kAccountingNumeric"
|
##
"kBigFive"
|
##
"kCCCII"
|
##
"kCNS1986"
|
##
"kCNS1992"
|
##
"kCangjie"
|
##
"kCantonese"
|
##
"kCheungBauer"
|
##
"kCheungBauerIndex"
|
##
"kCihaiT"
|
##
"kCompatibilityVariant"
|
##
"kCowles"
|
##
"kDaeJaweon"
|
##
"kDefinition"
|
##
"kEACC"
|
##
"kFenn"
|
##
"kFennIndex"
|
##
"kFourCornerCode"
|
##
"kFrequency"
|
##
"kGB0"
|
##
"kGB1"
|
##
"kGB3"
|
##
"kGB5"
|
##
"kGB7"
|
##
"kGB8"
|
##
"kGSR"
|
##
"kGradeLevel"
|
##
"kHDZRadBreak"
|
##
"kHKGlyph"
|
##
"kHKSCS"
|
##
"kHanYu"
|
##
"kHangul"
|
##
"kHanyuPinlu"
|
##
"kHanyuPinyin"
|
##
"kIBMJapan"
|
##
"kIICore"
|
##
"kIRGDaeJaweon"
|
##
"kIRGDaiKanwaZiten"
|
##
"kIRGHanyuDaZidian"
|
##
"kIRGKangXi"
|
##
"kIRG_GSource"
|
##
"kIRG_HSource"
|
##
"kIRG_JSource"
|
##
"kIRG_KPSource"
|
##
"kIRG_KSource"
|
##
"kIRG_MSource"
|
##
"kIRG_TSource"
|
##
"kIRG_USource"
|
##
"kIRG_VSource"
|
##
"kJIS0213"
|
##
"kJa"
|
##
"kJapaneseKun"
|
##
"kJapaneseOn"
|
##
"kJinmeiyoKanji"
|
##
"kJis0"
|
##
"kJis1"
|
##
"kJoyoKanji"
|
##
"kKPS0"
|
##
"kKPS1"
|
##
"kKSC0"
|
##
"kKSC1"
|
##
"kKangXi"
|
##
"kKarlgren"
|
##
"kKorean"
|
##
"kKoreanEducationHanja"
|
##
"kKoreanName"
|
##
"kLau"
|
##
"kMainlandTelegraph"
|
##
"kMandarin"
|
##
"kMatthews"
|
##
"kMeyerWempe"
|
##
"kMorohashi"
|
##
"kNelson"
|
##
"kOtherNumeric"
|
##
"kPhonetic"
|
##
"kPrimaryNumeric"
|
##
"kPseudoGB1"
|
##
"kRSAdobe_Japan1_6"
|
##
"kRSJapanese"
|
##
"kRSKanWa"
|
##
"kRSKangXi"
|
##
"kRSKorean"
|
##
"kRSUnicode"
|
##
"kSBGY"
|
##
"kSemanticVariant"
|
##
"kSimplifiedVariant"
|
##
"kSpecializedSemanticVariant"
|
##
"kTGH"
|
##
"kTaiwanTelegraph"
|
##
"kTang"
|
##
"kTotalStrokes"
|
##
"kTraditionalVariant"
|
##
"kVietnamese"
|
##
"kXHC1983"
|
##
"kXerox"
},
## specifies the value of a named Unihan property
attribute value {
xsd:token { pattern = "[^\p{C}\p{Z}]+" }
},
empty
}
unicodeProp =
## (unicode property) provides a Unicode property for a character (or glyph). [5.2.1. Character Properties]
element unicodeProp {
empty,
att.global.attributes,
att.gaijiProp.attribute.version,
## specifies the normalized name of a Unicode property.
attribute name {
##
"Age"
|
##
"AHex"
|
##
"Alpha"
|
##
"Alphabetic"
|
##
"ASCII_Hex_Digit"
|
##
"bc"
|
##
"Bidi_C"
|
##
"Bidi_Class"
|
##
"Bidi_Control"
|
##
"Bidi_M"
|
##
"Bidi_Mirrored"
|
##
"Bidi_Mirroring_Glyph"
|
##
"Bidi_Paired_Bracket"
|
##
"Bidi_Paired_Bracket_Type"
|
##
"blk"
|
##
"Block"
|
##
"bmg"
|
##
"bpb"
|
##
"bpt"
|
##
"Canonical_Combining_Class"
|
##
"Case_Folding"
|
##
"Case_Ignorable"
|
##
"Cased"
|
##
"ccc"
|
##
"CE"
|
##
"cf"
|
##
"Changes_When_Casefolded"
|
##
"Changes_When_Casemapped"
|
##
"Changes_When_Lowercased"
|
##
"Changes_When_NFKC_Casefolded"
|
##
"Changes_When_Titlecased"
|
##
"Changes_When_Uppercased"
|
##
"CI"
|
##
"Comp_Ex"
|
##
"Composition_Exclusion"
|
##
"CWCF"
|
##
"CWCM"
|
##
"CWKCF"
|
##
"CWL"
|
##
"CWT"
|
##
"CWU"
|
##
"Dash"
|
##
"Decomposition_Mapping"
|
##
"Decomposition_Type"
|
##
"Default_Ignorable_Code_Point"
|
##
"Dep"
|
##
"Deprecated"
|
##
"DI"
|
##
"Dia"
|
##
"Diacritic"
|
##
"dm"
|
##
"dt"
|
##
"ea"
|
##
"East_Asian_Width"
|
##
"EqUIdeo"
|
##
"Equivalent_Unified_Ideograph"
|
##
"Expands_On_NFC"
|
##
"Expands_On_NFD"
|
##
"Expands_On_NFKC"
|
##
"Expands_On_NFKD"
|
##
"Ext"
|
##
"Extender"
|
##
"FC_NFKC"
|
##
"FC_NFKC_Closure"
|
##
"Full_Composition_Exclusion"
|
##
"gc"
|
##
"GCB"
|
##
"General_Category"
|
##
"Gr_Base"
|
##
"Gr_Ext"
|
##
"Gr_Link"
|
##
"Grapheme_Base"
|
##
"Grapheme_Cluster_Break"
|
##
"Grapheme_Extend"
|
##
"Grapheme_Link"
|
##
"Hangul_Syllable_Type"
|
##
"Hex"
|
##
"Hex_Digit"
|
##
"hst"
|
##
"Hyphen"
|
##
"ID_Continue"
|
##
"ID_Start"
|
##
"IDC"
|
##
"Ideo"
|
##
"Ideographic"
|
##
"IDS"
|
##
"IDS_Binary_Operator"
|
##
"IDS_Trinary_Operator"
|
##
"IDSB"
|
##
"IDST"
|
##
"Indic_Positional_Category"
|
##
"Indic_Syllabic_Category"
|
##
"InPC"
|
##
"InSC"
|
##
"isc"
|
##
"ISO_Comment"
|
##
"Jamo_Short_Name"
|
##
"jg"
|
##
"Join_C"
|
##
"Join_Control"
|
##
"Joining_Group"
|
##
"Joining_Type"
|
##
"JSN"
|
##
"jt"
|
##
"kAccountingNumeric"
|
##
"kCompatibilityVariant"
|
##
"kIICore"
|
##
"kIRG_GSource"
|
##
"kIRG_HSource"
|
##
"kIRG_JSource"
|
##
"kIRG_KPSource"
|
##
"kIRG_KSource"
|
##
"kIRG_MSource"
|
##
"kIRG_TSource"
|
##
"kIRG_USource"
|
##
"kIRG_VSource"
|
##
"kOtherNumeric"
|
##
"kPrimaryNumeric"
|
##
"kRSUnicode"
|
##
"lb"
|
##
"lc"
|
##
"Line_Break"
|
##
"LOE"
|
##
"Logical_Order_Exception"
|
##
"Lower"
|
##
"Lowercase"
|
##
"Lowercase_Mapping"
|
##
"Math"
|
##
"na"
|
##
"na1"
|
##
"Name"
|
##
"Name_Alias"
|
##
"NChar"
|
##
"NFC_QC"
|
##
"NFC_Quick_Check"
|
##
"NFD_QC"
|
##
"NFD_Quick_Check"
|
##
"NFKC_Casefold"
|
##
"NFKC_CF"
|
##
"NFKC_QC"
|
##
"NFKC_Quick_Check"
|
##
"NFKD_QC"
|
##
"NFKD_Quick_Check"
|
##
"Noncharacter_Code_Point"
|
##
"nt"
|
##
"Numeric_Type"
|
##
"Numeric_Value"
|
##
"nv"
|
##
"OAlpha"
|
##
"ODI"
|
##
"OGr_Ext"
|
##
"OIDC"
|
##
"OIDS"
|
##
"OLower"
|
##
"OMath"
|
##
"Other_Alphabetic"
|
##
"Other_Default_Ignorable_Code_Point"
|
##
"Other_Grapheme_Extend"
|
##
"Other_ID_Continue"
|
##
"Other_ID_Start"
|
##
"Other_Lowercase"
|
##
"Other_Math"
|
##
"Other_Uppercase"
|
##
"OUpper"
|
##
"Pat_Syn"
|
##
"Pat_WS"
|
##
"Pattern_Syntax"
|
##
"Pattern_White_Space"
|
##
"PCM"
|
##
"Prepended_Concatenation_Mark"
|
##
"QMark"
|
##
"Quotation_Mark"
|
##
"Radical"
|
##
"Regional_Indicator"
|
##
"RI"
|
##
"SB"
|
##
"sc"
|
##
"scf"
|
##
"Script"
|
##
"Script_Extensions"
|
##
"scx"
|
##
"SD"
|
##
"Sentence_Break"
|
##
"Sentence_Terminal"
|
##
"Simple_Case_Folding"
|
##
"Simple_Lowercase_Mapping"
|
##
"Simple_Titlecase_Mapping"
|
##
"Simple_Uppercase_Mapping"
|
##
"slc"
|
##
"Soft_Dotted"
|
##
"stc"
|
##
"STerm"
|
##
"suc"
|
##
"tc"
|
##
"Term"
|
##
"Terminal_Punctuation"
|
##
"Titlecase_Mapping"
|
##
"uc"
|
##
"UIdeo"
|
##
"Unicode_1_Name"
|
##
"Unified_Ideograph"
|
##
"Upper"
|
##
"Uppercase"
|
##
"Uppercase_Mapping"
|
##
"Variation_Selector"
|
##
"Vertical_Orientation"
|
##
"vo"
|
##
"VS"
|
##
"WB"
|
##
"White_Space"
|
##
"Word_Break"
|
##
"WSpace"
|
##
"XID_Continue"
|
##
"XID_Start"
|
##
"XIDC"
|
##
"XIDS"
|
##
"XO_NFC"
|
##
"XO_NFD"
|
##
"XO_NFKC"
|
##
"XO_NFKD"
},
## specifies the value of a named Unicode property.
attribute value { xsd:string },
empty
}
att.metrical.attributes =
att.metrical.attribute.met,
att.metrical.attribute.real,
att.metrical.attribute.rhyme
att.metrical.attribute.met =
## (metrical structure, conventional) contains a user-specified encoding for the conventional metrical structure of the element.
attribute met { xsd:token }?
att.metrical.attribute.real =
## (metrical structure, realized) contains a user-specified encoding for the actual realization of the conventional metrical structure applicable to the element.
attribute real { xsd:token }?
att.metrical.attribute.rhyme =
## (rhyme scheme) specifies the rhyme scheme applicable to a group of verse lines.
attribute rhyme { xsd:token }?
att.enjamb.attributes = att.enjamb.attribute.enjamb
att.enjamb.attribute.enjamb =
## (enjambement) indicates that the end of a verse line is marked by enjambement.
## Sample values include: 1] no; 2] yes; 3] weak; 4] strong
attribute enjamb {
xsd:token { pattern = "[^\p{C}\p{Z}]+" }
}?
metDecl =
[
a:documentation [
"(metrical notation declaration) documents the notation employed to represent a metrical pattern when this is specified as the value of a "
ns1:code [ "@met" ]
", "
ns1:code [ "@real" ]
", or "
ns1:code [ "@rhyme" ]
" attribute on any structural element of a metrical text (e.g. "
ns1:code [ "<lg>" ]
", "
ns1:code [ "<l>" ]
", or "
ns1:code [ "<seg>" ]
"). [6.6. Metrical Notation Declaration 6.4. Rhyme and Metrical Analysis]"
]
]
element metDecl {
((model.pLike | model.noteLike)+ | metSym+),
att.global.attributes,
att.declarable.attributes,
## indicates whether the notation conveys the abstract metrical form, its actual prosodic realization, or the rhyme scheme, or some combination thereof.
[ a:defaultValue = "met real" ]
attribute type {
list {
([
a:documentation [
"(met attribute) declaration applies to the abstract metrical form recorded on the "
ns1:code [ "@met" ]
" attribute"
]
]
"met"
| [
a:documentation [
"(real attribute) declaration applies to the actual realization of the conventional metrical structure recorded on the "
ns1:code [ "@real" ]
" attribute"
]
]
"real"
| [
a:documentation [
"declaration applies to the rhyme scheme recorded on the "
ns1:code [ "@rhyme" ]
" attribute"
]
]
"rhyme"),
([
a:documentation [
"(met attribute) declaration applies to the abstract metrical form recorded on the "
ns1:code [ "@met" ]
" attribute"
]
]
"met"
| [
a:documentation [
"(real attribute) declaration applies to the actual realization of the conventional metrical structure recorded on the "
ns1:code [ "@real" ]
" attribute"
]
]
"real"
| [
a:documentation [
"declaration applies to the rhyme scheme recorded on the "
ns1:code [ "@rhyme" ]
" attribute"
]
]
"rhyme")?,
([
a:documentation [
"(met attribute) declaration applies to the abstract metrical form recorded on the "
ns1:code [ "@met" ]
" attribute"
]
]
"met"
| [
a:documentation [
"(real attribute) declaration applies to the actual realization of the conventional metrical structure recorded on the "
ns1:code [ "@real" ]
" attribute"
]
]
"real"
| [
a:documentation [
"declaration applies to the rhyme scheme recorded on the "
ns1:code [ "@rhyme" ]
" attribute"
]
]
"rhyme")?
}
}?,
## (regular expression pattern) specifies a regular expression defining any value that is legal for this notation.
attribute pattern { xsd:token }?,
empty
}
metSym =
[
a:documentation [
"(metrical notation symbol) documents the intended significance of a particular character or character sequence within a metrical notation, either explicitly or in terms of other "
ns1:code [ "<metSym>" ]
" elements in the same "
ns1:code [ "<metDecl>" ]
". [6.6. Metrical Notation Declaration]"
]
]
element metSym {
macro.phraseSeq.limited,
att.global.attributes,
## specifies the character or character sequence being documented.
attribute value {
list {
xsd:token { pattern = "[^\p{C}\p{Z}]+" }+
}
},
[
a:defaultValue = "true"
a:documentation [
"specifies whether the symbol is defined in terms of other symbols ("
ns1:code [ "@terminal" ]
" is set to false) or in prose ("
ns1:code [ "@terminal" ]
" is set to true)."
]
]
attribute terminal { xsd:boolean }?,
empty
}
caesura =
## marks the point at which a metrical line may be divided. [6.2. Components of the Verse Line]
element caesura { empty, att.global.attributes, empty }
rhyme =
## marks the rhyming part of a metrical line. [6.5. Rhyme]
element rhyme {
macro.paraContent,
att.global.attributes,
att.typed.attributes,
## provides a label (usually a single letter) to identify which part of a rhyme scheme this rhyming string instantiates.
attribute label {
xsd:token { pattern = "[^\p{C}\p{Z}]+" }
}?,
empty
}
set =
## (setting) contains a description of the setting, time, locale, appearance, etc., of the action of a play, typically found in the front matter of a printed performance text (not a stage direction). [7.1. Front and Back Matter
## ]
element set {
((model.headLike | model.global)*, (model.common, model.global*)*),
att.global.attributes,
empty
}
prologue =
## (prologue) contains the prologue to a drama, typically spoken by an actor out of character, possibly in association with a particular performance or venue. [7.1.2. Prologues and Epilogues 7.1. Front and Back Matter
## ]
element prologue {
((model.divTop | model.global)*,
(model.common, model.global*)+,
(model.divBottom, model.global*)*),
att.global.attributes,
empty
}
epilogue =
## (epilogue) contains the epilogue to a drama, typically spoken by an actor out of character, possibly in association with a particular performance or venue. [7.1.2. Prologues and Epilogues 7.1. Front and Back Matter
## ]
element epilogue {
((model.divTop | model.global)*,
(model.common, model.global*)+,
(model.divBottom, model.global*)*),
att.global.attributes,
empty
}
performance =
## (performance) contains a section of front or back matter describing how a dramatic piece is to be performed in general or how it was performed on some specific occasion. [7.1.3. Records of Performances 7.1. Front and Back Matter
## ]
element performance {
((model.divTop | model.global)*,
(model.common, model.global*)+,
(model.divBottom, model.global*)*),
att.global.attributes,
empty
}
castList =
## (cast list) contains a single cast list or dramatis personae. [7.1.4. Cast Lists 7.1. Front and Back Matter
## ]
element castList {
((model.divTop | model.global)*,
(model.common, model.global*)*,
((castItem | castGroup), model.global*)+,
(model.common, model.global*)*),
att.global.attributes,
empty
}
castGroup =
[
a:documentation [
"(cast list grouping) groups one or more individual "
ns1:code [ "<castItem>" ]
" elements within a cast list. [7.1.4. Cast Lists]"
]
]
element castGroup {
((model.global | model.headLike)*,
((castItem | castGroup | roleDesc), model.global*)+,
(trailer, model.global*)?),
att.global.attributes,
empty
}
castItem =
## (cast list item) contains a single entry within a cast list, describing either a single role or a list of non-speaking roles. [7.1.4. Cast Lists]
element castItem {
(text
| model.gLike
| model.castItemPart
| model.phrase
| model.global)*,
att.global.attributes,
att.typed.attribute.subtype,
## characterizes the cast item.
[ a:defaultValue = "role" ]
attribute type {
## the item describes a single role.
"role"
|
## the item describes a list of non-speaking roles.
"list"
}?,
empty
}
role =
## (role) contains the name of a dramatic role, as given in a cast list. [7.1.4. Cast Lists]
element role {
macro.phraseSeq,
att.global.attributes,
## specifies the gender of the role.
attribute gender {
list {
xsd:token { pattern = "[^\p{C}\p{Z}]+" }+
}
}?,
empty
}
roleDesc =
## (role description) describes a character's role in a drama. [7.1.4. Cast Lists]
element roleDesc { macro.phraseSeq, att.global.attributes, empty }
actor =
## contains the name of an actor appearing within a cast list. [7.1.4. Cast Lists]
element actor {
macro.phraseSeq,
att.global.attributes,
att.canonical.attributes,
## specifies the sex of the actor.
attribute sex {
list {
xsd:token { pattern = "[^\p{C}\p{Z}]+" }+
}
}?,
## specifies the gender of the actor.
attribute gender {
list {
xsd:token { pattern = "[^\p{C}\p{Z}]+" }+
}
}?,
empty
}
spGrp =
## (speech group) contains a group of speeches or songs in a performance text presented in a source as constituting a single unit or number. [7.2.3. Grouped Speeches]
element spGrp {
(model.headLike*, (model.global | sp | model.stageLike)+),
att.global.attributes,
att.typed.attributes,
att.ascribed.directed.attributes,
empty
}
move =
## (movement) marks the actual movement of one or more characters. [7.2.4. Stage Directions]
element move {
empty,
att.global.attributes,
att.typed.attribute.subtype,
att.ascribed.directed.attributes,
## characterizes the movement, for example as an entrance or exit.
## Suggested values include: 1] entrance; 2] exit; 3] onStage
attribute type {
## character is entering the stage.
"entrance"
|
## character is exiting the stage.
"exit"
|
## character moves on stage
"onStage"
| xsd:token { pattern = "[^\p{C}\p{Z}]+" }
}?,
## specifies the direction of a stage movement.
## Sample values include: 1] L (left); 2] R (right); 3] C (center)
attribute where {
list {
(xsd:token { pattern = "[^\p{C}\p{Z}]+" }
| xsd:anyURI { pattern = "\S+" })+
}
}?,
[
a:documentation [
"(performance) identifies the performance or performances in which this movement occurred as specified by pointing to one or more "
ns1:code [ "<performance>" ]
" elements."
]
]
attribute perf {
list {
xsd:anyURI { pattern = "\S+" }+
}
}?,
empty
}
view =
## (view) describes the visual context of some part of a screen play in terms of what the spectator sees, generally independent of any dialogue. [7.3.1. Technical Information 7.3. Other Types of Performance Text]
element view { macro.specialPara, att.global.attributes, empty }
camera =
## (camera) describes a particular camera angle or viewpoint in a screen play. [7.3.1. Technical Information 7.3. Other Types of Performance Text]
element camera {
macro.paraContent,
att.global.attributes,
att.typed.attributes,
empty
}
sound =
## (sound) describes a sound effect or musical sequence specified within a screen play or radio script. [7.3.1. Technical Information 7.3. Other Types of Performance Text]
element sound {
macro.paraContent,
att.global.attributes,
att.typed.attribute.subtype,
## categorizes the sound in some respect, e.g. as music, special effect, etc.
attribute type {
xsd:token { pattern = "[^\p{C}\p{Z}]+" }
}?,
## indicates whether the sound overlaps the surrounding speeches or interrupts them.
attribute discrete {
xsd:boolean
| (
##
"unknown"
|
##
"inapplicable")
}?,
empty
}
caption =
## (caption) contains the text of a caption or other text displayed as part of a film script or screenplay. [7.3.1. Technical Information 7.3. Other Types of Performance Text]
element caption { macro.paraContent, att.global.attributes, empty }
tech =
## (technical stage direction) describes a special-purpose stage direction that is not meant for the actors. [7.3.1. Technical Information]
element tech {
macro.paraContent,
att.global.attributes,
att.typed.attribute.subtype,
## categorizes the technical stage direction.
## Suggested values include: 1] light; 2] sound; 3] prop; 4] block
attribute type {
## a lighting cue
"light"
|
## a sound cue
"sound"
|
## a prop cue
"prop"
|
## a blocking instruction
"block"
| xsd:token { pattern = "[^\p{C}\p{Z}]+" }
}?,
[
a:documentation [
"(performance) points to one or more "
ns1:code [ "<performance>" ]
" elements documenting the performance or performances to which this technical direction applies."
]
]
attribute perf {
list {
xsd:anyURI { pattern = "\S+" }+
}
}?,
empty
}
att.duration.attributes =
att.duration.w3c.attributes, att.duration.iso.attributes
model.global.spoken =
pause | vocal | kinesic | incident | writing | shift
model.global.spoken_alternation =
pause | vocal | kinesic | incident | writing | shift
model.global.spoken_sequence =
pause, vocal, kinesic, incident, writing, shift
model.global.spoken_sequenceOptional =
pause?, vocal?, kinesic?, incident?, writing?, shift?
model.global.spoken_sequenceOptionalRepeatable =
pause*, vocal*, kinesic*, incident*, writing*, shift*
model.global.spoken_sequenceRepeatable =
pause+, vocal+, kinesic+, incident+, writing+, shift+
model.recordingPart =
model.dateLike | media | respStmt | equipment | broadcast
model.divPart.spoken = u | annotationBlock
model.divPart.spoken_alternation = u | annotationBlock
model.divPart.spoken_sequence = u, annotationBlock
model.divPart.spoken_sequenceOptional = u?, annotationBlock?
model.divPart.spoken_sequenceOptionalRepeatable = u*, annotationBlock*
model.divPart.spoken_sequenceRepeatable = u+, annotationBlock+
scriptStmt =
## (script statement) contains a citation giving details of the script used for a spoken text. [8.2. Documenting the Source of Transcribed Speech 2.2.7. The Source Description 15.3.2. Declarable Elements]
element scriptStmt {
(model.pLike+ | model.biblLike),
att.global.attributes,
att.declarable.attributes,
empty
}
recordingStmt =
## (recording statement) describes a set of recordings used as the basis for transcription of a spoken text. [8.2. Documenting the Source of Transcribed Speech 2.2.7. The Source Description]
element recordingStmt {
(model.pLike+ | recording+), att.global.attributes, empty
}
recording =
## (recording event) provides details of an audio or video recording event used as the source of a spoken text, either directly or from a public broadcast. [8.2. Documenting the Source of Transcribed Speech 15.3.2. Declarable Elements]
element recording {
(model.recordingPart | model.pLike)*,
att.global.attributes,
att.declarable.attributes,
att.duration.attributes,
att.typed.attribute.subtype,
## the kind of recording.
[ a:defaultValue = "audio" ]
attribute type {
## audio recording
"audio"
|
## audio and video recording
"video"
}?,
empty
}
equipment =
## (equipment) provides technical details of the equipment and media used for an audio or video recording used as the source for a spoken text. [8.2. Documenting the Source of Transcribed Speech 15.3.2. Declarable Elements]
element equipment {
model.pLike+,
att.global.attributes,
att.declarable.attributes,
empty
}
broadcast =
## (broadcast) describes a broadcast used as the source of a spoken text. [8.2. Documenting the Source of Transcribed Speech 15.3.2. Declarable Elements]
element broadcast {
(model.pLike+ | model.biblLike | recording),
att.global.attributes,
att.declarable.attributes,
empty
}
transcriptionDesc =
## (transcription description) describes the set of transcription conventions used, particularly for spoken material. [8.2. Documenting the Source of Transcribed Speech]
element transcriptionDesc {
(model.labelLike | model.ptrLike | model.pLike)*,
att.global.attributes,
## supplies an identifier for the encoding convention, independent of any version number.
attribute ident { xsd:Name },
## supplies a version number for the encoding conventions used, if any.
attribute version {
xsd:token {
pattern = "[\d]+[a-z]*[\d]*(\.[\d]+[a-z]*[\d]*){0,3}"
}
}?,
empty
}
u =
## (utterance) contains a stretch of speech usually preceded and followed by silence or by a change of speaker. [8.3.1. Utterances]
element u {
macro.paraContent,
att.global.attributes,
att.timed.attributes,
att.declaring.attributes,
att.ascribed.directed.attributes,
att.notated.attributes,
## (transition) indicates the nature of the transition between this utterance and the previous one.
[ a:defaultValue = "smooth" ]
attribute trans {
## this utterance begins without unusual pause or rapidity.
"smooth"
|
## this utterance begins with a markedly shorter pause than normal.
"latching"
|
## this utterance begins before the previous one has finished.
"overlap"
|
## this utterance begins after a noticeable pause.
"pause"
}?,
empty
}
pause =
## (pause) marks a pause either between or within utterances. [8.3.2. Pausing]
element pause {
empty,
att.global.attributes,
att.timed.attributes,
att.typed.attributes,
att.ascribed.directed.attributes,
empty
}
vocal =
## (vocal) marks any vocalized but not necessarily lexical phenomenon, for example voiced pauses, non-lexical backchannels, etc. [8.3.3. Vocal, Kinesic, Incident]
element vocal {
model.descLike*,
att.global.attributes,
att.timed.attributes,
att.ascribed.directed.attributes,
att.typed.attributes,
## indicates whether or not the phenomenon is repeated.
[ a:defaultValue = "false" ]
attribute iterated {
xsd:boolean
| (
##
"unknown"
|
##
"inapplicable")
}?,
empty
}
kinesic =
## (kinesic) marks any communicative phenomenon, not necessarily vocalized, for example a gesture, frown, etc. [8.3.3. Vocal, Kinesic, Incident]
element kinesic {
model.descLike*,
att.global.attributes,
att.timed.attributes,
att.typed.attributes,
att.ascribed.directed.attributes,
## indicates whether or not the phenomenon is repeated.
[ a:defaultValue = "false" ]
attribute iterated {
xsd:boolean
| (
##
"unknown"
|
##
"inapplicable")
}?,
empty
}
incident =
## (incident) marks any phenomenon or occurrence, not necessarily vocalized or communicative, for example incidental noises or other events affecting communication. [8.3.3. Vocal, Kinesic, Incident]
element incident {
model.descLike*,
att.global.attributes,
att.timed.attributes,
att.typed.attributes,
att.ascribed.attributes,
empty
}
writing =
## (writing) contains a passage of written text revealed to participants in the course of a spoken text. [8.3.4. Writing]
element writing {
macro.paraContent,
att.global.attributes,
att.ascribed.directed.attributes,
att.typed.attributes,
att.timed.attributes,
## indicates whether the writing is revealed all at once or gradually.
attribute gradual {
xsd:boolean
| (
##
"unknown"
|
##
"inapplicable")
}?,
empty
}
shift =
## (shift) marks the point at which some paralinguistic feature of a series of utterances by any one speaker changes. [8.3.6. Shifts]
element shift {
empty
>> sch:pattern [
id = "tei_all-shift-shiftNew-constraint-assert-14"
"\x{a}" ~
" "
sch:rule [
context = "tei:shift"
"\x{a}" ~
" "
sch:assert [
test = "@new"
role = "warning"
" \x{a}" ~
"The @new attribute should always be supplied; use the special value\x{a}" ~
'"normal" to indicate that the feature concerned ceases to be\x{a}' ~
"remarkable at this point."
]
"\x{a}" ~
" "
]
"\x{a}" ~
" "
],
att.global.attributes,
att.ascribed.attributes,
## a paralinguistic feature.
## Suggested values include: 1] tempo; 2] loud; 3] pitch; 4] tension; 5] rhythm; 6] voice
attribute feature {
## speed of utterance.
"tempo"
|
## loudness.
"loud"
|
## pitch range.
"pitch"
|
## tension or stress pattern.
"tension"
|
## rhythmic qualities.
"rhythm"
|
## voice quality.
"voice"
| xsd:token { pattern = "[^\p{C}\p{Z}]+" }
}?,
## specifies the new state of the paralinguistic feature specified.
[ a:defaultValue = "normal" ]
attribute new {
xsd:token { pattern = "[^\p{C}\p{Z}]+" }
}?,
empty
}
annotationBlock =
## groups together various annotations, e.g. for parallel interpretations of a spoken segment. [8.4.6. Analytic Coding]
element annotationBlock {
(u | spanGrp | model.global.spoken)*,
att.ascribed.attributes,
att.timed.attributes,
att.global.attributes,
empty
}
att.lexicographic.normalized.attributes =
att.lexicographic.normalized.attribute.norm,
att.lexicographic.normalized.attribute.orig
att.lexicographic.normalized.attribute.norm =
## (normalized) provides the normalized/standardized form of information present in the source text in a non-normalized form
attribute norm { xsd:string }?
att.lexicographic.normalized.attribute.orig =
## (original) gives the original string or is the empty string when the element does not appear in the source text.
attribute orig { xsd:string }?
att.linguistic.attributes =
att.lexicographic.normalized.attributes,
att.linguistic.attribute.lemma,
att.linguistic.attribute.lemmaRef,
att.linguistic.attribute.pos,
att.linguistic.attribute.msd,
att.linguistic.attribute.join
att.linguistic.attribute.lemma =
## provides a lemma (base form) for the word, typically uninflected and serving both as an identifier (e.g. in dictionary contexts, as a headword), and as a basis for potential inflections.
attribute lemma { xsd:string }?
att.linguistic.attribute.lemmaRef =
## provides a pointer to a definition of the lemma for the word, for example in an online lexicon.
attribute lemmaRef {
xsd:anyURI { pattern = "\S+" }
}?
att.linguistic.attribute.pos =
## (part of speech) indicates the part of speech assigned to a token (i.e. information on whether it is a noun, adjective, or verb), usually according to some official reference vocabulary (e.g. for German: STTS, for English: CLAWS, for Polish: NKJP, etc.).
attribute pos { xsd:string }?
att.linguistic.attribute.msd =
[
a:documentation [
"(morphosyntactic description) supplies morphosyntactic information for a token, usually according to some official reference vocabulary (e.g. for German: "
ns1:a [
href =
"http://www.ims.uni-stuttgart.de/forschung/ressourcen/lexika/TagSets/stts-1999.pdf"
"STTS-large tagset"
]
"; for a feature description system designed as (pragmatically) universal, see "
ns1:a [
href = "http://universaldependencies.org/u/feat/index.html"
"Universal Features"
]
")."
]
]
attribute msd { xsd:string }?
att.linguistic.attribute.join =
## when present, provides information on whether the token in question is adjacent to another, and if so, on which side.
attribute join {
## the token is not adjacent to another
"no"
|
## there is no whitespace on the left side of the token
"left"
|
## there is no whitespace on the right side of the token
"right"
|
## there is no whitespace on either side of the token
"both"
|
## the token overlaps with another; other devices (specifying the extent and the area of overlap) are needed to more precisely locate this token in the character stream
"overlap"
}?
att.global.analytic.attributes = att.global.analytic.attribute.ana
att.global.analytic.attribute.ana =
[
a:documentation [
"(analysis) indicates one or more elements containing interpretations of the element on which the "
ns1:code [ "@ana" ]
" attribute appears."
]
]
attribute ana {
list {
xsd:anyURI { pattern = "\S+" }+
}
}?
s =
## (s-unit) contains a sentence-like division of a text. [17.1. Linguistic Segment Categories 8.4.1. Segmentation]
element s {
macro.phraseSeq
>> sch:pattern [
id = "tei_all-s-noNestedS-constraint-report-17"
"\x{a}" ~
" "
sch:rule [
context = "tei:s"
"\x{a}" ~
" "
sch:report [
test = "tei:s"
"You may not nest one s element within\x{a}" ~
" another: use seg instead"
]
"\x{a}" ~
" "
]
"\x{a}" ~
" "
],
att.global.attributes,
att.segLike.attributes,
att.typed.attributes,
att.notated.attributes,
empty
}
cl =
## (clause) represents a grammatical clause. [17.1. Linguistic Segment Categories]
element cl {
macro.phraseSeq,
att.global.attributes,
att.segLike.attributes,
att.typed.attributes,
att.notated.attributes,
empty
}
phr =
## (phrase) represents a grammatical phrase. [17.1. Linguistic Segment Categories]
element phr {
macro.phraseSeq,
att.global.attributes,
att.segLike.attributes,
att.typed.attributes,
att.notated.attributes,
empty
}
w =
## (word) represents a grammatical (not necessarily orthographic) word. [17.1. Linguistic Segment Categories 17.4.2. Lightweight Linguistic Annotation]
element w {
(text
| model.gLike
| seg
| w
| m
| c
| pc
| model.global
| model.lPart
| model.hiLike
| model.pPart.edit)*,
att.global.attributes,
att.segLike.attributes,
att.typed.attributes,
att.linguistic.attributes,
att.notated.attributes,
empty
}
m =
## (morpheme) represents a grammatical morpheme. [17.1. Linguistic Segment Categories]
element m {
(text | model.gLike | model.hiLike | seg | m | c | model.global)*,
att.global.attributes,
att.segLike.attributes,
att.typed.attributes,
att.notated.attributes,
## supplies the morpheme's base form.
attribute baseForm {
xsd:token { pattern = "[^\p{C}\p{Z}]+" }
}?,
empty
}
c =
## (character) represents a character. [17.1. Linguistic Segment Categories]
element c {
macro.xtext,
att.global.attributes,
att.segLike.attributes,
att.typed.attributes,
att.notated.attributes,
empty
}
pc =
## (punctuation character) contains a character or string of characters regarded as constituting a single punctuation mark. [17.1.2. Below the Word Level 17.4.2. Lightweight Linguistic Annotation]
element pc {
(text | model.gLike | c | model.pPart.edit)*,
att.global.attributes,
att.segLike.attributes,
att.typed.attributes,
att.linguistic.attributes,
## indicates the extent to which this punctuation mark conventionally separates words or phrases
attribute force {
## the punctuation mark is a word separator
"strong"
|
## the punctuation mark is not a word separator
"weak"
|
## the punctuation mark may or may not be a word separator
"inter"
}?,
## provides a name for the kind of unit delimited by this punctuation mark.
attribute unit {
xsd:token { pattern = "[^\p{C}\p{Z}]+" }
}?,
## indicates whether this punctuation mark precedes or follows the unit it delimits.
attribute pre { xsd:boolean }?,
empty
}
span =
## associates an interpretative annotation directly with a span of text. [17.3. Spans and Interpretations]
element span {
macro.phraseSeq.limited
>> sch:pattern [
id = "tei_all-span-targetfrom-constraint-report-18"
"\x{a}" ~
" "
sch:rule [
context = "tei:span"
"\x{a}" ~
" "
sch:report [
test = "@from and @target"
"\x{a}" ~
"Only one of the attributes @target and @from may be supplied on "
sch:name [ ]
"\x{a}" ~
" "
]
"\x{a}" ~
" "
]
"\x{a}" ~
" "
]
>> sch:pattern [
id = "tei_all-span-targetto-constraint-report-19"
"\x{a}" ~
" "
sch:rule [
context = "tei:span"
"\x{a}" ~
" "
sch:report [
test = "@to and @target"
"\x{a}" ~
"Only one of the attributes @target and @to may be supplied on "
sch:name [ ]
"\x{a}" ~
" "
]
"\x{a}" ~
" "
]
"\x{a}" ~
" "
]
>> sch:pattern [
id = "tei_all-span-tonotfrom-constraint-report-20"
"\x{a}" ~
" "
sch:rule [
context = "tei:span"
"\x{a}" ~
" "
sch:report [
test = "@to and not(@from)"
"\x{a}" ~
"If @to is supplied on "
sch:name [ ]
", @from must be supplied as well"
]
"\x{a}" ~
" "
]
"\x{a}" ~
" "
]
>> sch:pattern [
id = "tei_all-span-tofrom-constraint-report-21"
"\x{a}" ~
" "
sch:rule [
context = "tei:span"
"\x{a}" ~
" "
sch:report [
test =
"contains(normalize-space(@to),' ') or contains(normalize-space(@from),' ')"
"\x{a}" ~
"The attributes @to and @from on "
sch:name [ ]
" may each contain only a single value"
]
"\x{a}" ~
" "
]
"\x{a}" ~
" "
],
att.global.attributes,
att.interpLike.attributes,
att.pointing.attributes,
[
a:documentation [
"gives the identifier of the node which is the starting point of the span of text being annotated; if not accompanied by a "
ns1:code [ "@to" ]
" attribute, gives the identifier of the node of the entire span of text being annotated."
]
]
attribute from {
xsd:anyURI { pattern = "\S+" }
}?,
## gives the identifier of the node which is the end-point of the span of text being annotated.
attribute to {
xsd:anyURI { pattern = "\S+" }
}?,
empty
}
spanGrp =
## (span group) collects together span tags. [17.3. Spans and Interpretations]
element spanGrp {
(model.descLike*, span*),
att.global.attributes,
att.interpLike.attributes,
empty
}
interp =
## (interpretation) summarizes a specific interpretative annotation which can be linked to a span of text. [17.3. Spans and Interpretations]
element interp {
(text | model.gLike | model.descLike | model.certLike)*,
att.global.attributes,
att.interpLike.attributes,
empty
}
interpGrp =
## (interpretation group) collects together a set of related interpretations which share responsibility or type. [17.3. Spans and Interpretations]
element interpGrp {
(model.descLike*, interp+),
att.global.attributes,
att.interpLike.attributes,
empty
}
model.entryLike = superEntry | entry | entryFree
att.entryLike.attributes =
att.entryLike.attribute.type, att.typed.attribute.subtype
att.entryLike.attribute.type =
## indicates type of entry, in dictionaries with multiple types.
## Suggested values include: 1] main; 2] hom (homograph); 3] xref (cross reference); 4] affix; 5] abbr (abbreviation); 6] supplemental; 7] foreign
[ a:defaultValue = "main" ]
attribute type {
## a main entry (default).
"main"
|
## (homograph) groups information relating to one homograph within an entry.
"hom"
|
## (cross reference) a reduced entry whose only function is to point to another main entry (e.g. for forms of an irregular verb or for variant spellings: was pointing to be, or esthete to aesthete).
"xref"
|
## an entry for a prefix, infix, or suffix.
"affix"
|
## (abbreviation) an entry for an abbreviation.
"abbr"
|
## a supplemental entry (for use in dictionaries which issue supplements to their main work in which they include updated information about entries).
"supplemental"
|
## an entry for a foreign word in a monolingual dictionary.
"foreign"
| xsd:token { pattern = "[^\p{C}\p{Z}]+" }
}?
att.lexicographic.attributes =
att.datcat.attributes,
att.lexicographic.normalized.attributes,
att.lexicographic.attribute.expand,
att.lexicographic.attribute.split,
att.lexicographic.attribute.value,
att.lexicographic.attribute.location,
att.lexicographic.attribute.mergedIn,
att.lexicographic.attribute.opt
att.lexicographic.attribute.expand =
## (expand) gives an expanded form of information presented more concisely in the dictionary
attribute expand { xsd:string }?
att.lexicographic.attribute.split =
## (split) gives the list of split values for a merged form
attribute split { xsd:string }?
att.lexicographic.attribute.value =
## (value) gives a value which lacks any realization in the printed source text.
attribute value { xsd:string }?
att.lexicographic.attribute.location =
[
a:documentation [
"(location) indicates an "
ns1:code [ "<anchor>" ]
" element typically elsewhere in the document, but possibly in another document, which is the original location of this component."
]
]
attribute location {
xsd:anyURI { pattern = "\S+" }
}?
att.lexicographic.attribute.mergedIn =
## (merged into) gives a reference to another element, where the original appears as a merged form.
attribute mergedIn {
xsd:anyURI { pattern = "\S+" }
}?
att.lexicographic.attribute.opt =
## (optional) indicates whether the element is optional or not
[ a:defaultValue = "false" ] attribute opt { xsd:boolean }?
model.morphLike = gram | gen | number | case | per | tns | mood | iType
model.morphLike_alternation =
gram | gen | number | case | per | tns | mood | iType
model.morphLike_sequence =
gram, gen, number, case, per, tns, mood, iType
model.morphLike_sequenceOptional =
gram?, gen?, number?, case?, per?, tns?, mood?, iType?
model.morphLike_sequenceOptionalRepeatable =
gram*, gen*, number*, case*, per*, tns*, mood*, iType*
model.morphLike_sequenceRepeatable =
gram+, gen+, number+, case+, per+, tns+, mood+, iType+
model.lexicalRefinement = gramGrp | pos | subc | colloc | usg | lbl
model.lexicalRefinement_alternation =
gramGrp | pos | subc | colloc | usg | lbl
model.lexicalRefinement_sequence = gramGrp, pos, subc, colloc, usg, lbl
model.lexicalRefinement_sequenceOptional =
gramGrp?, pos?, subc?, colloc?, usg?, lbl?
model.lexicalRefinement_sequenceOptionalRepeatable =
gramGrp*, pos*, subc*, colloc*, usg*, lbl*
model.lexicalRefinement_sequenceRepeatable =
gramGrp+, pos+, subc+, colloc+, usg+, lbl+
model.gramPart = model.morphLike | model.lexicalRefinement
model.formPart =
model.gramPart | form | orth | pron | hyph | syll | stress
model.ptrLike.form = oRef | pRef
model.ptrLike.form_alternation = oRef | pRef
model.ptrLike.form_sequence = oRef, pRef
model.ptrLike.form_sequenceOptional = oRef?, pRef?
model.ptrLike.form_sequenceOptionalRepeatable = oRef*, pRef*
model.ptrLike.form_sequenceRepeatable = oRef+, pRef+
superEntry =
## (super entry) groups a sequence of entries within any kind of lexical resource, such as a dictionary or lexicon which function as a single unit, for example a set of homographs. [9.1. Dictionary Body and Overall Structure]
element superEntry {
((form?, entry+) | dictScrap),
att.global.attributes,
att.entryLike.attributes,
att.sortable.attributes,
empty
}
entry =
## (entry) contains a single structured entry in any kind of lexical resource, such as a dictionary or lexicon. [9.1. Dictionary Body and Overall Structure 9.2. The Structure of Dictionary Entries]
element entry {
(hom
| sense
| pc
| model.entryPart.top
| model.global
| model.ptrLike)+,
att.global.attributes,
att.entryLike.attributes,
att.sortable.attributes,
empty
}
entryFree =
## (unstructured entry) contains a single unstructured entry in any kind of lexical resource, such as a dictionary or lexicon. [9.1. Dictionary Body and Overall Structure 9.2. The Structure of Dictionary Entries]
element entryFree {
(text
| model.gLike
| model.entryPart
| model.morphLike
| model.phrase
| model.inter
| model.global)*,
att.global.attributes,
att.entryLike.attributes,
att.lexicographic.attributes,
att.sortable.attributes,
empty
}
hom =
## (homograph) groups information relating to one homograph within an entry. [9.2. The Structure of Dictionary Entries]
element hom {
(sense | pc | model.entryPart.top | model.global)*,
att.global.attributes,
att.lexicographic.attributes,
empty
}
sense =
## groups together all information relating to one word sense in a dictionary entry, for example definitions, examples, and translation equivalents. [9.2. The Structure of Dictionary Entries]
element sense {
(text
| model.gLike
| sense
| model.entryPart.top
| model.phrase
| model.global)*,
att.global.attributes,
att.lexicographic.attributes,
## gives the nesting depth of this sense.
attribute level { xsd:nonNegativeInteger }?,
empty
}
dictScrap =
## (dictionary scrap) encloses a part of a dictionary entry in which other phrase-level dictionary elements are freely combined. [9.1. Dictionary Body and Overall Structure 9.2. The Structure of Dictionary Entries]
element dictScrap {
(text
| model.gLike
| model.entryPart
| model.morphLike
| model.phrase
| model.inter
| model.global)*,
att.global.attributes,
empty
}
form =
## (form information group) groups all the information on the written and spoken forms of one headword. [9.3.1. Information on Written and Spoken Forms]
element form {
(text
| model.gLike
| model.phrase
| model.inter
| model.formPart
| model.global)*,
att.global.attributes,
att.typed.attribute.subtype,
att.lexicographic.attributes,
## classifies form as simple, compound, etc.
## Suggested values include: 1] simple; 2] lemma; 3] variant; 4] compound; 5] derivative; 6] inflected; 7] phrase
attribute type {
## single free lexical item
"simple"
|
## the headword itself
"lemma"
|
## a variant form
"variant"
|
## word formed from simple lexical items
"compound"
|
## word derived from headword
"derivative"
|
## word in other than usual dictionary form
"inflected"
|
## multiple-word lexical item
"phrase"
| xsd:token { pattern = "[^\p{C}\p{Z}]+" }
}?,
empty
}
orth =
## (orthographic form) gives the orthographic form of a dictionary headword. [9.3.1. Information on Written and Spoken Forms]
element orth {
macro.paraContent,
att.global.attributes,
att.typed.attribute.subtype,
att.lexicographic.attributes,
att.partials.attributes,
att.notated.attributes,
## gives the type of spelling.
attribute type {
xsd:token { pattern = "[^\p{C}\p{Z}]+" }
}?,
empty
}
pron =
## (pronunciation) contains the pronunciation(s) of the word. [9.3.1. Information on Written and Spoken Forms]
element pron {
macro.paraContent,
att.global.attributes,
att.lexicographic.attributes,
att.notated.attributes,
att.partials.attributes,
att.typed.attributes,
empty
}
hyph =
## (hyphenation) contains a hyphenated form of a dictionary headword, or hyphenation information in some other form. [9.3.1. Information on Written and Spoken Forms]
element hyph {
macro.paraContent,
att.global.attributes,
att.lexicographic.attributes,
att.notated.attributes,
empty
}
syll =
## (syllabification) contains the syllabification of the headword. [9.3.1. Information on Written and Spoken Forms]
element syll {
macro.paraContent,
att.global.attributes,
att.lexicographic.attributes,
att.notated.attributes,
empty
}
stress =
## (stress) contains the stress pattern for a dictionary headword, if given separately. [9.3.1. Information on Written and Spoken Forms]
element stress {
macro.paraContent,
att.global.attributes,
att.notated.attributes,
empty
}
gram =
## (grammatical information) within an entry in a dictionary or a terminological data file, contains grammatical information relating to a term, word, or form. [9.3.2. Grammatical Information]
element gram {
macro.paraContent,
att.global.attributes,
att.typed.attribute.subtype,
att.lexicographic.attributes,
[
a:documentation [
"classifies grammatical information provided by "
ns1:code [ "<gram>" ]
" according to some convenient and shared typology, ideally one defined in an external reference taxonomy, such as the "
ns1:a [
href = "https://www.clarin.eu/content/clarin-concept-registry"
"CLARIN Concept\x{a}" ~
" Registry"
]
".\x{a}" ~
"Sample values include: 1] pos (part of speech); 2] gen (gender); 3] num (number); 4] animate; 5] proper"
]
]
attribute type {
xsd:token { pattern = "[^\p{C}\p{Z}]+" }
}?,
empty
}
gen =
## (gender) identifies the morphological gender of a lexical item, as given in the dictionary. [9.3.1. Information on Written and Spoken Forms]
element gen {
macro.paraContent,
att.global.attributes,
att.lexicographic.attributes,
empty
}
number =
## (number) indicates grammatical number associated with a form, as given in a dictionary. [9.3.1. Information on Written and Spoken Forms 9.3.2. Grammatical Information]
element number {
macro.paraContent,
att.global.attributes,
att.lexicographic.attributes,
empty
}
case =
## (case) contains grammatical case information given by a dictionary for a given form. [9.3.1. Information on Written and Spoken Forms]
element case {
macro.paraContent,
att.global.attributes,
att.lexicographic.attributes,
empty
}
per =
## (person) contains an indication of the grammatical person (1st, 2nd, 3rd, etc.) associated with a given inflected form in a dictionary. [9.3.1. Information on Written and Spoken Forms]
element per {
macro.paraContent,
att.global.attributes,
att.lexicographic.attributes,
empty
}
tns =
## (tense) indicates the grammatical tense associated with a given inflected form in a dictionary. [9.3.1. Information on Written and Spoken Forms]
element tns {
macro.paraContent,
att.global.attributes,
att.lexicographic.attributes,
empty
}
mood =
## (mood) contains information about the grammatical mood of verbs (e.g. indicative, subjunctive, imperative). [9.3.1. Information on Written and Spoken Forms]
element mood {
macro.paraContent,
att.global.attributes,
att.lexicographic.attributes,
empty
}
iType =
## (inflectional class) indicates the inflectional class associated with a lexical item. [9.3.1. Information on Written and Spoken Forms]
element iType {
macro.paraContent,
att.global.attributes,
att.typed.attribute.subtype,
att.lexicographic.attributes,
## indicates the type of indicator used to specify the inflection class, when it is necessary to distinguish between the usual abbreviated indications (e.g. inv) and other kinds of indicators, such as special codes referring to conjugation patterns, etc.
## Sample values include: 1] abbrev; 2] verbTable
attribute type {
xsd:token { pattern = "[^\p{C}\p{Z}]+" }
}?,
empty
}
gramGrp =
[
a:documentation [
"(grammatical information group) groups morpho-syntactic information about a lexical item, e.g. "
ns1:code [ "<pos>" ]
", "
ns1:code [ "<gen>" ]
", "
ns1:code [ "<number>" ]
", "
ns1:code [ "<case>" ]
", or "
ns1:code [ "<iType>" ]
" (inflectional class). [9.3.2. Grammatical Information]"
]
]
element gramGrp {
(text
| model.gLike
| model.phrase
| model.inter
| model.gramPart
| model.global)*,
att.global.attributes,
att.lexicographic.attributes,
att.typed.attributes,
empty
}
pos =
## (part of speech) indicates the part of speech assigned to a dictionary headword such as noun, verb, or adjective. [9.3.2. Grammatical Information]
element pos {
macro.paraContent,
att.global.attributes,
att.lexicographic.attributes,
empty
}
subc =
## (subcategorization) contains subcategorization information (transitive/intransitive, countable/non-countable, etc.) [9.3.2. Grammatical Information]
element subc {
macro.paraContent,
att.global.attributes,
att.lexicographic.attributes,
empty
}
colloc =
## (collocate) contains any sequence of words that co-occur with the headword with significant frequency. [9.3.2. Grammatical Information]
element colloc {
macro.paraContent,
att.global.attributes,
att.lexicographic.attributes,
att.typed.attributes,
empty
}
def =
## (definition) contains definition text in a dictionary entry. [9.3.3.1. Definitions]
element def {
macro.paraContent,
att.global.attributes,
att.lexicographic.attributes,
empty
}
etym =
## (etymology) encloses the etymological information in a dictionary entry. [9.3.4. Etymological Information]
element etym {
(text
| model.gLike
| model.global
| model.inter
| model.phrase
| def
| etym
| gramGrp
| lbl
| usg
| xr)*,
att.global.attributes,
att.typed.attributes,
att.lexicographic.attributes,
empty
}
lang =
## (language name) contains the name of a language mentioned in etymological or other linguistic discussion. [9.3.4. Etymological Information]
element lang {
macro.paraContent,
att.global.attributes,
att.lexicographic.attributes,
empty
}
usg =
## (usage) contains usage information in a dictionary entry. [9.3.5.2. Usage Information and Other Labels]
element usg {
macro.paraContent,
att.global.attributes,
att.typed.attribute.subtype,
att.lexicographic.attributes,
## classifies the usage information using any convenient typology.
## Sample values include: 1] geo (geographic); 2] time; 3] dom (domain); 4] register (register); 5] style; 6] plev (preference level); 7] lang (language); 8] gram (grammatical); 9] syn (synonym); 10] hyper (hypernym); 11] colloc (collocation); 12] comp (complement); 13] obj (object); 14] subj (subject); 15] verb; 16] hint
attribute type {
xsd:token { pattern = "[^\p{C}\p{Z}]+" }
}?,
empty
}
lbl =
## (label) contains a label for a form, example, translation, or other piece of information, e.g. abbreviation for, contraction of, literally, approximately, synonyms:, etc. [9.3.1. Information on Written and Spoken Forms 9.3.3.2. Translation Equivalents 9.3.5.3. Cross-References to Other Entries]
element lbl {
macro.paraContent,
att.global.attributes,
att.typed.attribute.subtype,
att.lexicographic.attributes,
## classifies the label using any convenient typology.
attribute type {
xsd:token { pattern = "[^\p{C}\p{Z}]+" }
}?,
empty
}
xr =
## (cross-reference phrase) contains a phrase, sentence, or icon referring the reader to some other location in this or another text. [9.3.5.3. Cross-References to Other Entries]
element xr {
(text
| model.gLike
| model.phrase
| model.inter
| usg
| lbl
| model.global)*,
att.global.attributes,
att.typed.attribute.subtype,
att.lexicographic.attributes,
## indicates the type of cross reference, using any convenient typology.
## Sample values include: 1] syn (synonym); 2] etym (etymological); 3] cf (compare or consult); 4] illus (illustration)
attribute type {
xsd:token { pattern = "[^\p{C}\p{Z}]+" }
}?,
empty
}
re =
## (related entry) contains a dictionary entry for a lexical item related to the headword, such as a compound phrase or derived form, embedded inside a larger entry. [9.3.6. Related Entries]
element re {
(text
| model.gLike
| sense
| model.entryPart.top
| model.phrase
| model.global)*,
att.global.attributes,
att.lexicographic.attributes,
att.typed.attributes,
empty
}
oRef =
## (orthographic-form reference) in a dictionary example, indicates a reference to the orthographic form(s) of the headword. [9.4. Headword and Pronunciation References]
element oRef {
(text | model.gLike | oRef)*,
att.global.attributes,
att.typed.attribute.subtype,
att.lexicographic.attributes,
att.pointing.attributes,
att.notated.attributes,
## indicates the kind of typographic modification made to the headword in the reference.
## Sample values include: 1] cap (capital); 2] noHyph (no hyphen)
attribute type {
xsd:token { pattern = "[^\p{C}\p{Z}]+" }
}?,
empty
}
pRef =
## (pronunciation reference) in a dictionary example, indicates a reference to the pronunciation(s) of the headword. [9.4. Headword and Pronunciation References]
element pRef {
(text | model.gLike | pRef)*,
att.global.attributes,
att.pointing.attributes,
att.lexicographic.attributes,
att.notated.attributes,
empty
}
att.msExcerpt.attributes = att.msExcerpt.attribute.defective
att.msExcerpt.attribute.defective =
## indicates whether the passage being quoted is defective, i.e. incomplete through loss or damage.
attribute defective {
xsd:boolean
| (
##
"unknown"
|
##
"inapplicable")
}?
att.msClass.attributes = att.msClass.attribute.class
att.msClass.attribute.class =
## identifies the text types or classifications applicable to this item by pointing to other elements or resources defining the classification concerned.
attribute class {
list {
xsd:anyURI { pattern = "\S+" }+
}
}?
msDesc =
## (manuscript description) contains a description of a single identifiable manuscript or other text-bearing object such as an early printed book. [10.1. Overview]
element msDesc {
(msIdentifier,
model.headLike*,
(model.pLike+
| (msContents?,
physDesc?,
history?,
additional?,
(msPart* | msFrag*)))),
att.global.attributes,
att.sortable.attributes,
att.typed.attributes,
att.declaring.attributes,
att.docStatus.attributes,
empty
}
catchwords =
## (catchwords) describes the system used to ensure correct ordering of the quires or similar making up a codex, incunable, or other object typically by means of annotations at the foot of the page. [10.3.7. Catchwords, Signatures, Secundo Folio]
element catchwords {
macro.phraseSeq
>> sch:pattern [
id =
"tei_all-catchwords-catchword_in_msDesc-constraint-assert-15"
"\x{a}" ~
" "
sch:rule [
context = "tei:catchwords"
"\x{a}" ~
" "
sch:assert [
test = "ancestor::tei:msDesc or ancestor::tei:egXML"
"The "
sch:name [ ]
" element should not be used outside of msDesc."
]
"\x{a}" ~
" "
]
"\x{a}" ~
" "
],
att.global.attributes,
empty
}
dimensions =
## (dimensions) contains a dimensional specification. [10.3.4. Dimensions]
element dimensions {
((dim | model.dimLike)*)
>> sch:pattern [
id = "tei_all-dimensions-duplicateDim-constraint-report-22"
"\x{a}" ~
" "
sch:rule [
context = "tei:dimensions"
"\x{a}" ~
" "
sch:report [
test = "count(tei:width)> 1"
"\x{a}" ~
"The element "
sch:name [ ]
" may appear once only\x{a}" ~
" "
]
"\x{a}" ~
" "
sch:report [
test = "count(tei:height)> 1"
"\x{a}" ~
"The element "
sch:name [ ]
" may appear once only\x{a}" ~
" "
]
"\x{a}" ~
" "
sch:report [
test = "count(tei:depth)> 1"
"\x{a}" ~
"The element "
sch:name [ ]
" may appear once only\x{a}" ~
" "
]
"\x{a}" ~
" "
]
"\x{a}" ~
" "
],
att.global.attributes,
att.dimensions.attributes,
att.typed.attribute.subtype,
## indicates which aspect of the object is being measured.
## Sample values include: 1] leaves; 2] ruled; 3] pricked; 4] written; 5] miniatures; 6] binding; 7] box
attribute type {
xsd:token { pattern = "[^\p{C}\p{Z}]+" }
}?,
empty
}
dim =
## contains any single measurement forming part of a dimensional specification of some sort. [10.3.4. Dimensions]
element dim {
macro.xtext,
att.global.attributes,
att.typed.attributes,
att.dimensions.attributes,
empty
}
height =
## (height) contains a measurement measured along the axis at a right angle to the bottom of the object. [10.3.4. Dimensions]
element height {
macro.xtext, att.global.attributes, att.dimensions.attributes, empty
}
depth =
[
a:documentation [
"(depth) contains a measurement from the front to the back of an object, perpendicular to the measurement given by the "
ns1:code [ "<width>" ]
" element. [10.3.4. Dimensions]"
]
]
element depth {
macro.xtext, att.global.attributes, att.dimensions.attributes, empty
}
width =
## (width) contains a measurement of an object along the axis parallel to its bottom, e.g. perpendicular to the spine of a book or codex. [10.3.4. Dimensions]
element width {
macro.xtext, att.global.attributes, att.dimensions.attributes, empty
}
heraldry =
## (heraldry) contains a heraldic formula or phrase, typically found as part of a blazon, coat of arms, etc. [10.3.8. Heraldry]
element heraldry { macro.phraseSeq, att.global.attributes, empty }
locus =
## (locus) defines a location within a manuscript, manuscript part, or other object typically as a (possibly discontinuous) sequence of folio references. [10.3.5. References to Locations within a Manuscript]
element locus {
(text | model.gLike | hi | locus)*,
att.global.attributes,
att.pointing.attributes,
att.typed.attributes,
[
a:documentation [
"(scheme) identifies the foliation scheme in terms of which the location is being specified by pointing to some "
ns1:code [ "<foliation>" ]
" element defining it, or to some other equivalent resource."
]
]
attribute scheme {
xsd:anyURI { pattern = "\S+" }
}?,
## (from) specifies the starting point of the location in a normalized form, typically a page number.
attribute from {
xsd:token { pattern = "[^\p{C}\p{Z}]+" }
}?,
## (to) specifies the end-point of the location in a normalized form, typically as a page number.
attribute to {
xsd:token { pattern = "[^\p{C}\p{Z}]+" }
}?,
empty
}
locusGrp =
## (locus group) groups a number of locations which together form a distinct but discontinuous item within a manuscript, manuscript part, or other object. [10.3.5. References to Locations within a Manuscript]
element locusGrp {
locus+,
att.global.attributes,
[
a:documentation [
"(scheme) identifies the foliation scheme in terms of which all the locations contained by the group are specified by pointing to some "
ns1:code [ "<foliation>" ]
" element defining it, or to some other equivalent resource."
]
]
attribute scheme {
xsd:anyURI { pattern = "\S+" }
}?,
empty
}
material =
## (material) contains a word or phrase describing the material of which the object being described is composed. [10.3.2. Material and Object Type]
element material {
macro.phraseSeq,
att.global.attributes,
att.canonical.attributes,
att.typed.attributes,
## describes the function or use of the material in relation to the object as a whole.
## Sample values include: 1] binding; 2] endband; 3] slipcase; 4] support; 5] tie
attribute function {
xsd:token { pattern = "[^\p{C}\p{Z}]+" }
}?,
## identifies one or more elements to which the metamark applies.
attribute target {
list {
xsd:anyURI { pattern = "\S+" }+
}
}?,
empty
}
objectType =
## (object type) contains a word or phrase describing the type of object being referred to. [10.3.2. Material and Object Type]
element objectType {
macro.phraseSeq,
att.global.attributes,
att.canonical.attributes,
empty
}
origDate =
## (origin date) contains any form of date, used to identify the date of origin for a manuscript, manuscript part, or other object. [10.3.1. Origination]
element origDate {
(text | model.gLike | model.phrase | model.global)*,
att.global.attributes,
att.datable.attributes,
att.dimensions.attributes,
att.editLike.attributes,
att.typed.attributes,
empty
}
origPlace =
## (origin place) contains any form of place name, used to identify the place of origin for a manuscript, manuscript part, or other object. [10.3.1. Origination]
element origPlace {
macro.phraseSeq,
att.global.attributes,
att.naming.attributes,
att.datable.attributes,
att.editLike.attributes,
att.typed.attributes,
empty
}
secFol =
## (second folio) marks the word or words taken from a fixed point in a codex (typically the beginning of the second leaf) in order to provide a unique identifier for it. [10.3.7. Catchwords, Signatures, Secundo Folio]
element secFol {
macro.phraseSeq
>> sch:pattern [
id = "tei_all-secFol-secFol_in_msDesc-constraint-assert-16"
"\x{a}" ~
" "
sch:rule [
context = "tei:secFol"
"\x{a}" ~
" "
sch:assert [
test = "ancestor::tei:msDesc or ancestor::tei:egXML"
"The "
sch:name [ ]
" element should not be used outside of msDesc."
]
"\x{a}" ~
" "
]
"\x{a}" ~
" "
],
att.global.attributes,
empty
}
signatures =
## (signatures) contains discussion of the leaf or quire signatures found within a codex or similar object. [10.3.7. Catchwords, Signatures, Secundo Folio]
element signatures {
macro.specialPara
>> sch:pattern [
id =
"tei_all-signatures-signatures_in_msDesc-constraint-assert-17"
"\x{a}" ~
" "
sch:rule [
context = "tei:signatures"
"\x{a}" ~
" "
sch:assert [
test = "ancestor::tei:msDesc or ancestor::tei:egXML"
"The "
sch:name [ ]
" element should not be used outside of msDesc."
]
"\x{a}" ~
" "
]
"\x{a}" ~
" "
],
att.global.attributes,
empty
}
stamp =
## (stamp) contains a word or phrase describing a stamp or similar device. [10.3.3. Watermarks and Stamps]
element stamp {
macro.phraseSeq,
att.global.attributes,
att.typed.attributes,
att.datable.attributes,
empty
}
watermark =
## (watermark) contains a word or phrase describing a watermark or similar device. [10.3.3. Watermarks and Stamps]
element watermark { macro.phraseSeq, att.global.attributes, empty }
msIdentifier =
## (manuscript identifier) contains the information required to identify the manuscript or similar object being described. [10.4. The Manuscript Identifier]
element msIdentifier {
((placeName?,
bloc?,
country?,
region?,
settlement?,
district?,
geogName?,
institution?,
repository?,
collection*,
idno*),
(msName | objectName | altIdentifier)*)
>> sch:pattern [
id = "tei_all-msIdentifier-msId_minimal-constraint-report-25"
"\x{a}" ~
" "
sch:rule [
context = "tei:msIdentifier"
"\x{a}" ~
" "
sch:report [
test =
"not(parent::tei:msPart) and (local-name(*[1])='idno' or local-name(*[1])='altIdentifier' or normalize-space(.)='')"
"An msIdentifier must contain either a repository or location."
]
"\x{a}" ~
" "
]
"\x{a}" ~
" "
],
att.global.attributes,
empty
}
institution =
## (institution) contains the name of an organization such as a university or library, with which a manuscript or other object is identified, generally its holding institution. [10.4. The Manuscript Identifier]
element institution {
macro.phraseSeq.limited,
att.global.attributes,
att.naming.attributes,
empty
}
repository =
## (repository) contains the name of a repository within which manuscripts or other objects are stored, possibly forming part of an institution. [10.4. The Manuscript Identifier]
element repository {
macro.phraseSeq.limited,
att.global.attributes,
att.naming.attributes,
empty
}
collection =
## (collection) contains the name of a collection of manuscripts or other objects, not necessarily located within a single repository. [10.4. The Manuscript Identifier]
element collection {
macro.phraseSeq.limited,
att.global.attributes,
att.naming.attributes,
att.typed.attributes,
empty
}
altIdentifier =
## (alternative identifier) contains an alternative or former structured identifier used for a manuscript or other object, such as a former catalogue number. [10.4. The Manuscript Identifier]
element altIdentifier {
(placeName?,
bloc?,
country?,
region?,
settlement?,
district?,
geogName?,
institution?,
repository?,
collection?,
idno,
note?),
att.global.attributes,
att.typed.attributes,
att.datable.attributes,
empty
}
msName =
## (alternative name) contains any form of unstructured alternative name used for a manuscript or other object, such as an ocellus nominum, or nickname. [10.4. The Manuscript Identifier]
element msName {
(text | model.gLike | rs | name)*,
att.global.attributes,
att.typed.attributes,
empty
}
colophon =
## (colophon) contains the colophon of an item: that is, a statement providing information regarding the date, place, agency, or reason for production of the manuscript or other object. [10.6.1. The msItem and msItemStruct Elements]
element colophon {
macro.phraseSeq,
att.global.attributes,
att.msExcerpt.attributes,
empty
}
explicit =
## (explicit) contains the explicit of a item, that is, the closing words of the text proper, exclusive of any rubric or colophon which might follow it. [10.6.1. The msItem and msItemStruct Elements]
element explicit {
macro.phraseSeq,
att.global.attributes,
att.typed.attributes,
att.msExcerpt.attributes,
empty
}
filiation =
## (filiation) contains information concerning the manuscript or other object's filiation, i.e. its relationship to other surviving manuscripts or other objects of the same text or contents, its protographs, antigraphs and apographs. [10.6.1. The msItem and msItemStruct Elements]
element filiation {
macro.specialPara,
att.global.attributes,
att.typed.attributes,
empty
}
finalRubric =
## (final rubric) contains the string of words that denotes the end of a text division, often with an assertion as to its author and title, usually set off from the text itself by red ink, by a different size or type of script, or by some other such visual device. [10.6.1. The msItem and msItemStruct Elements]
element finalRubric {
macro.phraseSeq,
att.global.attributes,
att.typed.attributes,
att.msExcerpt.attributes,
empty
}
incipit =
## contains the incipit of a manuscript or similar object item, that is the opening words of the text proper, exclusive of any rubric which might precede it, of sufficient length to identify the work uniquely; such incipits were, in former times, frequently used a means of reference to a work, in place of a title. [10.6.1. The msItem and msItemStruct Elements]
element incipit {
macro.phraseSeq,
att.global.attributes,
att.typed.attributes,
att.msExcerpt.attributes,
empty
}
msContents =
## (manuscript contents) describes the intellectual content of a manuscript, manuscript part, or other object either as a series of paragraphs or as a series of structured manuscript items. [10.6. Intellectual Content]
element msContents {
(model.pLike+
| (summary?, textLang?, titlePage?, (msItem | msItemStruct)*)),
att.global.attributes,
att.msExcerpt.attributes,
att.msClass.attributes,
empty
}
msItem =
## (manuscript item) describes an individual work or item within the intellectual content of a manuscript, manuscript part, or other object. [10.6.1. The msItem and msItemStruct Elements]
element msItem {
((locus | locusGrp)*,
(model.pLike+
| (model.titlepagePart | model.msItemPart | model.global)+)),
att.global.attributes,
att.msExcerpt.attributes,
att.msClass.attributes,
empty
}
msItemStruct =
## (structured manuscript item) contains a structured description for an individual work or item within the intellectual content of a manuscript, manuscript part, or other object. [10.6.1. The msItem and msItemStruct Elements]
element msItemStruct {
((locus | locusGrp)?,
(model.pLike+
| (author*,
respStmt*,
title*,
rubric?,
incipit?,
msItemStruct*,
explicit?,
finalRubric?,
colophon*,
decoNote*,
listBibl*,
(bibl | biblStruct)*,
filiation?,
model.noteLike*,
textLang?))),
att.global.attributes,
att.msExcerpt.attributes,
att.msClass.attributes,
empty
}
rubric =
## (rubric) contains the text of any rubric or heading attached to a particular manuscript item, that is, a string of words through which a manuscript or other object signals the beginning of a text division, often with an assertion as to its author and title, which is in some way set off from the text itself, typically in red ink, or by use of different size or type of script, or some other such visual device. [10.6.1. The msItem and msItemStruct Elements]
element rubric {
macro.phraseSeq,
att.global.attributes,
att.typed.attributes,
att.msExcerpt.attributes,
empty
}
summary =
## contains an overview of the available information concerning some aspect of an item or object (for example, its intellectual content, history, layout, typography etc.) as a complement or alternative to the more detailed information carried by more specific elements. [10.6. Intellectual Content]
element summary { macro.specialPara, att.global.attributes, empty }
physDesc =
## (physical description) contains a full physical description of a manuscript, manuscript part, or other object optionally subdivided using more specialized elements from the model.physDescPart class. [10.7. Physical Description]
element physDesc {
(model.pLike*,
objectDesc?,
handDesc?,
typeDesc?,
scriptDesc?,
musicNotation?,
decoDesc?,
additions?,
bindingDesc?,
sealDesc?,
accMat?),
att.global.attributes,
empty
}
objectDesc =
## (object description) contains a description of the physical components making up the object which is being described. [10.7.1. Object Description]
element objectDesc {
(model.pLike+ | (supportDesc?, layoutDesc?)),
att.global.attributes,
## (form) a short project-specific name identifying the physical form of the carrier, for example as a codex, roll, fragment, partial leaf, cutting etc.
attribute form {
xsd:token { pattern = "[^\p{C}\p{Z}]+" }
}?,
empty
}
supportDesc =
## (support description) groups elements describing the physical support for the written part of a manuscript or other object. [10.7.1. Object Description]
element supportDesc {
(model.pLike+
| (support?, extent?, foliation*, collation?, condition?)),
att.global.attributes,
## (material) a short project-defined name for the material composing the majority of the support
## Suggested values include: 1] paper; 2] parch (parchment); 3] mixed
attribute material {
##
"paper"
|
## (parchment)
"parch"
|
##
"mixed"
| xsd:token { pattern = "[^\p{C}\p{Z}]+" }
}?,
empty
}
support =
## (support) contains a description of the materials etc. which make up the physical support for the written part of a manuscript or other object. [10.7.1. Object Description]
element support { macro.specialPara, att.global.attributes, empty }
collation =
## (collation) contains a description of how the leaves, bifolia, or similar objects are physically arranged. [10.7.1. Object Description]
element collation { macro.specialPara, att.global.attributes, empty }
foliation =
## (foliation) describes the numbering system or systems used to count the leaves or pages in a codex or similar object. [10.7.1.4. Foliation]
element foliation { macro.specialPara, att.global.attributes, empty }
condition =
## (condition) contains a description of the physical condition of the manuscript or object. [10.7.1.5. Condition]
element condition { macro.specialPara, att.global.attributes, empty }
layoutDesc =
## (layout description) collects the set of layout descriptions applicable to a manuscript or other object. [10.7.2. Writing, Decoration, and Other Notations]
element layoutDesc {
(model.pLike+ | (summary?, layout+)),
att.global.attributes,
empty
}
layout =
## (layout) describes how text is laid out on the page or surface of the object, including information about any ruling, pricking, or other evidence of page-preparation techniques. [10.7.2. Writing, Decoration, and Other Notations]
element layout {
macro.specialPara,
att.global.attributes,
## (columns) specifies the number of columns per page
attribute columns {
list { xsd:nonNegativeInteger, xsd:nonNegativeInteger? }
}?,
## (textual streams) indicates the number of streams per page, each of which contains an independent textual stream
attribute streams {
list { xsd:nonNegativeInteger, xsd:nonNegativeInteger? }
}?,
## (ruled lines) specifies the number of ruled lines per column
attribute ruledLines {
list { xsd:nonNegativeInteger, xsd:nonNegativeInteger? }
}?,
## (written lines) specifies the number of written lines per column
attribute writtenLines {
list { xsd:nonNegativeInteger, xsd:nonNegativeInteger? }
}?,
empty
}
handDesc =
## (description of hands) contains a description of all the different hands used in a manuscript or other object. [10.7.2. Writing, Decoration, and Other Notations]
element handDesc {
(model.pLike+ | (summary?, handNote+)),
att.global.attributes,
## (hands) specifies the number of distinct hands identified within the manuscript
attribute hands { xsd:nonNegativeInteger }?,
empty
}
typeDesc =
## (typeface description) contains a description of the typefaces or other aspects of the printing of an incunable or other printed source. [10.7.2.1. Writing]
element typeDesc {
(model.pLike+ | (summary?, typeNote+)),
att.global.attributes,
empty
}
typeNote =
## (typographic note) describes a particular font or other significant typographic feature distinguished within the description of a printed resource. [10.7.2. Writing, Decoration, and Other Notations]
element typeNote {
macro.specialPara,
att.global.attributes,
att.handFeatures.attributes,
empty
}
scriptDesc =
## (script description) contains a description of the scripts used in a manuscript or other object. [10.7.2.1. Writing]
element scriptDesc {
(model.pLike+ | (summary?, scriptNote+)),
att.global.attributes,
empty
}
musicNotation =
## (music notation) contains description of type of musical notation. [10.7.2. Writing, Decoration, and Other Notations]
element musicNotation {
macro.specialPara, att.global.attributes, empty
}
decoDesc =
[
a:documentation [
"(decoration description) contains a description of the decoration of a manuscript or other object, either as in paragraphs, or as one or more "
ns1:code [ "<decoNote>" ]
" elements. [10.7.3. Bindings, Seals, and Additional Material]"
]
]
element decoDesc {
(model.pLike+ | (summary?, decoNote+)),
att.global.attributes,
empty
}
decoNote =
## (note on decoration) contains a note describing either a decorative component of a manuscript or other object, or a fairly homogenous class of such components. [10.7.3. Bindings, Seals, and Additional Material]
element decoNote {
macro.specialPara,
att.global.attributes,
att.typed.attributes,
empty
}
additions =
## (additions) contains a description of any significant additions found within a manuscript or other object, such as marginalia or other annotations. [10.7.2. Writing, Decoration, and Other Notations]
element additions { macro.specialPara, att.global.attributes, empty }
bindingDesc =
[
a:documentation [
"(binding description) describes the present and former bindings of a manuscript or other object, either as a series of paragraphs or as a series of distinct "
ns1:code [ "<binding>" ]
" elements, one for each binding of the manuscript. [10.7.3.1. Binding Descriptions]"
]
]
element bindingDesc {
((model.pLike | decoNote | condition)+ | binding+),
att.global.attributes,
empty
}
binding =
## (binding) contains a description of one binding, i.e. type of covering, boards, etc. applied to a manuscript or other object. [10.7.3.1. Binding Descriptions]
element binding {
(model.pLike | condition | decoNote)+,
att.global.attributes,
att.datable.attributes,
## (contemporary) specifies whether or not the binding is contemporary with the majority of its contents
attribute contemporary {
xsd:boolean
| (
##
"unknown"
|
##
"inapplicable")
}?,
empty
}
sealDesc =
[
a:documentation [
"(seal description) describes the seals or similar items related to the object described, either as a series of paragraphs or as a series of "
ns1:code [ "<seal>" ]
" elements. [10.7.3.2. Seals]"
]
]
element sealDesc {
(model.pLike+
| (summary?, (decoNote | seal | condition)+)),
att.global.attributes,
empty
}
seal =
## (seal) contains a description of one seal or similar applied to the object described [10.7.3.2. Seals]
element seal {
(model.pLike | decoNote)+,
att.global.attributes,
att.typed.attributes,
att.datable.attributes,
## (contemporary) specifies whether or not the seal is contemporary with the item to which it is affixed
attribute contemporary {
xsd:boolean
| (
##
"unknown"
|
##
"inapplicable")
}?,
empty
}
accMat =
## (accompanying material) contains details of any significant additional material which may be closely associated with the manuscript or object being described, such as non-contemporaneous documents or fragments bound in with it at some earlier historical period. [10.7.3.3. Accompanying Material]
element accMat {
macro.specialPara,
att.global.attributes,
att.typed.attributes,
empty
}
history =
## (history) groups elements describing the full history of a manuscript, manuscript part, or other object. [10.8. History]
element history {
(model.pLike+ | (summary?, origin?, provenance*, acquisition?)),
att.global.attributes,
empty
}
origin =
## (origin) contains any descriptive or other information concerning the origin of a manuscript, manuscript part, or other object. [10.8. History]
element origin {
macro.specialPara,
att.global.attributes,
att.editLike.attributes,
att.datable.attributes,
empty
}
provenance =
## (provenance) contains any descriptive or other information concerning a single identifiable episode during the history of a manuscript, manuscript part, or other object after its creation but before its acquisition. [10.8. History]
element provenance {
macro.specialPara,
att.global.attributes,
att.datable.attributes,
att.typed.attributes,
empty
}
acquisition =
## (acquisition) contains any descriptive or other information concerning the process by which a manuscript or manuscript part or other object entered the holding institution. [10.8. History]
element acquisition {
macro.specialPara,
att.global.attributes,
att.datable.attributes,
empty
}
additional =
## (additional) groups additional information, combining bibliographic information about a manuscript or other object, or surrogate copies of it, with curatorial or administrative information. [10.9. Additional Information]
element additional {
(adminInfo?, surrogates?, listBibl?), att.global.attributes, empty
}
adminInfo =
## (administrative information) contains information about the present custody and availability of the manuscript or other object, and also about the record description itself. [10.9.1. Administrative Information]
element adminInfo {
(recordHist?, availability?, custodialHist?, model.noteLike?),
att.global.attributes,
empty
}
recordHist =
## (recorded history) provides information about the source and revision status of the parent manuscript or object description itself. [10.9.1. Administrative Information]
element recordHist {
(model.pLike+ | (source, change*)),
att.global.attributes,
empty
}
source =
## (source) describes the original source for the information contained with a manuscript or object description. [10.9.1.1. Record History]
element source { macro.specialPara, att.global.attributes, empty }
custodialHist =
## (custodial history) contains a description of a manuscript or other object's custodial history, either as running prose or as a series of dated custodial events. [10.9.1.2. Availability and Custodial History]
element custodialHist {
(model.pLike+ | custEvent+), att.global.attributes, empty
}
custEvent =
## (custodial event) describes a single event during the custodial history of a manuscript or other object. [10.9.1.2. Availability and Custodial History]
element custEvent {
macro.specialPara,
att.global.attributes,
att.datable.attributes,
att.typed.attributes,
empty
}
surrogates =
## (surrogates) contains information about any representations of the manuscript or other object being described which may exist in the holding institution or elsewhere. [10.9. Additional Information]
element surrogates { macro.specialPara, att.global.attributes, empty }
msPart =
## (manuscript part) contains information about an originally distinct manuscript or part of a manuscript, which is now part of a composite manuscript. [10.10. Manuscript Parts]
element msPart {
(msIdentifier,
model.headLike*,
(model.pLike+
| (msContents?, physDesc?, history?, additional?, msPart*))),
att.global.attributes,
att.typed.attributes,
empty
}
msFrag =
## (manuscript fragment) contains information about a fragment described in relation to a prior context, typically as a description of a virtual reconstruction of a manuscript or other object whose fragments were catalogued separately [10.11. Manuscript Fragments]
element msFrag {
((altIdentifier | msIdentifier),
model.headLike*,
(model.pLike+ | (msContents?, physDesc?, history?, additional?))),
att.global.attributes,
att.typed.attributes,
empty
}
att.global.facs.attributes = att.global.facs.attribute.facs
att.global.facs.attribute.facs =
## (facsimile) points to one or more images, portions of an image, or surfaces which correspond to the current element.
attribute facs {
list {
xsd:anyURI { pattern = "\S+" }+
}
}?
att.global.change.attributes = att.global.change.attribute.change
att.global.change.attribute.change =
[
a:documentation [
"points to one or more "
ns1:code [ "<change>" ]
" elements documenting a state or revision campaign to which the element bearing this attribute and its children have been assigned by the encoder."
]
]
attribute change {
list {
xsd:anyURI { pattern = "\S+" }+
}
}?
att.coordinated.attributes =
att.coordinated.attribute.start,
att.coordinated.attribute.ulx,
att.coordinated.attribute.uly,
att.coordinated.attribute.lrx,
att.coordinated.attribute.lry,
att.coordinated.attribute.points
att.coordinated.attribute.start =
## indicates the element within a transcription of the text containing at least the start of the writing represented by this zone or surface.
attribute start {
xsd:anyURI { pattern = "\S+" }
}?
att.coordinated.attribute.ulx =
## gives the x coordinate value for the upper left corner of a rectangular space.
attribute ulx {
xsd:double
| xsd:token { pattern = "(\-?[\d]+/\-?[\d]+)" }
| xsd:decimal
}?
att.coordinated.attribute.uly =
## gives the y coordinate value for the upper left corner of a rectangular space.
attribute uly {
xsd:double
| xsd:token { pattern = "(\-?[\d]+/\-?[\d]+)" }
| xsd:decimal
}?
att.coordinated.attribute.lrx =
## gives the x coordinate value for the lower right corner of a rectangular space.
attribute lrx {
xsd:double
| xsd:token { pattern = "(\-?[\d]+/\-?[\d]+)" }
| xsd:decimal
}?
att.coordinated.attribute.lry =
## gives the y coordinate value for the lower right corner of a rectangular space.
attribute lry {
xsd:double
| xsd:token { pattern = "(\-?[\d]+/\-?[\d]+)" }
| xsd:decimal
}?
att.coordinated.attribute.points =
## identifies a two dimensional area by means of a series of pairs of numbers, each of which gives the x,y coordinates of a point on a line enclosing the area.
attribute points {
list {
xsd:token {
pattern = "(-?[0-9]+(\.[0-9]+)?,-?[0-9]+(\.[0-9]+)?)"
},
xsd:token {
pattern = "(-?[0-9]+(\.[0-9]+)?,-?[0-9]+(\.[0-9]+)?)"
},
xsd:token {
pattern = "(-?[0-9]+(\.[0-9]+)?,-?[0-9]+(\.[0-9]+)?)"
},
xsd:token {
pattern = "(-?[0-9]+(\.[0-9]+)?,-?[0-9]+(\.[0-9]+)?)"
}*
}
}?
facsimile =
## contains a representation of some written source in the form of a set of images rather than as transcribed or encoded text. [11.1. Digital Facsimiles]
element facsimile {
(front?, (model.graphicLike | surface | surfaceGrp)+, back?)
>> sch:pattern [
id =
"tei_all-facsimile-no_facsimile_text_nodes-constraint-rule-15"
"\x{a}" ~
" "
sch:rule [
context = "tei:facsimile//tei:line | tei:facsimile//tei:zone"
"\x{a}" ~
" "
sch:report [
test = "child::text()[ normalize-space(.) ne '']"
"\x{a}" ~
" A facsimile element represents a text with images, thus\x{a}" ~
" transcribed text should not be present within it.\x{a}" ~
" "
]
"\x{a}" ~
" "
]
"\x{a}" ~
" "
],
att.global.attributes,
att.declaring.attributes,
empty
}
sourceDoc =
## contains a transcription or other representation of a single source document potentially forming part of a dossier génétique or collection of sources. [11.1. Digital Facsimiles 11.2.2. Embedded Transcription]
element sourceDoc {
(model.global | model.graphicLike | surface | surfaceGrp)+,
att.global.attributes,
att.declaring.attributes,
empty
}
surface =
## defines a written surface as a two-dimensional coordinate space, optionally grouping one or more graphic representations of that space, zones of interest within that space, and transcriptions of the writing within them. [11.1. Digital Facsimiles 11.2.2. Embedded Transcription]
element surface {
((model.global | model.labelLike | model.graphicLike)*,
((zone | line | path | surface | surfaceGrp), model.global*)*),
att.global.attributes,
att.coordinated.attributes,
att.declaring.attributes,
att.typed.attributes,
## describes the method by which this surface is or was connected to the main surface
## Sample values include: 1] glued; 2] pinned; 3] sewn
attribute attachment {
xsd:token { pattern = "[^\p{C}\p{Z}]+" }
}?,
## indicates whether the surface is attached and folded in such a way as to provide two writing surfaces
attribute flipping { xsd:boolean }?,
empty
}
surfaceGrp =
## (surface group) defines any kind of useful grouping of written surfaces, for example the recto and verso of a single leaf, which the encoder wishes to treat as a single unit. [11.1. Digital Facsimiles]
element surfaceGrp {
(model.global | surface | surfaceGrp)+,
att.global.attributes,
att.declaring.attributes,
att.typed.attributes,
empty
}
zone =
[
a:documentation [
"defines any two-dimensional area within a "
ns1:code [ "<surface>" ]
" element. [11.1. Digital Facsimiles 11.2.2. Embedded Transcription]"
]
]
element zone {
(text
| model.gLike
| model.graphicLike
| model.global
| surface
| model.linePart)*,
att.global.attributes,
att.coordinated.attributes,
att.typed.attributes,
att.written.attributes,
[
a:defaultValue = "0"
a:documentation [
"indicates the amount by which this zone has been rotated clockwise, with respect to the normal orientation of the parent "
ns1:code [ "<surface>" ]
" element as implied by the dimensions given in the "
ns1:code [ "<msDesc>" ]
" element or by the coordinates of the "
ns1:code [ "<surface>" ]
" itself. The orientation is expressed in arc degrees."
]
]
attribute rotate { xsd:nonNegativeInteger }?,
empty
}
path =
[
a:documentation [
"(path) defines any line passing through two or more points within a "
ns1:code [ "<surface>" ]
" element. [11.1. Digital Facsimiles 11.2.2. Embedded Transcription]"
]
]
element path {
empty
>> sch:pattern [
id = "tei_all-path-pathmustnotbeclosed-constraint-rule-16"
"\x{a}" ~
" "
sch:rule [
context = "tei:path[@points]"
"\x{a}" ~
" "
sch:let [
name = "firstPair"
value = "tokenize( normalize-space( @points ), ' ')[1]"
]
"\x{a}" ~
" "
sch:let [
name = "lastPair"
value =
"tokenize( normalize-space( @points ), ' ')[last()]"
]
"\x{a}" ~
" "
sch:let [
name = "firstX"
value = "xs:float( substring-before( $firstPair, ',') )"
]
"\x{a}" ~
" "
sch:let [
name = "firstY"
value = "xs:float( substring-after( $firstPair, ',') )"
]
"\x{a}" ~
" "
sch:let [
name = "lastX"
value = "xs:float( substring-before( $lastPair, ',') )"
]
"\x{a}" ~
" "
sch:let [
name = "lastY"
value = "xs:float( substring-after( $lastPair, ',') )"
]
"\x{a}" ~
" "
sch:report [
test = "$firstX eq $lastX and $firstY eq $lastY"
"The first and\x{a}" ~
" last elements of this path are the same. To specify a closed polygon, use\x{a}" ~
" the zone element rather than the path element. "
]
"\x{a}" ~
" "
]
"\x{a}" ~
" "
],
att.global.attributes,
att.coordinated.attribute.start,
att.coordinated.attribute.ulx,
att.coordinated.attribute.uly,
att.coordinated.attribute.lrx,
att.coordinated.attribute.lry,
att.typed.attributes,
att.written.attributes,
## identifies a line within the container or bounding box specified by the parent element by means of a series of two or more pairs of numbers, each of which gives the x,y coordinates of a point on the line.
attribute points {
list {
xsd:token {
pattern = "(-?[0-9]+(\.[0-9]+)?,-?[0-9]+(\.[0-9]+)?)"
},
xsd:token {
pattern = "(-?[0-9]+(\.[0-9]+)?,-?[0-9]+(\.[0-9]+)?)"
},
xsd:token {
pattern = "(-?[0-9]+(\.[0-9]+)?,-?[0-9]+(\.[0-9]+)?)"
}*
}
}?,
empty
}
addSpan =
[
a:documentation [
"(added span of text) marks the beginning of a longer sequence of text added by an author, scribe, annotator or corrector (see also "
ns1:code [ "<add>" ]
"). [11.3.1.4. Additions and Deletions]"
]
]
element addSpan {
empty
>> sch:pattern [
id =
"tei_all-addSpan-addSpan-requires-spanTo-constraint-assert-18"
"\x{a}" ~
" "
sch:rule [
context = "tei:addSpan"
"\x{a}" ~
" "
sch:assert [
test = "@spanTo"
"The @spanTo attribute of "
sch:name [ ]
" is required."
]
"\x{a}" ~
" "
]
"\x{a}" ~
" "
]
>> sch:pattern [
id =
"tei_all-addSpan-addSpan-requires-spanTo-fr-constraint-assert-19"
"\x{a}" ~
" "
sch:rule [
context = "tei:addSpan"
"\x{a}" ~
" "
sch:assert [
test = "@spanTo"
"L'attribut spanTo est requis."
]
"\x{a}" ~
" "
]
"\x{a}" ~
" "
],
att.global.attributes,
att.transcriptional.attributes,
att.placement.attributes,
att.typed.attributes,
att.spanning.attributes,
att.dimensions.attributes,
empty
}
damage =
## (damage) contains an area of damage to the text witness. [11.3.3.1. Damage, Illegibility, and Supplied Text]
element damage {
macro.paraContent,
att.global.attributes,
att.typed.attributes,
att.damaged.attributes,
empty
}
damageSpan =
## (damaged span of text) marks the beginning of a longer sequence of text which is damaged in some way but still legible. [11.3.3.1. Damage, Illegibility, and Supplied Text]
element damageSpan {
empty
>> sch:pattern [
id =
"tei_all-damageSpan-damageSpan-requires-spanTo-constraint-assert-20"
"\x{a}" ~
" "
sch:rule [
context = "tei:damageSpan"
"\x{a}" ~
" "
sch:assert [
test = "@spanTo"
"The @spanTo attribute of "
sch:name [ ]
" is required."
]
"\x{a}" ~
" "
]
"\x{a}" ~
" "
]
>> sch:pattern [
id =
"tei_all-damageSpan-damageSpan-requires-spanTo-fr-constraint-assert-21"
"\x{a}" ~
" "
sch:rule [
context = "tei:damageSpan"
"\x{a}" ~
" "
sch:assert [
test = "@spanTo"
"L'attribut spanTo est requis."
]
"\x{a}" ~
" "
]
"\x{a}" ~
" "
],
att.global.attributes,
att.damaged.attributes,
att.typed.attributes,
att.spanning.attributes,
empty
}
delSpan =
## (deleted span of text) marks the beginning of a longer sequence of text deleted, marked as deleted, or otherwise signaled as superfluous or spurious by an author, scribe, annotator, or corrector. [11.3.1.4. Additions and Deletions]
element delSpan {
empty
>> sch:pattern [
id =
"tei_all-delSpan-delSpan-requires-spanTo-constraint-assert-22"
"\x{a}" ~
" "
sch:rule [
context = "tei:delSpan"
"\x{a}" ~
" "
sch:assert [
test = "@spanTo"
"The @spanTo attribute of "
sch:name [ ]
" is required."
]
"\x{a}" ~
" "
]
"\x{a}" ~
" "
]
>> sch:pattern [
id =
"tei_all-delSpan-delSpan-requires-spanTo-fr-constraint-assert-23"
"\x{a}" ~
" "
sch:rule [
context = "tei:delSpan"
"\x{a}" ~
" "
sch:assert [
test = "@spanTo"
"L'attribut spanTo est requis."
]
"\x{a}" ~
" "
]
"\x{a}" ~
" "
],
att.global.attributes,
att.transcriptional.attributes,
att.typed.attributes,
att.spanning.attributes,
att.dimensions.attributes,
empty
}
ex =
## (editorial expansion) contains a sequence of letters added by an editor or transcriber when expanding an abbreviation. [11.3.1.2. Abbreviation and Expansion]
element ex {
macro.xtext,
att.global.attributes,
att.editLike.attributes,
att.dimensions.attributes,
empty
}
fw =
## (forme work) contains a running head (e.g. a header, footer), catchword, or similar material appearing on the current page. [11.6. Headers, Footers, and Similar Matter]
element fw {
macro.phraseSeq,
att.global.attributes,
att.typed.attribute.subtype,
att.placement.attributes,
att.written.attributes,
## classifies the material encoded according to some useful typology.
## Sample values include: 1] header; 2] footer; 3] pageNum (page number); 4] lineNum (line number); 5] sig (signature); 6] catch (catchword)
attribute type {
xsd:token { pattern = "[^\p{C}\p{Z}]+" }
}?,
empty
}
handNotes =
[
a:documentation [
"contains one or more "
ns1:code [ "<handNote>" ]
" elements documenting the different hands identified within the source texts. [11.3.2.1. Document Hands]"
]
]
element handNotes { handNote+, att.global.attributes, empty }
handShift =
## (handwriting shift) marks the beginning of a sequence of text written in a new hand, or the beginning of a scribal stint. [11.3.2.1. Document Hands]
element handShift {
empty,
att.global.attributes,
att.handFeatures.attributes,
[
a:documentation [
"indicates a "
ns1:code [ "<handNote>" ]
" element describing the hand concerned."
]
]
attribute new {
xsd:anyURI { pattern = "\S+" }
}?,
empty
}
am =
## (abbreviation marker) contains a sequence of letters or signs present in an abbreviation which are omitted or replaced in the expanded form of the abbreviation. [11.3.1.2. Abbreviation and Expansion]
element am {
(text | model.gLike | model.pPart.transcriptional)*,
att.global.attributes,
att.typed.attributes,
att.editLike.attributes,
empty
}
restore =
## (restore) indicates restoration of text to an earlier state by cancellation of an editorial or authorial marking or instruction. [11.3.1.6. Cancellation of Deletions and Other Markings]
element restore {
macro.paraContent,
att.global.attributes,
att.transcriptional.attributes,
att.typed.attributes,
att.dimensions.attributes,
empty
}
space =
## (space) indicates the location of a significant space in the text. [11.4.1. Space]
element space {
(model.descLike | model.certLike)*,
att.global.attribute.xmlid,
att.global.attribute.n,
att.global.attribute.xmllang,
att.global.attribute.xmlbase,
att.global.attribute.xmlspace,
att.global.rendition.attribute.rend,
att.global.rendition.attribute.style,
att.global.rendition.attribute.rendition,
att.global.linking.attribute.corresp,
att.global.linking.attribute.synch,
att.global.linking.attribute.sameAs,
att.global.linking.attribute.copyOf,
att.global.linking.attribute.next,
att.global.linking.attribute.prev,
att.global.linking.attribute.exclude,
att.global.linking.attribute.select,
att.global.analytic.attribute.ana,
att.global.facs.attribute.facs,
att.global.change.attribute.change,
att.global.responsibility.attribute.cert,
att.global.source.attribute.source,
att.typed.attributes,
att.dimensions.attributes,
## (responsible party) (responsible party) indicates the individual responsible for identifying and measuring the space
attribute resp {
list {
xsd:anyURI { pattern = "\S+" }+
}
}?,
## (dimension) indicates whether the space is horizontal or vertical.
attribute dim {
## the space is horizontal.
"horizontal"
|
## the space is vertical.
"vertical"
}?,
empty
}
subst =
## (substitution) groups one or more deletions (or surplus text) with one or more additions when the combination is to be regarded as a single intervention in the text. [11.3.1.5. Substitutions]
element subst {
((add | surplus | del | model.milestoneLike)+)
>> sch:pattern [
id = "tei_all-subst-substContents1-constraint-assert-24"
"\x{a}" ~
" "
sch:rule [
context = "tei:subst"
"\x{a}" ~
" "
sch:assert [
test =
"child::tei:add and (child::tei:del or child::tei:surplus)"
"\x{a}" ~
" "
sch:name [ ]
" must have at least one child add and at least one child del or surplus"
]
"\x{a}" ~
" "
]
"\x{a}" ~
" "
],
att.global.attributes,
att.transcriptional.attributes,
att.dimensions.attributes,
empty
}
substJoin =
## (substitution join) identifies a series of possibly fragmented additions, deletions, or other revisions on a manuscript that combine to make up a single intervention in the text [11.3.1.5. Substitutions]
element substJoin {
(model.descLike | model.certLike)*,
att.global.attributes,
att.pointing.attributes,
att.transcriptional.attributes,
att.dimensions.attributes,
empty
}
supplied =
## (supplied) signifies text supplied by the transcriber or editor for any reason; for example because the original cannot be read due to physical damage, or because of an obvious omission by the author or scribe. [11.3.3.1. Damage, Illegibility, and Supplied Text]
element supplied {
macro.paraContent,
att.global.attributes,
att.editLike.attributes,
att.dimensions.attributes,
## one or more words indicating why the text has had to be supplied, e.g. overbinding, faded-ink, lost-folio, omitted-in-original.
attribute reason {
list {
xsd:token { pattern = "[^\p{C}\p{Z}]+" }+
}
}?,
empty
}
surplus =
## (surplus) marks text present in the source which the editor believes to be superfluous or redundant. [11.3.3.1. Damage, Illegibility, and Supplied Text]
element surplus {
macro.paraContent,
att.global.attributes,
att.editLike.attributes,
att.dimensions.attributes,
## one or more words indicating why this text is believed to be superfluous, e.g. repeated, interpolated etc.
attribute reason {
list {
xsd:token { pattern = "[^\p{C}\p{Z}]+" }+
}
}?,
empty
}
secl =
## (secluded text) Secluded. Marks text present in the source which the editor believes to be genuine but out of its original place (which is unknown). [11.3.1.7. Text Omitted from or Supplied in the Transcription]
element secl {
macro.paraContent,
att.global.attributes,
att.editLike.attributes,
att.dimensions.attributes,
## one or more words indicating why this text has been secluded, e.g. interpolated etc.
attribute reason {
list {
xsd:token { pattern = "[^\p{C}\p{Z}]+" }+
}
}?,
empty
}
line =
## contains the transcription of a topographic line in the source document [11.2.2. Embedded Transcription]
element line {
(text | model.global | model.gLike | model.linePart)*,
att.typed.attributes,
att.global.attributes,
att.coordinated.attributes,
att.written.attributes,
empty
}
listTranspose =
## supplies a list of transpositions, each of which is indicated at some point in a document typically by means of metamarks. [11.3.4.5. Transpositions]
element listTranspose {
(desc*, transpose+), att.global.attributes, empty
}
metamark =
## contains or describes any kind of graphic or written signal within a document the function of which is to determine how it should be read rather than forming part of the actual content of the document. [11.3.4.2. Metamarks]
element metamark {
macro.specialPara,
att.spanning.attributes,
att.placement.attributes,
att.global.attributes,
## describes the function (for example status, insertion, deletion, transposition) of the metamark.
attribute function {
xsd:token { pattern = "[^\p{C}\p{Z}]+" }
}?,
## identifies one or more elements to which the metamark applies.
attribute target {
list {
xsd:anyURI { pattern = "\S+" }+
}
}?,
empty
}
mod =
## represents any kind of modification identified within a single document. [11.3.4.1. Generic Modification]
element mod {
macro.paraContent,
att.global.attributes,
att.transcriptional.attributes,
att.typed.attributes,
att.spanning.attributes,
att.dimensions.attributes,
empty
}
redo =
## indicates one or more cancelled interventions in a document which have subsequently been marked as reaffirmed or repeated. [11.3.4.4. Confirmation, Cancellation, and Reinstatement of Modifications]
element redo {
empty,
att.global.attributes,
att.spanning.attributes,
att.transcriptional.attributes,
att.dimensions.attributes,
## points to one or more elements representing the interventions which are being reasserted.
attribute target {
list {
xsd:anyURI { pattern = "\S+" }+
}
}?,
empty
}
retrace =
## contains a sequence of writing which has been retraced, for example by over-inking, to clarify or fix it. [11.3.4.3. Fixation and Clarification]
element retrace {
macro.paraContent,
att.global.attributes,
att.spanning.attributes,
att.transcriptional.attributes,
att.dimensions.attributes,
empty
}
transpose =
## describes a single textual transposition as an ordered list of at least two pointers specifying the order in which the elements indicated should be re-combined. [11.3.4.5. Transpositions]
element transpose { (ptr, ptr, ptr*), att.global.attributes, empty }
undo =
## indicates one or more marked-up interventions in a document which have subsequently been marked for cancellation. [11.3.4.4. Confirmation, Cancellation, and Reinstatement of Modifications]
element undo {
empty,
att.global.attributes,
att.spanning.attributes,
att.transcriptional.attributes,
att.dimensions.attributes,
## points to one or more elements representing the interventions which are to be reverted or undone.
attribute target {
list {
xsd:anyURI { pattern = "\S+" }+
}
}?,
empty
}
model.rdgLike = rdg
model.rdgPart = wit | witStart | witEnd | lacunaStart | lacunaEnd
att.rdgPart.attributes = att.rdgPart.attribute.wit
att.rdgPart.attribute.wit =
## (witness or witnesses) contains a space-delimited list of one or more sigla indicating the witnesses to this reading beginning or ending at this point.
attribute wit {
list {
xsd:anyURI { pattern = "\S+" }+
}
}?
att.witnessed.attributes = att.witnessed.attribute.wit
att.witnessed.attribute.wit =
## (witness or witnesses) contains a space-delimited list of one or more pointers indicating the witnesses which attest to a given reading.
attribute wit {
list {
xsd:anyURI { pattern = "\S+" }+
}
}?
att.textCritical.attributes =
att.written.attributes,
att.textCritical.attribute.type,
att.textCritical.attribute.cause,
att.textCritical.attribute.varSeq,
att.textCritical.attribute.require,
att.typed.attribute.subtype
att.textCritical.attribute.type =
## classifies the reading according to some useful typology.
## Sample values include: 1] substantive (substantive); 2] orthographic (orthographic)
attribute type {
xsd:token { pattern = "[^\p{C}\p{Z}]+" }
}?
att.textCritical.attribute.cause =
## classifies the cause for the variant reading, according to any appropriate typology of possible origins.
## Sample values include: 1] homeoteleuton; 2] homeoarchy; 3] paleographicConfusion; 4] haplography; 5] dittography; 6] falseEmendation
attribute cause {
xsd:token { pattern = "[^\p{C}\p{Z}]+" }
}?
att.textCritical.attribute.varSeq =
## (variant sequence) provides a number indicating the position of this reading in a sequence, when there is reason to presume a sequence to the variants.
attribute varSeq { xsd:nonNegativeInteger }?
att.textCritical.attribute.require =
## points to other readings that are required when adopting the current reading or lemma.
attribute require {
list {
xsd:anyURI { pattern = "\S+" }+
}
}?
app =
## (apparatus entry) contains one entry in a critical apparatus, with an optional lemma and usually one or more readings or notes on the relevant passage. [12.1.1. The Apparatus Entry]
element app {
(lem?,
(model.rdgLike | model.noteLike | witDetail | wit | rdgGrp)*),
att.global.attributes,
att.typed.attribute.subtype,
## classifies the variation contained in this element according to some convenient typology.
attribute type {
xsd:token { pattern = "[^\p{C}\p{Z}]+" }
}?,
## identifies the beginning of the lemma in the base text.
attribute from {
xsd:anyURI { pattern = "\S+" }
}?,
## identifies the endpoint of the lemma in the base text.
attribute to {
xsd:anyURI { pattern = "\S+" }
}?,
## (location) indicates the location of the variation, when the location-referenced method of apparatus markup is used.
attribute loc {
list {
xsd:token { pattern = "[^\p{C}\p{Z}]+" }+
}
}?,
empty
}
listApp =
## (list of apparatus entries) contains a list of apparatus entries. [12.2. Linking the Apparatus to the Text]
element listApp {
(model.headLike*, desc*, (app | listApp)+),
att.global.attributes,
att.sortable.attributes,
att.declarable.attributes,
att.typed.attributes,
empty
}
lem =
## (lemma) contains the lemma, or base text, of a textual variation. [12.1. The Apparatus Entry, Readings, and Witnesses]
element lem {
(text
| model.divLike
| model.divPart
| titlePage
| argument
| byline
| docAuthor
| docDate
| docEdition
| docImprint
| docTitle
| epigraph
| imprimatur
| titlePart
| epilogue
| performance
| prologue
| set
| model.gLike
| model.phrase
| model.inter
| model.global
| model.rdgPart)*,
att.global.attributes,
att.textCritical.attributes,
att.witnessed.attributes,
empty
}
rdg =
## (reading) contains a single reading within a textual variation. [12.1. The Apparatus Entry, Readings, and Witnesses]
element rdg {
(text
| model.divLike
| model.divPart
| titlePage
| argument
| byline
| docAuthor
| docDate
| docEdition
| docImprint
| docTitle
| epigraph
| imprimatur
| titlePart
| epilogue
| performance
| prologue
| set
| model.gLike
| model.phrase
| model.inter
| model.global
| model.rdgPart)*,
att.global.attributes,
att.textCritical.attributes,
att.witnessed.attributes,
empty
}
rdgGrp =
## (reading group) within a textual variation, groups two or more readings perceived to have a genetic relationship or other affinity. [12.1. The Apparatus Entry, Readings, and Witnesses]
element rdgGrp {
(lem?, (model.rdgLike | model.noteLike | witDetail | wit | rdgGrp)*)
>> sch:pattern [
id = "tei_all-rdgGrp-only1lem-constraint-assert-25"
"\x{a}" ~
" "
sch:rule [
context = "tei:rdgGrp"
"\x{a}" ~
" "
sch:assert [
test = "count(tei:lem) < 2"
"Only one <lem> element may appear within a <rdgGrp>"
]
"\x{a}" ~
" "
]
"\x{a}" ~
" "
],
att.global.attributes,
att.textCritical.attributes,
empty
}
witDetail =
## (witness detail) gives further information about a particular witness, or witnesses, to a particular reading. [12.1. The Apparatus Entry, Readings, and Witnesses]
element witDetail {
(text | model.gLike | model.phrase | model.global | bibl)*,
att.global.attributes,
att.placement.attributes,
att.pointing.attributes,
att.typed.attribute.subtype,
## describes the type of information given about the witness.
attribute type {
xsd:token { pattern = "[^\p{C}\p{Z}]+" }
}?,
## (witnesses) indicates the sigil or sigla identifying the witness or witnesses to which the detail refers.
attribute wit {
list {
xsd:anyURI { pattern = "\S+" }+
}
},
empty
}
wit =
## (wit) contains a list of one or more sigla of witnesses attesting a given reading, in a textual variation. [12.1.4. Witness Information]
element wit {
macro.phraseSeq,
att.global.attributes,
att.rdgPart.attributes,
empty
}
listWit =
## (witness list) lists definitions for all the witnesses referred to by a critical apparatus, optionally grouped hierarchically. [12.1. The Apparatus Entry, Readings, and Witnesses]
element listWit {
(model.headLike?, desc*, (witness | listWit)+),
att.global.attributes,
att.sortable.attributes,
empty
}
witness =
## (witness) contains either a description of a single witness referred to within the critical apparatus, or a list of witnesses which is to be referred to by a single sigil. [12.1. The Apparatus Entry, Readings, and Witnesses]
element witness {
(text | model.limitedPhrase | model.inter | note | object)*,
att.global.attributes,
att.sortable.attributes,
empty
}
witStart =
## (fragmented witness start) indicates the beginning, or resumption, of the text of a fragmentary witness. [12.1.5. Fragmentary Witnesses]
element witStart {
empty, att.global.attributes, att.rdgPart.attributes, empty
}
witEnd =
## (fragmented witness end) indicates the end, or suspension, of the text of a fragmentary witness. [12.1.5. Fragmentary Witnesses]
element witEnd {
empty, att.global.attributes, att.rdgPart.attributes, empty
}
lacunaStart =
## (lacuna start) indicates the beginning of a lacuna in the text of a mostly complete textual witness. [12.1.5. Fragmentary Witnesses]
element lacunaStart {
empty, att.global.attributes, att.rdgPart.attributes, empty
}
lacunaEnd =
## (lacuna end) indicates the end of a lacuna in a mostly complete textual witness. [12.1.5. Fragmentary Witnesses]
element lacunaEnd {
empty, att.global.attributes, att.rdgPart.attributes, empty
}
variantEncoding =
## (variant encoding) declares the method used to encode text-critical variants. [12.1.1. The Apparatus Entry]
element variantEncoding {
empty,
att.global.attributes,
## indicates which method is used to encode the apparatus of variants.
attribute method {
## apparatus uses line numbers or other canonical reference scheme referenced in a base text.
"location-referenced"
|
## apparatus indicates the precise locations of the beginning and ending of each lemma relative to a base text.
"double-end-point"
|
## alternate readings of a passage are given in parallel in the text; no notion of a base text is necessary.
"parallel-segmentation"
},
## indicates whether the apparatus appears within the running text or external to it.
attribute location {
## apparatus appears within the running text.
"internal"
|
## apparatus appears outside the base text.
"external"
}
>> sch:pattern [
id =
"tei_all-variantEncoding-location-variantEncodingLocation-constraint-rule-17"
"\x{a}" ~
" "
sch:rule [
context = "tei:variantEncoding"
"\x{a}" ~
" "
sch:report [
test =
"@location eq 'external' and @method eq 'parallel-segmentation'"
"\x{a}" ~
' The @location value "external" is inconsistent with the\x{a}' ~
" parallel-segmentation method of apparatus markup."
]
"\x{a}" ~
" "
]
"\x{a}" ~
" "
],
empty
}
att.datable.custom.attributes =
att.datable.custom.attribute.when-custom,
att.datable.custom.attribute.notBefore-custom,
att.datable.custom.attribute.notAfter-custom,
att.datable.custom.attribute.from-custom,
att.datable.custom.attribute.to-custom,
att.datable.custom.attribute.datingPoint,
att.datable.custom.attribute.datingMethod
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}]+" }+
}
}?
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}]+" }+
}
}?
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}]+" }+
}
}?
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}]+" }+
}
}?
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}]+" }+
}
}?
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 { pattern = "\S+" }
}?
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 { pattern = "\S+" }
}?
model.persNamePart =
surname
| forename
| genName
| nameLink
| addName
| roleName
| persPronouns
model.persNamePart_alternation =
surname
| forename
| genName
| nameLink
| addName
| roleName
| persPronouns
model.persNamePart_sequence =
surname, forename, genName, nameLink, addName, roleName, persPronouns
model.persNamePart_sequenceOptional =
surname?,
forename?,
genName?,
nameLink?,
addName?,
roleName?,
persPronouns?
model.persNamePart_sequenceOptionalRepeatable =
surname*,
forename*,
genName*,
nameLink*,
addName*,
roleName*,
persPronouns*
model.persNamePart_sequenceRepeatable =
surname+,
forename+,
genName+,
nameLink+,
addName+,
roleName+,
persPronouns+
att.datable.iso.attributes =
att.datable.iso.attribute.when-iso,
att.datable.iso.attribute.notBefore-iso,
att.datable.iso.attribute.notAfter-iso,
att.datable.iso.attribute.from-iso,
att.datable.iso.attribute.to-iso
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/:+\-]+" }
}?
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/:+\-]+" }
}?
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/:+\-]+" }
}?
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/:+\-]+" }
}?
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/:+\-]+" }
}?
orgName =
## (organization name) contains an organizational name. [13.2.2. Organizational Names]
element orgName {
macro.phraseSeq,
att.global.attributes,
att.datable.attributes,
att.editLike.attributes,
att.personal.attributes,
att.typed.attributes,
empty
}
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 persName {
macro.phraseSeq,
att.global.attributes,
att.datable.attributes,
att.editLike.attributes,
att.personal.attributes,
att.typed.attributes,
empty
}
surname =
## (surname) contains a family (inherited) name, as opposed to a given, baptismal, or nick name. [13.2.1. Personal Names]
element surname {
macro.phraseSeq,
att.global.attributes,
att.personal.attributes,
att.typed.attributes,
empty
}
forename =
## (forename) contains a forename, given or baptismal name. [13.2.1. Personal Names]
element forename {
macro.phraseSeq,
att.global.attributes,
att.personal.attributes,
att.typed.attributes,
empty
}
genName =
## (generational name component) contains a name component used to distinguish otherwise similar names on the basis of the relative ages or generations of the persons named. [13.2.1. Personal Names]
element genName {
macro.phraseSeq,
att.global.attributes,
att.personal.attributes,
att.typed.attributes,
empty
}
nameLink =
## (name link) contains a connecting phrase or link used within a name but not regarded as part of it, such as van der or of. [13.2.1. Personal Names]
element nameLink {
macro.phraseSeq, att.global.attributes, att.typed.attributes, empty
}
addName =
## (additional name) contains an additional name component, such as a nickname, epithet, or alias, or any other descriptive phrase used within a personal name. [13.2.1. Personal Names]
element addName {
macro.phraseSeq,
att.global.attributes,
att.personal.attributes,
att.typed.attributes,
empty
}
roleName =
## (role name) contains a name component which indicates that the referent has a particular role or position in society, such as an official title or rank. [13.2.1. Personal Names]
element roleName {
macro.phraseSeq,
att.global.attributes,
att.personal.attributes,
att.typed.attributes,
empty
}
placeName =
## (place name) contains an absolute or relative place name. [13.2.3. Place Names]
element placeName {
macro.phraseSeq,
att.datable.attributes,
att.editLike.attributes,
att.global.attributes,
att.personal.attributes,
att.typed.attributes,
empty
}
bloc =
## (bloc) contains the name of a geo-political unit consisting of two or more nation states or countries. [13.2.3. Place Names]
element bloc {
macro.phraseSeq,
att.global.attributes,
att.naming.attributes,
att.typed.attributes,
att.datable.attributes,
empty
}
country =
## (country) contains the name of a geo-political unit, such as a nation, country, colony, or commonwealth, larger than or administratively superior to a region and smaller than a bloc. [13.2.3. Place Names]
element country {
macro.phraseSeq,
att.global.attributes,
att.naming.attributes,
att.typed.attributes,
att.datable.attributes,
empty
}
region =
## (region) contains the name of an administrative unit such as a state, province, or county, larger than a settlement, but smaller than a country. [13.2.3. Place Names]
element region {
macro.phraseSeq,
att.global.attributes,
att.naming.attributes,
att.typed.attributes,
att.datable.attributes,
empty
}
settlement =
## (settlement) contains the name of a settlement such as a city, town, or village identified as a single geo-political or administrative unit. [13.2.3. Place Names]
element settlement {
macro.phraseSeq,
att.global.attributes,
att.naming.attributes,
att.typed.attributes,
att.datable.attributes,
empty
}
district =
## (district) contains the name of any kind of subdivision of a settlement, such as a parish, ward, or other administrative or geographic unit. [13.2.3. Place Names]
element district {
macro.phraseSeq,
att.global.attributes,
att.naming.attributes,
att.typed.attributes,
att.datable.attributes,
empty
}
offset =
## (offset) marks that part of a relative temporal or spatial expression which indicates the direction of the offset between the two place names, dates, or times involved in the expression. [13.2.3. Place Names]
element offset {
macro.phraseSeq,
att.datable.attributes,
att.editLike.attributes,
att.global.attributes,
att.naming.attributes,
att.typed.attributes,
att.dimensions.attributes,
empty
}
geogName =
## (geographical name) identifies a name associated with some geographical feature such as Windrush Valley or Mount Sinai. [13.2.3. Place Names]
element geogName {
macro.phraseSeq,
att.datable.attributes,
att.editLike.attributes,
att.global.attributes,
att.naming.attributes,
att.typed.attributes,
empty
}
geogFeat =
## (geographical feature name) contains a common noun identifying some geographical feature contained within a geographic name, such as valley, mount, etc. [13.2.3. Place Names]
element geogFeat {
macro.phraseSeq,
att.datable.attributes,
att.editLike.attributes,
att.global.attributes,
att.naming.attributes,
att.typed.attributes,
att.dimensions.attributes,
empty
}
affiliation =
## (affiliation) contains an informal description of a person's present or past affiliation with some organization, for example an employer or sponsor. [15.2.2. The Participant Description]
element affiliation {
macro.phraseSeq,
att.global.attributes,
att.editLike.attributes,
att.datable.attributes,
att.naming.attributes,
att.typed.attribute.subtype,
## characterizes the element in some sense, using any convenient classification scheme or typology.
## Sample values include: 1] sponsor; 2] recommend; 3] discredit; 4] pledged
attribute type {
xsd:token { pattern = "[^\p{C}\p{Z}]+" }
}?,
empty
}
age =
## (age) specifies the age of a person. [13.3.2.1. Personal Characteristics]
element age {
macro.phraseSeq.limited,
att.global.attributes,
att.editLike.attributes,
att.datable.attributes,
att.typed.attribute.subtype,
att.dimensions.attributes,
## characterizes the element in some sense, using any convenient classification scheme or typology.
## Sample values include: 1] western; 2] sui; 3] subjective; 4] objective; 5] inWorld (in world); 6] chronological; 7] biological; 8] psychological; 9] functional
attribute type {
xsd:token { pattern = "[^\p{C}\p{Z}]+" }
}?,
## supplies a numeric code representing the age or age group
attribute value { xsd:nonNegativeInteger }?,
empty
}
birth =
## (birth) contains information about a person's birth, such as its date and place. [15.2.2. The Participant Description]
element birth {
macro.phraseSeq,
att.global.attributes,
att.editLike.attributes,
att.datable.attributes,
att.dimensions.attributes,
att.naming.attributes,
att.typed.attribute.subtype,
## characterizes the element in some sense, using any convenient classification scheme or typology.
## Sample values include: 1] caesarean (caesarean section); 2] vaginal (vaginal delivery); 3] exNihilo (ex nihilo); 4] incorporated; 5] founded; 6] established
attribute type {
xsd:token { pattern = "[^\p{C}\p{Z}]+" }
}?,
empty
}
climate =
## (climate) contains information about the physical climate of a place. [13.3.4.3. States, Traits, and Events]
element climate {
(precision*,
model.headLike*,
(model.pLike+ | model.labelLike+),
(model.noteLike | model.biblLike)*,
climate*),
att.global.attributes,
att.datable.attributes,
att.editLike.attributes,
att.naming.attributes,
att.typed.attributes,
empty
}
death =
## (death) contains information about a person's death, such as its date and place. [15.2.2. The Participant Description]
element death {
macro.phraseSeq,
att.datable.attributes,
att.dimensions.attributes,
att.editLike.attributes,
att.global.attributes,
att.naming.attributes,
att.typed.attribute.subtype,
## characterizes the element in some sense, using any convenient classification scheme or typology.
## Sample values include: 1] proclaimed; 2] assumed; 3] verified; 4] clinical; 5] brain; 6] natural; 7] unnatural; 8] fragmentation; 9] dissolution
attribute type {
xsd:token { pattern = "[^\p{C}\p{Z}]+" }
}?,
empty
}
education =
## (education) contains a description of the educational experience of a person. [15.2.2. The Participant Description]
element education {
macro.phraseSeq,
att.global.attributes,
att.editLike.attributes,
att.datable.attributes,
att.naming.attributes,
att.typed.attribute.subtype,
## characterizes the element in some sense, using any convenient classification scheme or typology.
## Sample values include: 1] primary; 2] secondary; 3] undergraduate; 4] graduate; 5] residency; 6] apprenticeship
attribute type {
xsd:token { pattern = "[^\p{C}\p{Z}]+" }
}?,
empty
}
event =
## (event) contains data relating to any kind of significant event associated with a person, place, or organization. [13.3.1. Basic Principles]
element event {
(idno*,
model.headLike*,
(model.pLike+ | model.labelLike+),
(model.noteLike | model.biblLike | linkGrp | link | idno | ptr)*,
event*),
att.global.attributes,
att.datable.attributes,
att.editLike.attributes,
att.typed.attributes,
att.naming.attributes,
att.sortable.attributes,
att.locatable.attributes,
empty
}
faith =
## (faith) specifies the faith, religion, or belief set of a person. [13.3.2.1. Personal Characteristics]
element faith {
macro.phraseSeq,
att.global.attributes,
att.editLike.attributes,
att.datable.attributes,
att.canonical.attributes,
att.typed.attribute.subtype,
## characterizes the element in some sense, using any convenient classification scheme or typology.
## Sample values include: 1] practicing; 2] clandestine; 3] patrilineal; 4] matrilineal; 5] convert
attribute type {
xsd:token { pattern = "[^\p{C}\p{Z}]+" }
}?,
empty
}
floruit =
## (floruit) contains information about a person's period of activity. [13.3.2.1. Personal Characteristics]
element floruit {
macro.phraseSeq,
att.global.attributes,
att.datable.attributes,
att.dimensions.attributes,
att.editLike.attributes,
empty
}
gender =
## (gender) specifies the gender identity of a person, persona, or character. [13.3.2.1. Personal Characteristics]
element gender {
macro.phraseSeq,
att.global.attributes,
att.editLike.attributes,
att.datable.attributes,
att.typed.attributes,
## supplies a coded value for gender identity
attribute value {
list {
xsd:token { pattern = "[^\p{C}\p{Z}]+" }+
}
}?,
empty
}
geo =
## (geographical coordinates) contains any expression of a set of geographic coordinates, representing a point, line, or area on the surface of the earth in some notation. [13.3.4.1. Varieties of Location]
element geo {
text, att.global.attributes, att.declaring.attributes, empty
}
langKnowledge =
[
a:documentation [
"(language knowledge) summarizes the state of a person's linguistic knowledge, either as prose or by a list of "
ns1:code [ "<langKnown>" ]
" elements. [13.3.2.1. Personal Characteristics]"
]
]
element langKnowledge {
(precision*, (model.pLike | langKnown+)),
att.global.attributes,
att.datable.attributes,
att.editLike.attributes,
att.typed.attribute.subtype,
## characterizes the element in some sense, using any convenient classification scheme or typology.
## Sample values include: 1] listening; 2] speaking; 3] reading; 4] writing
attribute type {
xsd:token { pattern = "[^\p{C}\p{Z}]+" }
}?,
## supplies one or more valid language tags for the languages specified
attribute tags {
list {
(xsd:language
| (
##
""))+
}
}?,
empty
}
langKnown =
## (language known) summarizes the state of a person's linguistic competence, i.e., knowledge of a single language. [15.2.2. The Participant Description]
element langKnown {
macro.phraseSeq.limited,
att.global.attributes,
att.datable.attributes,
att.editLike.attributes,
## supplies a valid language tag for the language concerned.
attribute tag {
xsd:language
| (
##
"")
},
## a code indicating the person's level of knowledge for this language
attribute level {
xsd:token { pattern = "[^\p{C}\p{Z}]+" }
}?,
empty
}
listOrg =
## (list of organizations) contains a list of elements, each of which provides information about an identifiable organization. [13.2.2. Organizational Names]
element listOrg {
(model.headLike*,
desc*,
(relation | listRelation)*,
((org | listOrg)+, (relation | listRelation)*)+),
att.global.attributes,
att.typed.attributes,
att.declarable.attributes,
att.sortable.attributes,
empty
}
listEvent =
## (list of events) contains a list of descriptions, each of which provides information about an identifiable event. [13.3.1. Basic Principles]
element listEvent {
(model.headLike*,
desc*,
(relation | listRelation)*,
(model.eventLike+, (relation | listRelation)*)+),
att.global.attributes,
att.typed.attributes,
att.declarable.attributes,
att.sortable.attributes,
empty
}
listPerson =
## (list of persons) contains a list of descriptions, each of which provides information about an identifiable person or a group of people, for example the participants in a language interaction, or the people referred to in a historical source. [13.3.2. The Person Element 15.2. Contextual Information 2.4. The Profile Description 15.3.2. Declarable Elements]
element listPerson {
(model.headLike*,
desc*,
(relation | listRelation)*,
((model.personLike | listPerson)+, (relation | listRelation)*)+),
att.global.attributes,
att.typed.attributes,
att.declarable.attributes,
att.sortable.attributes,
empty
}
listPlace =
## (list of places) contains a list of places, optionally followed by a list of relationships (other than containment) defined amongst them. [2.2.7. The Source Description 13.3.4. Places]
element listPlace {
(model.headLike*,
desc*,
(relation | listRelation)*,
((model.placeLike | listPlace)+, (relation | listRelation)*)+),
att.global.attributes,
att.typed.attributes,
att.declarable.attributes,
att.sortable.attributes,
empty
}
listRelation =
## provides information about relationships identified amongst people, places, and organizations, either informally as prose or as formally expressed relation links. [13.3.2.3. Personal Relationships]
element listRelation {
(model.headLike*,
desc*,
(model.pLike | (relation | listRelation)+)),
att.global.attributes,
att.typed.attributes,
att.sortable.attributes,
empty
}
location =
## (location) defines the location of a place as a set of geographical coordinates, in terms of other named geo-political entities, or as an address. [13.3.4. Places]
element location {
(precision
| model.labelLike
| model.placeNamePart
| model.offsetLike
| model.measureLike
| model.addressLike
| model.noteLike
| model.biblLike)*,
att.global.attributes,
att.typed.attributes,
att.datable.attributes,
att.editLike.attributes,
empty
}
nationality =
## (nationality) contains an informal description of a person's present or past nationality or citizenship. [15.2.2. The Participant Description]
element nationality {
macro.phraseSeq,
att.global.attributes,
att.datable.attributes,
att.editLike.attributes,
att.naming.attributes,
att.typed.attribute.subtype,
## characterizes the element in some sense, using any convenient classification scheme or typology.
## Sample values include: 1] birth; 2] naturalised; 3] self-assigned
attribute type {
xsd:token { pattern = "[^\p{C}\p{Z}]+" }
}?,
empty
}
occupation =
## (occupation) contains an informal description of a person's trade, profession or occupation. [15.2.2. The Participant Description]
element occupation {
macro.specialPara,
att.global.attributes,
att.datable.attributes,
att.editLike.attributes,
att.naming.attributes,
att.typed.attribute.subtype,
## characterizes the element in some sense, using any convenient classification scheme or typology.
## Sample values include: 1] primary; 2] other; 3] paid; 4] unpaid
attribute type {
xsd:token { pattern = "[^\p{C}\p{Z}]+" }
}?,
[
a:documentation [
"indicates the classification system or taxonomy in use, for example by supplying the identifier of a "
ns1:code [ "<taxonomy>" ]
" element, or pointing to some other resource."
]
]
attribute scheme {
xsd:anyURI { pattern = "\S+" }
}?,
[
a:documentation [
"identifies an occupation code defined within the classification system or taxonomy defined by the "
ns1:code [ "@scheme" ]
" attribute."
]
]
attribute code {
xsd:anyURI { pattern = "\S+" }
}?,
empty
}
org =
## (organization) provides information about an identifiable organization such as a business, a tribe, or any other grouping of people. [13.3.3. Organizational Data]
element org {
(model.headLike*,
(model.pLike*
| (model.labelLike
| model.nameLike
| model.placeLike
| model.orgPart
| model.milestoneLike)*),
(model.noteLike | model.biblLike | linkGrp | link | ptr)*,
model.personLike*),
att.global.attributes,
att.typed.attributes,
att.editLike.attributes,
att.sortable.attributes,
## specifies a primary role or classification for the organization.
attribute role {
list {
xsd:token { pattern = "[^\p{C}\p{Z}]+" }+
}
}?,
empty
}
person =
## (person) provides information about an identifiable individual, for example a participant in a language interaction, or a person referred to in a historical source. [13.3.2. The Person Element 15.2.2. The Participant Description]
element person {
(model.pLike+ | (model.personPart | model.global | ptr)*),
att.global.attributes,
att.editLike.attributes,
att.sortable.attributes,
## specifies a primary role or classification for the person.
attribute role {
list {
xsd:token { pattern = "[^\p{C}\p{Z}]+" }+
}
}?,
## specifies the sex of the person.
attribute sex {
list {
xsd:token { pattern = "[^\p{C}\p{Z}]+" }+
}
}?,
## specifies the gender of the person.
attribute gender {
list {
xsd:token { pattern = "[^\p{C}\p{Z}]+" }+
}
}?,
## specifies an age group for the person.
attribute age {
xsd:token { pattern = "[^\p{C}\p{Z}]+" }
}?,
empty
}
persona =
## provides information about one of the personalities identified for a given individual, where an individual has multiple personalities. [13.3.2. The Person Element]
element persona {
(model.pLike+ | (model.personPart | model.global)*),
att.global.attributes,
att.editLike.attributes,
att.sortable.attributes,
## specifies a primary role or classification for the persona.
attribute role {
list {
xsd:token { pattern = "[^\p{C}\p{Z}]+" }+
}
}?,
## specifies the sex of the persona.
attribute sex {
list {
xsd:token { pattern = "[^\p{C}\p{Z}]+" }+
}
}?,
## specifies the gender of the persona.
attribute gender {
list {
xsd:token { pattern = "[^\p{C}\p{Z}]+" }+
}
}?,
## specifies an age group for the persona.
attribute age {
xsd:token { pattern = "[^\p{C}\p{Z}]+" }
}?,
empty
}
personGrp =
## (personal group) describes a group of individuals treated as a single person for analytic purposes. [15.2.2. The Participant Description]
element personGrp {
(model.pLike+ | (model.personPart | model.global)*),
att.global.attributes,
att.sortable.attributes,
## specifies the role of this group of participants in the interaction.
attribute role {
xsd:token { pattern = "[^\p{C}\p{Z}]+" }
}?,
## specifies the sex of the participant group.
attribute sex {
list {
xsd:token { pattern = "[^\p{C}\p{Z}]+" }+
}
}?,
## specifies the gender of the participant group.
attribute gender {
list {
xsd:token { pattern = "[^\p{C}\p{Z}]+" }+
}
}?,
## specifies the age group of the participants.
attribute age {
xsd:token { pattern = "[^\p{C}\p{Z}]+" }
}?,
## describes informally the size or approximate size of the group for example by means of a number and an indication of accuracy e.g. approx 200.
attribute size {
list {
xsd:token { pattern = "[^\p{C}\p{Z}]+" }+
}
}?,
empty
}
persPronouns =
## (personal pronouns) indicates the personal pronouns used, or assumed to be used, by the individual being described. [13.3.2.1. Personal Characteristics]
element persPronouns {
macro.phraseSeq,
att.global.attributes,
att.datable.attributes,
att.typed.attributes,
## (evidence) indicates support for the listed personal pronouns.
## Suggested values include: 1] conjecture (conjecture); 2] selfIdentification (self identification); 3] trustedThirdParty (trusted third party)
attribute evidence {
## (conjecture) The given value was selected based on assumptions by someone besides the person to whom this pronoun applies. As a result, the value may be erroneous.
"conjecture"
|
## (self identification) The given value has been explicitly stated or confirmed by the person to whom this pronoun applies.
"selfIdentification"
|
## (trusted third party) The given value has been supplied by another individual trusted by the encoder to know the preferences of the person to whom this pronoun applies.
"trustedThirdParty"
| xsd:token { pattern = "[^\p{C}\p{Z}]+" }
}?,
## (value) supplies a regularized value for personal pronouns.
## Sample values include: 1] e (e); 2] he (he); 3] she (she); 4] they (they)
attribute value {
list {
xsd:token { pattern = "[^\p{C}\p{Z}]+" }+
}
}?,
empty
}
place =
## (place) contains data about a geographic location [13.3.4. Places]
element place {
(model.headLike*,
(model.pLike*
| (model.labelLike
| model.placeStateLike
| model.eventLike
| name)*),
(model.noteLike | model.biblLike | idno | ptr | linkGrp | link)*,
(model.placeLike | listPlace)*),
att.global.attributes,
att.typed.attributes,
att.editLike.attributes,
att.sortable.attributes,
empty
}
population =
## (population) contains information about the population of a place. [13.3.4.3. States, Traits, and Events]
element population {
(precision*,
model.headLike*,
((model.pLike+ | model.labelLike+),
(model.noteLike | model.biblLike)*)?,
population*),
att.global.attributes,
att.datable.attributes,
att.editLike.attributes,
att.naming.attributes,
att.typed.attributes,
att.dimensions.attributes,
empty
}
relation =
## (relationship) describes any kind of relationship or linkage amongst a specified group of places, events, persons, objects or other items. [13.3.2.3. Personal Relationships]
element relation {
(desc?)
>> sch:pattern [
id = "tei_all-relation-reforkeyorname-constraint-assert-26"
"\x{a}" ~
" "
sch:rule [
context = "tei:relation"
"\x{a}" ~
" "
sch:assert [
test = "@ref or @key or @name"
"One of the attributes 'name', 'ref' or 'key' must be supplied"
]
"\x{a}" ~
" "
]
"\x{a}" ~
" "
]
>> sch:pattern [
id = "tei_all-relation-activemutual-constraint-report-29"
"\x{a}" ~
" "
sch:rule [
context = "tei:relation"
"\x{a}" ~
" "
sch:report [
test = "@active and @mutual"
"Only one of the attributes @active and @mutual may be supplied"
]
"\x{a}" ~
" "
]
"\x{a}" ~
" "
]
>> sch:pattern [
id = "tei_all-relation-activepassive-constraint-report-30"
"\x{a}" ~
" "
sch:rule [
context = "tei:relation"
"\x{a}" ~
" "
sch:report [
test = "@passive and not(@active)"
"the attribute 'passive' may be supplied only if the attribute 'active' is supplied"
]
"\x{a}" ~
" "
]
"\x{a}" ~
" "
],
att.global.attributes,
att.datable.attributes,
att.editLike.attributes,
att.canonical.attributes,
att.sortable.attributes,
att.typed.attributes,
## supplies a name for the kind of relationship of which this is an instance.
attribute name {
xsd:token { pattern = "[^\p{C}\p{Z}]+" }
}?,
(
## identifies the active participants in a non-mutual relationship, or all the participants in a mutual one.
attribute active {
list {
xsd:anyURI { pattern = "\S+" }+
}
}?
|
## supplies a list of participants amongst all of whom the relationship holds equally.
attribute mutual {
list {
xsd:anyURI { pattern = "\S+" }+
}
}?),
## identifies the passive participants in a non-mutual relationship.
attribute passive {
list {
xsd:anyURI { pattern = "\S+" }+
}
}?,
empty
}
residence =
## (residence) describes a person's present or past places of residence. [15.2.2. The Participant Description]
element residence {
macro.phraseSeq,
att.global.attributes,
att.datable.attributes,
att.editLike.attributes,
att.naming.attributes,
att.typed.attribute.subtype,
## characterizes the element in some sense, using any convenient classification scheme or typology.
## Sample values include: 1] primary; 2] secondary; 3] temporary; 4] permanent
attribute type {
xsd:token { pattern = "[^\p{C}\p{Z}]+" }
}?,
empty
}
sex =
## (sex) specifies the sex of an organism. [13.3.2.1. Personal Characteristics]
element sex {
macro.phraseSeq,
att.global.attributes,
att.editLike.attributes,
att.datable.attributes,
att.typed.attributes,
## supplies a coded value for sex
attribute value {
list {
xsd:token { pattern = "[^\p{C}\p{Z}]+" }+
}
}?,
empty
}
socecStatus =
## (socio-economic status) contains an informal description of a person's perceived social or economic status. [15.2.2. The Participant Description]
element socecStatus {
macro.phraseSeq,
att.global.attributes,
att.datable.attributes,
att.editLike.attributes,
att.naming.attributes,
att.typed.attribute.subtype,
## characterizes the element in some sense, using any convenient classification scheme or typology.
## Sample values include: 1] atBirth; 2] atDeath; 3] dependent; 4] inherited; 5] independent
attribute type {
xsd:token { pattern = "[^\p{C}\p{Z}]+" }
}?,
[
a:documentation [
"identifies the classification system or taxonomy in use, for example by pointing to a locally-defined "
ns1:code [ "<taxonomy>" ]
" element or by supplying a URI for an externally-defined system."
]
]
attribute scheme {
xsd:anyURI { pattern = "\S+" }
}?,
[
a:documentation [
"identifies a status code defined within the classification system or taxonomy defined by the "
ns1:code [ "@scheme" ]
" attribute."
]
]
attribute code {
xsd:anyURI { pattern = "\S+" }
}?,
empty
}
state =
## (state) contains a description of some status or quality attributed to a person, place, or organization often at some specific time or for a specific date range. [13.3.1. Basic Principles 13.3.2.1. Personal Characteristics]
element state {
(precision*,
(state+
| (model.headLike*,
model.pLike+,
(model.noteLike | model.biblLike)*)
| (model.labelLike | model.noteLike | model.biblLike)*)),
att.global.attributes,
att.datable.attributes,
att.editLike.attributes,
att.typed.attributes,
att.naming.attributes,
att.dimensions.attributes,
empty
}
terrain =
## (terrain) contains information about the physical terrain of a place. [13.3.4.3. States, Traits, and Events]
element terrain {
(precision*,
model.headLike*,
(model.pLike+ | model.labelLike+),
(model.noteLike | model.biblLike)*,
terrain*),
att.global.attributes,
att.datable.attributes,
att.editLike.attributes,
att.naming.attributes,
att.typed.attributes,
empty
}
trait =
## (trait) contains a description of some status or quality attributed to a person, place, or organization typically, but not necessarily, independent of the volition or action of the holder and usually not at some specific time or for a specific date range. [13.3.1. Basic Principles 13.3.2.1. Personal Characteristics]
element trait {
(precision*,
(trait+
| (model.headLike*,
model.pLike+,
(model.noteLike | model.biblLike)*)
| (model.labelLike | model.noteLike | model.biblLike)*)),
att.global.attributes,
att.datable.attributes,
att.editLike.attributes,
att.naming.attributes,
att.typed.attributes,
att.dimensions.attributes,
empty
}
objectName =
## (name of an object) contains a proper noun or noun phrase used to refer to an object. [13.2.4. Object Names]
element objectName {
macro.phraseSeq,
att.datable.attributes,
att.editLike.attributes,
att.global.attributes,
att.personal.attributes,
att.typed.attributes,
empty
}
object =
## contains a description of a single identifiable physical object. [13.3.5. Objects]
element object {
(objectIdentifier+,
model.headLike*,
(model.pLike* | (msContents?, physDesc?, history?, additional?)),
(model.noteLike | model.biblLike | linkGrp | link)*,
object*),
att.global.attributes,
att.sortable.attributes,
att.typed.attributes,
att.declaring.attributes,
att.docStatus.attributes,
att.canonical.attributes,
empty
}
listObject =
## (list of objects) contains a list of descriptions, each of which provides information about an identifiable physical object. [13.3.5. Objects]
element listObject {
(model.headLike*,
desc*,
(relation | listRelation)*,
(model.objectLike+, (relation | listRelation)*)+),
att.global.attributes,
att.typed.attributes,
att.declarable.attributes,
att.sortable.attributes,
empty
}
objectIdentifier =
## (object identifier) groups one or more identifiers or pieces of locating information concerning a single object. [13.3.5. Objects]
element objectIdentifier {
(model.placeNamePart
| institution
| repository
| collection
| idno
| msName
| objectName
| altIdentifier
| address)+,
att.global.attributes,
empty
}
nym =
## (canonical name) contains the definition for a canonical name or name component of any kind. [13.3.6. Names and Nyms]
element nym {
(idno*, model.entryPart*, model.pLike*, nym*),
att.global.attributes,
att.typed.attributes,
att.sortable.attributes,
## points to constituent nyms
attribute parts {
list {
xsd:anyURI { pattern = "\S+" }+
}
}?,
empty
}
listNym =
## (list of canonical names) contains a list of nyms, that is, standardized names for any thing. [13.3.6. Names and Nyms]
element listNym {
(model.headLike*,
desc*,
(relation | listRelation)*,
((nym | listNym)+, (relation | listRelation)*)+),
att.global.attributes,
att.typed.attributes,
att.declarable.attributes,
att.sortable.attributes,
empty
}
att.tableDecoration.attributes =
att.tableDecoration.attribute.role,
att.tableDecoration.attribute.rows,
att.tableDecoration.attribute.cols
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}]+" }
}?
att.tableDecoration.attribute.rows =
## (rows) indicates the number of rows occupied by this cell or row.
[ a:defaultValue = "1" ] attribute rows { xsd:nonNegativeInteger }?
att.tableDecoration.attribute.cols =
## (columns) indicates the number of columns occupied by this cell or row.
[ a:defaultValue = "1" ] attribute cols { xsd:nonNegativeInteger }?
table =
## (table) contains text displayed in tabular form, in rows and columns. [14.1.1. TEI Tables]
element table {
((model.headLike | model.global)*,
((row, model.global*)+ | (model.graphicLike, model.global*)+),
(model.divBottom, model.global*)*),
att.global.attributes,
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
}
row =
## (row) contains one row of a table. [14.1.1. TEI Tables]
element row {
cell+, att.global.attributes, att.tableDecoration.attributes, empty
}
cell =
## (cell) contains one cell of a table. [14.1.1. TEI Tables]
element cell {
macro.specialPara,
att.global.attributes,
att.tableDecoration.attributes,
empty
}
formula =
## (formula) contains a mathematical or other formula. [14.2. Formulæ and Mathematical Expressions]
element formula {
(text | model.graphicLike | model.hiLike)*,
att.global.attributes,
att.notated.attributes,
empty
}
notatedMusic =
## encodes the presence of music notation in a text [14.3. Notated Music in Written Text]
element notatedMusic {
(model.labelLike | model.ptrLike | graphic | binaryObject | seg)*,
att.global.attributes,
att.placement.attributes,
att.typed.attributes,
empty
}
figure =
## (figure) groups elements representing or containing graphic information such as an illustration, formula, or figure. [14.4. Specific Elements for Graphic Images]
element figure {
(model.headLike
| model.common
| figDesc
| model.graphicLike
| model.global
| model.divBottom)*,
att.global.attributes,
att.placement.attributes,
att.typed.attributes,
att.written.attributes,
empty
}
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 figDesc { macro.limitedContent, att.global.attributes, empty }
textDesc =
## (text description) provides a description of a text in terms of its situational parameters. [15.2.1. The Text Description]
element textDesc {
(channel,
constitution,
derivation,
domain,
factuality,
interaction,
preparedness,
purpose+),
att.global.attributes,
att.declarable.attributes,
empty
}
particDesc =
## (participation description) describes the identifiable speakers, voices, or other participants in any kind of text or other persons named or otherwise referred to in a text, edition, or metadata. [15.2. Contextual Information]
element particDesc {
(model.pLike+ | (model.personLike | listPerson | listOrg)+),
att.global.attributes,
att.declarable.attributes,
empty
}
settingDesc =
## (setting description) describes the setting or settings within which a language interaction takes place, or other places otherwise referred to in a text, edition, or metadata. [15.2. Contextual Information 2.4. The Profile Description]
element settingDesc {
(model.pLike+ | (setting | model.placeLike | listPlace)+),
att.global.attributes,
att.declarable.attributes,
empty
}
channel =
## (primary channel) describes the medium or channel by which a text is delivered or experienced. For a written text, this might be print, manuscript, email, etc.; for a spoken one, radio, telephone, face-to-face, etc. [15.2.1. The Text Description]
element channel {
macro.phraseSeq.limited,
att.global.attributes,
## specifies the mode of this channel with respect to speech and writing.
[ a:defaultValue = "x" ]
attribute mode {
## (spoken)
"s"
|
## (written)
"w"
|
## (spoken to be written) e.g. dictation
"sw"
|
## (written to be spoken) e.g. a script
"ws"
|
## (mixed)
"m"
|
## (unknown or inapplicable)
"x"
}?,
empty
}
constitution =
## (constitution) describes the internal composition of a text or text sample, for example as fragmentary, complete, etc. [15.2.1. The Text Description]
element constitution {
macro.phraseSeq.limited,
att.global.attributes,
att.typed.attribute.subtype,
## specifies how the text was constituted.
[ a:defaultValue = "single" ]
attribute type {
## a single complete text
"single"
|
## a text made by combining several smaller items, each individually complete
"composite"
|
## (fragments) a text made by combining several smaller, not necessarily complete, items
"frags"
|
## composition unknown or unspecified
"unknown"
}?,
empty
}
derivation =
## (derivation) describes the nature and extent of originality of this text. [15.2.1. The Text Description]
element derivation {
macro.phraseSeq.limited,
att.global.attributes,
att.typed.attribute.subtype,
## categorizes the derivation of the text.
## Sample values include: 1] original; 2] revision; 3] translation; 4] abridgment; 5] plagiarism; 6] traditional
attribute type {
xsd:token { pattern = "[^\p{C}\p{Z}]+" }
}?,
empty
}
domain =
## (domain of use) describes the most important social context in which the text was realized or for which it is intended, for example private vs. public, education, religion, etc. [15.2.1. The Text Description]
element domain {
macro.phraseSeq.limited,
att.global.attributes,
att.typed.attribute.subtype,
## categorizes the domain of use.
## Sample values include: 1] art; 2] domestic; 3] religious; 4] business; 5] education (education); 6] govt (government); 7] public
attribute type {
xsd:token { pattern = "[^\p{C}\p{Z}]+" }
}?,
empty
}
factuality =
## (factuality) describes the extent to which the text may be regarded as imaginative or non-imaginative, that is, as describing a fictional or a non-fictional world. [15.2.1. The Text Description]
element factuality {
macro.phraseSeq.limited,
att.global.attributes,
att.typed.attribute.subtype,
## categorizes the factuality of the text.
attribute type {
## the text is to be regarded as entirely imaginative
"fiction"
|
## the text is to be regarded as entirely informative or factual
"fact"
|
## the text contains a mixture of fact and fiction
"mixed"
|
## the fiction/fact distinction is not regarded as helpful or appropriate to this text
"inapplicable"
}?,
empty
}
interaction =
## (interaction) describes the extent, cardinality and nature of any interaction among those producing and experiencing the text, for example in the form of response or interjection, commentary, etc. [15.2.1. The Text Description]
element interaction {
macro.phraseSeq.limited,
att.global.attributes,
att.typed.attribute.subtype,
## specifies the degree of interaction between active and passive participants in the text.
attribute type {
## no interaction of any kind, e.g. a monologue
"none"
|
## some degree of interaction, e.g. a monologue with set responses
"partial"
|
## complete interaction, e.g. a face to face conversation
"complete"
|
## this parameter is inappropriate or inapplicable in this case
"inapplicable"
}?,
## specifies the number of active participants (or addressors) producing parts of the text.
## Suggested values include: 1] singular; 2] plural; 3] corporate; 4] unknown
attribute active {
## a single addressor
"singular"
|
## many addressors
"plural"
|
## a corporate addressor
"corporate"
|
## number of addressors unknown or unspecifiable
"unknown"
| xsd:token { pattern = "[^\p{C}\p{Z}]+" }
}?,
## specifies the number of passive participants (or addressees) to whom a text is directed or in whose presence it is created or performed.
## Suggested values include: 1] self; 2] single; 3] many; 4] group; 5] world
attribute passive {
## text is addressed to the originator e.g. a diary
"self"
|
## text is addressed to one other person e.g. a personal letter
"single"
|
## text is addressed to a countable number of others e.g. a conversation in which all participants are identified
"many"
|
## text is addressed to an undefined but fixed number of participants e.g. a lecture
"group"
|
## text is addressed to an undefined and indeterminately large number e.g. a published book
"world"
| xsd:token { pattern = "[^\p{C}\p{Z}]+" }
}?,
empty
}
preparedness =
## (preparedness) describes the extent to which a text may be regarded as prepared or spontaneous. [15.2.1. The Text Description]
element preparedness {
macro.phraseSeq.limited,
att.global.attributes,
att.typed.attribute.subtype,
## a keyword characterizing the type of preparedness.
## Sample values include: 1] none; 2] scripted; 3] formulaic; 4] revised
attribute type {
xsd:token { pattern = "[^\p{C}\p{Z}]+" }
}?,
empty
}
purpose =
## characterizes a single purpose or communicative function of the text. [15.2.1. The Text Description]
element purpose {
macro.phraseSeq.limited,
att.global.attributes,
att.typed.attribute.subtype,
## specifies a particular kind of purpose.
## Suggested values include: 1] persuade; 2] express; 3] inform; 4] entertain
attribute type {
## didactic, advertising, propaganda, etc.
"persuade"
|
## self expression, confessional, etc.
"express"
|
## convey information, educate, etc.
"inform"
|
## amuse, entertain, etc.
"entertain"
| xsd:token { pattern = "[^\p{C}\p{Z}]+" }
}?,
## specifies the extent to which this purpose predominates.
attribute degree {
##
"high"
|
##
"medium"
|
##
"low"
|
##
"unknown"
}?,
empty
}
setting =
## describes one particular setting in which a language interaction takes place. [15.2.3. The Setting Description]
element setting {
(model.pLike+
| (model.nameLike.agent | model.dateLike | model.settingPart)*),
att.global.attributes,
att.ascribed.attributes,
empty
}
locale =
## contains a brief informal description of the kind of place concerned, for example: a room, a restaurant, a park bench, etc. [15.2.3. The Setting Description]
element locale {
macro.phraseSeq.limited, att.global.attributes, empty
}
activity =
## (activity) contains a brief informal description of what a participant in a language interaction is doing other than speaking, if anything. [15.2.3. The Setting Description]
element activity {
macro.phraseSeq.limited, att.global.attributes, empty
}
att.global.linking.attributes =
att.global.linking.attribute.corresp,
att.global.linking.attribute.synch,
att.global.linking.attribute.sameAs,
att.global.linking.attribute.copyOf,
att.global.linking.attribute.next,
att.global.linking.attribute.prev,
att.global.linking.attribute.exclude,
att.global.linking.attribute.select
att.global.linking.attribute.corresp =
## (corresponds) points to elements that correspond to the current element in some way.
attribute corresp {
list {
xsd:anyURI { pattern = "\S+" }+
}
}?
att.global.linking.attribute.synch =
## (synchronous) points to elements that are synchronous with the current element.
attribute synch {
list {
xsd:anyURI { pattern = "\S+" }+
}
}?
att.global.linking.attribute.sameAs =
## points to an element that is the same as the current element.
attribute sameAs {
xsd:anyURI { pattern = "\S+" }
}?
att.global.linking.attribute.copyOf =
## points to an element of which the current element is a copy.
attribute copyOf {
xsd:anyURI { pattern = "\S+" }
}?
att.global.linking.attribute.next =
## points to the next element of a virtual aggregate of which the current element is part.
attribute next {
xsd:anyURI { pattern = "\S+" }
}?
att.global.linking.attribute.prev =
## (previous) points to the previous element of a virtual aggregate of which the current element is part.
attribute prev {
xsd:anyURI { pattern = "\S+" }
}?
att.global.linking.attribute.exclude =
## points to elements that are in exclusive alternation with the current element.
attribute exclude {
list {
xsd:anyURI { pattern = "\S+" }+
}
}?
att.global.linking.attribute.select =
## selects one or more alternants; if one alternant is selected, the ambiguity or uncertainty is marked as resolved. If more than one alternant is selected, the degree of ambiguity or uncertainty is marked as reduced by the number of alternants not selected.
attribute select {
list {
xsd:anyURI { pattern = "\S+" }+
}
}?
link =
## (link) defines an association or hypertextual link among elements or passages, of some type not more precisely specifiable by other elements. [16.1. Links]
element link {
empty
>> sch:pattern [
id = "tei_all-link-linkTargets3-constraint-assert-27"
"\x{a}" ~
" "
sch:rule [
context = "tei:link"
"\x{a}" ~
" "
sch:assert [
test = "contains(normalize-space(@target),' ')"
"You must supply at least two values for @target or on "
sch:name [ ]
"\x{a}" ~
" "
]
"\x{a}" ~
" "
]
"\x{a}" ~
" "
],
att.global.attributes,
att.pointing.attributes,
att.typed.attributes,
empty
}
linkGrp =
## (link group) defines a collection of associations or hypertextual links. [16.1. Links]
element linkGrp {
(model.descLike*, (link | ptr)+),
att.global.attributes,
att.pointing.group.attributes,
empty
}
ab =
## (anonymous block) contains any component-level unit of text, acting as a container for phrase or inter level elements analogous to, but without the same constraints as, a paragraph. [16.3. Blocks, Segments, and Anchors]
element ab {
macro.abContent
>> sch:pattern [
id =
"tei_all-ab-abstractModel-structure-ab-in-l-or-lg-constraint-report-31"
"\x{a}" ~
" "
sch:rule [
context = "tei:ab"
"\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 divisions such as p or ab, unless ab is a child of figure or note, or is a descendant of floatingText.\x{a}" ~
" "
]
"\x{a}" ~
" "
]
"\x{a}" ~
" "
],
att.global.attributes,
att.typed.attributes,
att.declaring.attributes,
att.fragmentable.attributes,
att.written.attributes,
empty
}
anchor =
## (anchor point) attaches an identifier to a point within a text, whether or not it corresponds with a textual element. [8.4.2. Synchronization and Overlap 16.5. Correspondence and Alignment]
element anchor {
empty, att.global.attributes, att.typed.attributes, empty
}
seg =
## (arbitrary segment) represents any segmentation of text below the chunk level. [16.3. Blocks, Segments, and Anchors 6.2. Components of the Verse Line 7.2.5. Speech Contents]
element seg {
macro.paraContent,
att.global.attributes,
att.segLike.attributes,
att.typed.attributes,
att.written.attributes,
att.notated.attributes,
empty
}
when =
## indicates a point in time either relative to other elements in the same timeline tag, or absolutely. [16.4.2. Placing Synchronous Events in Time]
element when {
empty,
att.global.attributes,
## supplies an absolute value for the time.
attribute absolute {
xsd:date
| xsd:gYear
| xsd:gMonth
| xsd:gDay
| xsd:gYearMonth
| xsd:gMonthDay
| xsd:time
| xsd:dateTime
}?,
[
a:documentation [
"specifies the unit of time in which the "
ns1:code [ "@interval" ]
" value is expressed, if this is not inherited from the parent "
ns1:code [ "<timeline>" ]
".\x{a}" ~
"Suggested values include: 1] d (days); 2] h (hours); 3] min (minutes); 4] s (seconds); 5] ms (milliseconds)"
]
]
attribute unit {
## (days)
"d"
|
## (hours)
"h"
|
## (minutes)
"min"
|
## (seconds)
"s"
|
## (milliseconds)
"ms"
| xsd:token { pattern = "[^\p{C}\p{Z}]+" }
}?,
## specifies a time interval either as a number or as one of the keywords defined by the datatype teidata.interval
attribute interval {
xsd:float
| (
##
"regular"
|
##
"irregular"
|
##
"unknown")
}?,
[
a:documentation [
"identifies the reference point for determining the time of the current "
ns1:code [ "<when>" ]
" element, which is obtained by adding the interval to the time of the reference point."
]
]
attribute since {
xsd:anyURI { pattern = "\S+" }
}?,
empty
}
timeline =
## (timeline) provides a set of ordered points in time which can be linked to elements of a spoken text to create a temporal alignment of that text. [16.4.2. Placing Synchronous Events in Time]
element timeline {
when+,
att.global.attributes,
## designates the origin of the timeline, i.e. the time at which it begins.
attribute origin {
xsd:anyURI { pattern = "\S+" }
}?,
[
a:documentation [
"specifies the unit of time corresponding to the "
ns1:code [ "@interval" ]
" value of the timeline or of its constituent points in time.\x{a}" ~
"Suggested values include: 1] d (days); 2] h (hours); 3] min (minutes); 4] s (seconds); 5] ms (milliseconds)"
]
]
attribute unit {
## (days)
"d"
|
## (hours)
"h"
|
## (minutes)
"min"
|
## (seconds)
"s"
|
## (milliseconds)
"ms"
| xsd:token { pattern = "[^\p{C}\p{Z}]+" }
}?,
## specifies a time interval either as a positive integral value or using one of a set of predefined codes.
attribute interval {
xsd:float
| (
##
"regular"
|
##
"irregular"
|
##
"unknown")
}?,
empty
}
join =
## (join) identifies a possibly fragmented segment of text, by pointing at the possibly discontiguous elements which compose it. [16.7. Aggregation]
element join {
((model.descLike | model.certLike)*)
>> sch:pattern [
id = "tei_all-join-joinTargets3-constraint-assert-28"
"\x{a}" ~
" "
sch:rule [
context = "tei:join"
"\x{a}" ~
" "
sch:assert [
test = "contains(@target,' ')"
"\x{a}" ~
"You must supply at least two values for @target on "
sch:name [ ]
"\x{a}" ~
" "
]
"\x{a}" ~
" "
]
"\x{a}" ~
" "
],
att.global.attributes,
att.pointing.attributes,
att.typed.attributes,
## specifies the name of an element which this aggregation may be understood to represent.
attribute result { xsd:Name }?,
## indicates whether the targets to be joined include the entire element indicated (the entire subtree including its root), or just the children of the target (the branches of the subtree).
[ a:defaultValue = "root" ]
attribute scope {
[
a:documentation [
"the rooted subtrees indicated by the "
ns1:code [ "@target" ]
" attribute are joined, each subtree become a child of the virtual element created by the join"
]
]
"root"
| [
a:documentation [
"the children of the subtrees indicated by the "
ns1:code [ "@target" ]
" attribute become the children of the virtual element (i.e. the roots of the subtrees are discarded)"
]
]
"branches"
}?,
empty
}
joinGrp =
[
a:documentation [
"(join group) groups a collection of "
ns1:code [ "<join>" ]
" elements and possibly pointers. [16.7. Aggregation]"
]
]
element joinGrp {
((equiv | gloss | model.descLike)*, (join | ptr)+),
att.global.attributes,
att.pointing.group.attributes,
[
a:documentation [
"supplies the default value for the "
ns1:code [ "@result" ]
" on each "
ns1:code [ "<join>" ]
" included within the group."
]
]
attribute result { xsd:Name }?,
empty
}
alt =
## (alternation) identifies an alternation or a set of choices among elements or passages. [16.8. Alternation]
element alt {
empty,
att.global.attributes,
att.pointing.attribute.targetLang,
att.pointing.attribute.evaluate,
att.typed.attributes,
## specifies the destination of the reference by supplying one or more URI References
attribute target {
list {
xsd:anyURI { pattern = "\S+" },
xsd:anyURI { pattern = "\S+" },
xsd:anyURI { pattern = "\S+" }*
}
}?,
## states whether the alternations gathered in this collection are exclusive or inclusive.
attribute mode {
## (exclusive) indicates that the alternation is exclusive, i.e. that at most one of the alternatives occurs.
"excl"
|
## (inclusive) indicates that the alternation is not exclusive, i.e. that one or more of the alternatives occur.
"incl"
}?,
[
a:documentation [
"If "
ns1:code [ "@mode" ]
" is excl, each weight states the probability that the corresponding alternative occurs. If "
ns1:code [ "@mode" ]
" is incl each weight states the probability that the corresponding alternative occurs given that at least one of the other alternatives occurs."
]
]
attribute weights {
list { xsd:double, xsd:double, xsd:double* }
}?,
empty
}
altGrp =
[
a:documentation [
"(alternation group) groups a collection of "
ns1:code [ "<alt>" ]
" elements and possibly pointers. [16.8. Alternation]"
]
]
element altGrp {
(model.descLike*, (alt | ptr)*),
att.global.attributes,
att.pointing.group.attributes,
## states whether the alternations gathered in this collection are exclusive or inclusive.
[ a:defaultValue = "excl" ]
attribute mode {
## (exclusive) indicates that the alternation is exclusive, i.e. that at most one of the alternatives occurs.
"excl"
|
## (inclusive) indicates that the alternation is not exclusive, i.e. that one or more of the alternatives occur.
"incl"
}?,
empty
}
standOff =
## Functions as a container element for linked data, contextual information, and stand-off annotations embedded in a TEI document. [16.10. The standOff Container]
element standOff {
(model.standOffPart+)
>> sch:pattern [
id =
"tei_all-standOff-nested_standOff_should_be_typed-constraint-assert-29"
"\x{a}" ~
" "
sch:rule [
context = "tei:standOff"
"\x{a}" ~
" "
sch:assert [
test = "@type or not(ancestor::tei:standOff)"
"This\x{a}" ~
" "
sch:name [ ]
" element must have a @type attribute, since it is\x{a}" ~
" nested inside a "
sch:name [ ]
"\x{a}" ~
" "
]
"\x{a}" ~
" "
]
"\x{a}" ~
" "
],
att.global.attributes,
att.typed.attributes,
att.declaring.attributes,
empty
}
listAnnotation =
[
a:documentation [
"contains a list of annotations, typically encoded as "
ns1:code [ "<annotation>" ]
", "
ns1:code [ "<annotationBlock>" ]
", or "
ns1:code [ "<note>" ]
", possibly organized with nested "
ns1:code [ "<listAnnotation>" ]
" elements. [16.10. The standOff Container]"
]
]
element listAnnotation {
(model.headLike*,
model.labelLike*,
(model.annotationLike | listAnnotation)+),
att.global.attributes,
att.typed.attributes,
att.notated.attributes,
att.declaring.attributes,
empty
}
annotation =
[
a:documentation [
"represents an annotation following the "
ns1:a [
href = "#WADM"
"Web\x{a}" ~
" Annotation Data Model"
]
". [16.10. The standOff Container]"
]
]
element annotation {
(respStmt*, revisionDesc*, licence*, model.annotationPart.body*),
att.global.attribute.n,
att.global.attribute.xmllang,
att.global.attribute.xmlbase,
att.global.attribute.xmlspace,
att.global.rendition.attribute.rend,
att.global.rendition.attribute.style,
att.global.rendition.attribute.rendition,
att.global.linking.attribute.corresp,
att.global.linking.attribute.synch,
att.global.linking.attribute.sameAs,
att.global.linking.attribute.copyOf,
att.global.linking.attribute.next,
att.global.linking.attribute.prev,
att.global.linking.attribute.exclude,
att.global.linking.attribute.select,
att.global.analytic.attribute.ana,
att.global.facs.attribute.facs,
att.global.change.attribute.change,
att.global.responsibility.attribute.cert,
att.global.responsibility.attribute.resp,
att.global.source.attribute.source,
att.pointing.attribute.targetLang,
att.pointing.attribute.evaluate,
## (identifier) provides a unique identifier for the element bearing the attribute.
attribute xml:id { xsd:ID },
## specifies the destination of the reference by supplying one or more URI References
attribute target {
list {
xsd:anyURI { pattern = "\S+" }+
}
},
##
attribute motivation {
list {
(
## intent is to assess the target resource in some way, rather than simply make a comment about it
"assessing"
|
## intent is to create a bookmark to the target or part thereof
"bookmarking"
|
## intent is to classify the target in some way
"classifying"
|
## intent is to comment about the target
"commenting"
|
## intent is to describe the target, rather than (for example) comment on it
"describing"
|
## intent is to request an edit or a change to the target resource
"editing"
|
## intent is to highlight the target resource or a segment thereof
"highlighting"
|
## intent is to assign an identity to the target
"identifying"
|
## intent is to link to a resource related to the target
"linking"
|
## intent is to assign some value or quality to the target
"moderating"
|
## intent is to ask a question about the target
"questioning"
|
## intent is to reply to a previous statement, either an annotation or another resource
"replying"
|
## intent is to associate a tag with the target
"tagging")+
}
}?,
empty
}
model.fsdDeclPart = fsDecl | fsdLink | fLib | fvLib
fsdDecl =
## (feature system declaration) provides a feature system declaration comprising one or more feature structure declarations or feature structure declaration links. [18.11. Feature System Declaration]
element fsdDecl { model.fsdDeclPart+, att.global.attributes, empty }
fsDecl =
## (feature structure declaration) declares one type of feature structure. [18.11. Feature System Declaration]
element fsDecl {
(fsDescr?, fDecl+, fsConstraints?),
att.global.attributes,
att.datcat.attributes,
## gives a name for the type of feature structure being declared.
attribute type {
xsd:token { pattern = "[^\p{C}\p{Z}]+" }
},
[
a:documentation [
"gives the name of one or more typed feature structures from which this type inherits feature specifications and constraints; if this type includes a feature specification with the same name as that of any of those specified by this attribute, or if more than one specification of the same name is inherited, then the set of possible values is defined by unification. Similarly, the set of constraints applicable is derived by combining those specified explicitly within this element with those implied by the "
ns1:code [ "@baseTypes" ]
" attribute. When no "
ns1:code [ "@baseTypes" ]
" attribute is specified, no feature specification or constraint is inherited."
]
]
attribute baseTypes {
list { xsd:Name+ }
}?,
empty
}
fsDescr =
## (feature system description (in FSD)) describes in prose what is represented by the type of feature structure declared in the enclosing fsDecl. [18.11. Feature System Declaration]
element fsDescr { macro.limitedContent, att.global.attributes, empty }
fsdLink =
## (feature structure declaration link) associates the name of a typed feature structure with a feature structure declaration for it. [18.11. Feature System Declaration]
element fsdLink {
empty,
att.global.attributes,
[
a:documentation [
"identifies the type of feature structure to be documented; this will be the value of the "
ns1:code [ "@type" ]
" attribute on at least one feature structure."
]
]
attribute type {
xsd:token { pattern = "[^\p{C}\p{Z}]+" }
},
[
a:documentation [
"supplies a pointer to a feature structure declaration ("
ns1:code [ "<fsDecl>" ]
") element within the current document or elsewhere."
]
]
attribute target {
xsd:anyURI { pattern = "\S+" }
},
empty
}
fDecl =
## (feature declaration) declares a single feature, specifying its name, organization, range of allowed values, and optionally its default value. [18.11. Feature System Declaration]
element fDecl {
(fDescr?, vRange, vDefault?),
att.datcat.attributes,
att.global.attributes,
[
a:documentation [
"a single word which follows the rules defining a legal XML name (see ), indicating the name of the feature being declared; matches the "
ns1:code [ "@name" ]
" attribute of "
ns1:code [ "<f>" ]
" elements in the text."
]
]
attribute name { xsd:Name },
## indicates whether or not the value of this feature may be present.
[ a:defaultValue = "true" ] attribute optional { xsd:boolean }?,
empty
}
fDescr =
## (feature description (in FSD)) describes in prose what is represented by the feature being declared and its values. [18.11. Feature System Declaration]
element fDescr { macro.limitedContent, att.global.attributes, empty }
vRange =
[
a:documentation [
"(value range) defines the range of allowed values for a feature, in the form of an "
ns1:code [ "<fs>" ]
", "
ns1:code [ "<vAlt>" ]
", or primitive value; for the value of an "
ns1:code [ "<f>" ]
" to be valid, it must be subsumed by the specified range; if the "
ns1:code [ "<f>" ]
" contains multiple values (as sanctioned by the "
ns1:code [ "@org" ]
" attribute), then each value must be subsumed by the "
ns1:code [ "<vRange>" ]
". [18.11. Feature System Declaration]"
]
]
element vRange { model.featureVal, att.global.attributes, empty }
vDefault =
[
a:documentation [
"(value default) declares the default value to be supplied when a feature structure does not contain an instance of "
ns1:code [ "<f>" ]
" for this name; if unconditional, it is specified as one (or, depending on the value of the "
ns1:code [ "@org" ]
" attribute of the enclosing "
ns1:code [ "<fDecl>" ]
") more "
ns1:code [ "<fs>" ]
" elements or primitive values; if conditional, it is specified as one or more "
ns1:code [ "<if>" ]
" elements; if no default is specified, or no condition matches, the value none is assumed. [18.11. Feature System Declaration]"
]
]
element vDefault {
(model.featureVal+ | if+), att.global.attributes, empty
}
if =
## defines a conditional default value for a feature; the condition is specified as a feature structure, and is met if it subsumes the feature structure in the text for which a default value is sought. [18.11. Feature System Declaration]
element if {
((fs | f), then, model.featureVal),
att.global.attributes,
empty
}
then =
[
a:documentation [
"separates the condition from the default in an "
ns1:code [ "<if>" ]
", or the antecedent and the consequent in a "
ns1:code [ "<cond>" ]
" element. [18.11. Feature System Declaration]"
]
]
element then { empty, att.global.attributes, empty }
fsConstraints =
## (feature-structure constraints) specifies constraints on the content of valid feature structures. [18.11. Feature System Declaration]
element fsConstraints {
(cond | bicond)*, att.global.attributes, empty
}
cond =
## (conditional feature-structure constraint) defines a conditional feature-structure constraint; the consequent and the antecedent are specified as feature structures or feature-structure collections; the constraint is satisfied if both the antecedent and the consequent subsume a given feature structure, or if the antecedent does not. [18.11. Feature System Declaration]
element cond {
((fs | f), then, (fs | f)),
att.global.attributes,
empty
}
bicond =
## (bi-conditional feature-structure constraint) defines a biconditional feature-structure constraint; both consequent and antecedent are specified as feature structures or groups of feature structures; the constraint is satisfied if both subsume a given feature structure, or if both do not. [18.11. Feature System Declaration]
element bicond {
((fs | f), iff, (fs | f)),
att.global.attributes,
empty
}
iff =
[
a:documentation [
"(if and only if) separates the condition from the consequence in a "
ns1:code [ "<bicond>" ]
" element. [18.11. Feature System Declaration]"
]
]
element iff { empty, att.global.attributes, empty }
fs =
## (feature structure) represents a feature structure, that is, a collection of feature-value pairs organized as a structural unit. [18.2. Elementary Feature Structures and the Binary
## Feature Value]
element fs {
f*,
att.global.attributes,
att.datcat.attributes,
## specifies the type of the feature structure.
attribute type {
xsd:token { pattern = "[^\p{C}\p{Z}]+" }
}?,
## (features) references the feature-value specifications making up this feature structure.
attribute feats {
list {
xsd:anyURI { pattern = "\S+" }+
}
}?,
empty
}
f =
## (feature) represents a feature value specification, that is, the association of a name with a value of any of several different types. [18.2. Elementary Feature Structures and the Binary
## Feature Value]
element f {
(text | model.featureVal),
att.global.attributes,
att.datcat.attributes,
## a single word which follows the rules defining a legal XML name (see ), providing a name for the feature.
attribute name { xsd:Name },
## (feature value) references any element which can be used to represent the value of a feature.
attribute fVal {
xsd:anyURI { pattern = "\S+" }
}?,
empty
}
binary =
## (binary value) represents the value part of a feature-value specification which can contain either of exactly two possible values. [18.2. Elementary Feature Structures and the Binary
## Feature Value]
element binary {
empty,
att.global.attributes,
att.datcat.attributes,
## supplies a binary value.
attribute value { xsd:boolean },
empty
}
symbol =
## (symbolic value) represents the value part of a feature-value specification which contains one of a finite list of symbols. [18.3. Other Atomic Feature Values]
element symbol {
empty,
att.global.attributes,
att.datcat.attributes,
## supplies a symbolic value for the feature, one of a finite list that may be specified in a feature declaration.
attribute value {
xsd:token { pattern = "[^\p{C}\p{Z}]+" }
},
empty
}
numeric =
## (numeric value) represents the value part of a feature-value specification which contains a numeric value or range. [18.3. Other Atomic Feature Values]
element numeric {
empty,
att.global.attributes,
att.datcat.attributes,
[
a:documentation [
"supplies a lower bound for the numeric value represented, and also (if "
ns1:code [ "@max" ]
" is not supplied) its upper bound."
]
]
attribute value {
xsd:double
| xsd:token { pattern = "(\-?[\d]+/\-?[\d]+)" }
| xsd:decimal
},
## supplies an upper bound for the numeric value represented.
attribute max {
xsd:double
| xsd:token { pattern = "(\-?[\d]+/\-?[\d]+)" }
| xsd:decimal
}?,
## specifies whether the value represented should be truncated to give an integer value.
attribute trunc { xsd:boolean }?,
empty
}
\string =
## (string value) represents the value part of a feature-value specification which contains a string. [18.3. Other Atomic Feature Values]
element string {
macro.xtext, att.global.attributes, att.datcat.attributes, empty
}
vLabel =
## (value label) represents the value part of a feature-value specification which appears at more than one point in a feature structure. [18.6. Re-entrant Feature Structures]
element vLabel {
model.featureVal?,
att.global.attributes,
## supplies a name identifying the sharing point.
attribute name {
xsd:token { pattern = "[^\p{C}\p{Z}]+" }
},
empty
}
vColl =
## (collection of values) represents the value part of a feature-value specification which contains multiple values organized as a set, bag, or list. [18.7. Collections as Complex Feature Values]
element vColl {
(fs | model.featureVal.single | vColl)*,
att.global.attributes,
## (organization) indicates organization of given value or values as set, bag or list.
attribute org {
## indicates that the given values are organized as a set.
"set"
|
## indicates that the given values are organized as a bag (multiset).
"bag"
|
## indicates that the given values are organized as a list.
"list"
}?,
empty
}
\default =
## (default feature value) represents the value part of a feature-value specification which contains a defaulted value. [18.9. Default Values]
element default { empty, att.global.attributes, empty }
vAlt =
## (value alternation) represents the value part of a feature-value specification which contains a set of values, only one of which can be valid. [18.8.1. Alternation]
element vAlt {
(model.featureVal, model.featureVal+), att.global.attributes, empty
}
vNot =
## (value negation) represents a feature value which is the negation of its content. [18.8.2. Negation]
element vNot { model.featureVal, att.global.attributes, empty }
vMerge =
[
a:documentation [
"(merged collection of values) represents a feature value which is the result of merging together the feature values contained by its children, using the organization specified by the "
ns1:code [ "@org" ]
" attribute. [18.8.3. Collection of Values]"
]
]
element vMerge {
model.featureVal+,
att.global.attributes,
## indicates the organization of the resulting merged values as set, bag or list.
attribute org {
## indicates that the resulting values are organized as a set.
"set"
|
## indicates that the resulting values are organized as a bag (multiset).
"bag"
|
## indicates that the resulting values are organized as a list.
"list"
}?,
empty
}
fLib =
[
a:documentation [
"(feature library) assembles a library of "
ns1:code [ "<f>" ]
" (feature) elements. [18.4. Feature Libraries and Feature-Value Libraries]"
]
]
element fLib { f+, att.global.attributes, empty }
fvLib =
## (feature-value library) assembles a library of reusable feature value elements (including complete feature structures). [18.4. Feature Libraries and Feature-Value Libraries]
element fvLib { model.featureVal*, att.global.attributes, empty }
graph =
## (graph) encodes a graph, which is a collection of nodes, and arcs which connect the nodes. [19.1. Graphs and Digraphs]
element graph {
((label, model.global*)?,
(((node, model.global*)+, (arc, model.global*)*)
| ((arc, model.global*)+, (node, model.global*)+))),
att.global.attributes,
att.typed.attribute.subtype,
## describes the type of graph.
## Suggested values include: 1] undirected; 2] directed; 3] transitionNetwork; 4] transducer
attribute type {
## undirected graph
"undirected"
|
## directed graph
"directed"
|
## a directed graph with distinguished initial and final nodes
"transitionNetwork"
|
## a transition network with up to two labels on each arc
"transducer"
| xsd:token { pattern = "[^\p{C}\p{Z}]+" }
}?,
## states the order of the graph, i.e., the number of its nodes.
attribute order { xsd:nonNegativeInteger }?,
## states the size of the graph, i.e., the number of its arcs.
attribute size { xsd:nonNegativeInteger }?,
empty
}
node =
## (node) encodes a node, a possibly labeled point in a graph. [19.1. Graphs and Digraphs]
element node {
(label, label?)?,
att.global.attributes,
att.typed.attribute.subtype,
## provides a type for a node.
## Suggested values include: 1] initial; 2] final
attribute type {
## initial node in a transition network
"initial"
|
## final node in a transition network
"final"
| xsd:token { pattern = "[^\p{C}\p{Z}]+" }
}?,
## provides the value of a node, which is a feature structure or other analytic element.
attribute value {
xsd:anyURI { pattern = "\S+" }
}?,
## (adjacent to) gives the identifiers of the nodes which are adjacent to the current node.
attribute adjTo {
list {
xsd:anyURI { pattern = "\S+" }+
}
}?,
## (adjacent from) gives the identifiers of the nodes which are adjacent from the current node.
attribute adjFrom {
list {
xsd:anyURI { pattern = "\S+" }+
}
}?,
## (adjacent) gives the identifiers of the nodes which are both adjacent to and adjacent from the current node.
attribute adj {
list {
xsd:anyURI { pattern = "\S+" }+
}
}?,
## gives the in degree of the node, the number of nodes which are adjacent from the given node.
attribute inDegree { xsd:nonNegativeInteger }?,
## gives the out degree of the node, the number of nodes which are adjacent to the given node.
attribute outDegree { xsd:nonNegativeInteger }?,
## gives the degree of the node, the number of arcs with which the node is incident.
attribute degree { xsd:nonNegativeInteger }?,
empty
}
arc =
## (arc) encodes an arc, the connection from one node to another in a graph. [19.1. Graphs and Digraphs]
element arc {
(label, label?)?,
att.global.attributes,
## gives the identifier of the node which is adjacent from this arc.
attribute from {
xsd:anyURI { pattern = "\S+" }
},
## gives the identifier of the node which is adjacent to this arc.
attribute to {
xsd:anyURI { pattern = "\S+" }
},
empty
}
tree =
## (tree) encodes a tree, which is made up of a root, internal nodes, leaves, and arcs from root to leaves. [19.2. Trees]
element tree {
(label?,
((leaf | iNode)*, root, (leaf | iNode)*)),
att.global.attributes,
## gives the maximum number of children of the root and internal nodes of the tree.
attribute arity { xsd:nonNegativeInteger }?,
## (ordered) indicates whether or not the tree is ordered, or if it is partially ordered.
attribute ord {
## indicates that all of the branching nodes of the tree are ordered.
"true"
|
## indicates that some of the branching nodes of the tree are ordered and some are unordered.
"partial"
|
## indicates that all of the branching nodes of the tree are unordered.
"false"
},
## gives the order of the tree, i.e., the number of its nodes.
attribute order { xsd:nonNegativeInteger }?,
empty
}
root =
## (root node) represents the root node of a tree. [19.2. Trees]
element root {
label?,
att.global.attributes,
## identifies the root node of the network by pointing to a feature structure or other analytic element.
attribute value {
xsd:anyURI { pattern = "\S+" }
}?,
## identifies the elements which are the children of the root node.
attribute children {
list {
xsd:anyURI { pattern = "\S+" }+
}
},
## (ordered) indicates whether or not the root is ordered.
attribute ord {
xsd:boolean
| (
##
"unknown"
|
##
"inapplicable")
}?,
## gives the out degree of the root, the number of its children.
attribute outDegree { xsd:nonNegativeInteger }?,
empty
}
iNode =
## (intermediate (or internal) node) represents an intermediate (or internal) node of a tree. [19.2. Trees]
element iNode {
label?,
att.global.attributes,
## indicates an intermediate node, which is a feature structure or other analytic element.
attribute value {
xsd:anyURI { pattern = "\S+" }
}?,
## provides a list of identifiers of the elements which are the children of the intermediate node.
attribute children {
list {
xsd:anyURI { pattern = "\S+" }+
}
},
## provides the identifier of the element which is the parent of this node.
attribute parent {
xsd:anyURI { pattern = "\S+" }
}?,
## (ordered) indicates whether or not the internal node is ordered.
attribute ord {
xsd:boolean
| (
##
"unknown"
|
##
"inapplicable")
}?,
## provides the identifier of an element which this node follows.
attribute follow {
xsd:anyURI { pattern = "\S+" }
}?,
## gives the out degree of an intermediate node, the number of its children.
attribute outDegree { xsd:nonNegativeInteger }?,
empty
}
leaf =
## (leaf) encodes the leaves (terminal nodes) of a tree. [19.2. Trees]
element leaf {
label?,
att.global.attributes,
## provides a pointer to a feature structure or other analytic element.
attribute value {
xsd:anyURI { pattern = "\S+" }
}?,
## provides the identifier of parent of a leaf.
attribute parent {
xsd:anyURI { pattern = "\S+" }
}?,
## provides an identifier of an element which this leaf follows.
attribute follow {
xsd:anyURI { pattern = "\S+" }
}?,
empty
}
eTree =
[
a:documentation [
"(embedding tree) provides an alternative to the "
ns1:code [ "<tree>" ]
" element for representing ordered rooted tree structures. [19.3. Another Tree Notation]"
]
]
element eTree {
(label?, (eTree | triangle | eLeaf | model.ptrLike)*),
att.global.attributes,
att.typed.attributes,
## provides the value of an embedding tree, which is a feature structure or other analytic element.
attribute value {
xsd:anyURI { pattern = "\S+" }
}?,
empty
}
triangle =
[
a:documentation [
"(underspecified embedding tree, so called because of its\x{a}" ~
" characteristic shape when drawn) provides for an underspecified "
ns1:code [ "<eTree>" ]
", that is, an "
ns1:code [ "<eTree>" ]
" with information left out. [19.3. Another Tree Notation]"
]
]
element triangle {
(label?, (eTree | triangle | eLeaf)*),
att.global.attributes,
## supplies a value for the triangle, in the form of the identifier of a feature structure or other analytic element.
attribute value {
xsd:anyURI { pattern = "\S+" }
}?,
empty
}
eLeaf =
[
a:documentation [
"(leaf or terminal node of an embedding tree) provides explicitly for a leaf of an embedding tree, which may also be encoded with the "
ns1:code [ "<eTree>" ]
" element. [19.3. Another Tree Notation]"
]
]
element eLeaf {
(label?, model.ptrLike?),
att.global.attributes,
att.typed.attributes,
## indicates the value of an embedding leaf, which is a feature structure or other analytic element.
attribute value {
xsd:anyURI { pattern = "\S+" }
}?,
empty
}
forest =
## (forest) provides for groups of rooted trees. [19.3. Another Tree Notation]
element forest {
(tree | eTree | triangle)+,
att.global.attributes,
att.typed.attributes,
empty
}
listForest =
## provides for lists of forests. [19.3. Another Tree Notation]
element listForest {
(desc*, forest+),
att.global.attributes,
att.typed.attribute.subtype,
## identifies the type of the forest group.
attribute type {
xsd:token { pattern = "[^\p{C}\p{Z}]+" }
}?,
empty
}
precision =
## indicates the numerical accuracy or precision associated with some aspect of the text markup. [21.2. Indications of Precision]
element precision {
(model.descLike | model.certLike)*,
att.global.attributes,
att.scoping.attributes,
att.ranging.attributes,
att.datable.attributes,
[
a:documentation [
"characterizes the precision of the element or attribute pointed to by the "
ns1:code [ "<precision>" ]
" element."
]
]
attribute precision {
##
"high"
|
##
"medium"
|
##
"low"
|
##
"unknown"
}?,
## supplies a standard deviation associated with the value in question
attribute stdDeviation {
xsd:double
| xsd:token { pattern = "(\-?[\d]+/\-?[\d]+)" }
| xsd:decimal
}?,
empty
}
certainty =
## indicates the degree of certainty associated with some aspect of the text markup. [21.1.2. Structured Indications of Uncertainty]
element certainty {
(model.descLike | model.certLike)*,
att.global.attribute.xmlid,
att.global.attribute.n,
att.global.attribute.xmllang,
att.global.attribute.xmlbase,
att.global.attribute.xmlspace,
att.global.rendition.attribute.rend,
att.global.rendition.attribute.style,
att.global.rendition.attribute.rendition,
att.global.linking.attribute.corresp,
att.global.linking.attribute.synch,
att.global.linking.attribute.sameAs,
att.global.linking.attribute.copyOf,
att.global.linking.attribute.next,
att.global.linking.attribute.prev,
att.global.linking.attribute.exclude,
att.global.linking.attribute.select,
att.global.analytic.attribute.ana,
att.global.facs.attribute.facs,
att.global.change.attribute.change,
att.global.responsibility.attribute.resp,
att.global.source.attribute.source,
att.scoping.attributes,
att.typed.attribute.subtype,
[
a:documentation [
"(certainty) signifies the degree of certainty associated with the object pointed to by the "
ns1:code [ "<certainty>" ]
" element."
]
]
attribute cert {
##
"high"
|
##
"medium"
|
##
"low"
|
##
"unknown"
}?,
## characterizes the element in some sense, using any convenient classification scheme or typology; sample categorization of annotations of uncertainty might use following values:
## Sample values include: 1] ignorance; 2] incompleteness; 3] credibility; 4] imprecision
attribute type {
xsd:token { pattern = "[^\p{C}\p{Z}]+" }
}?,
## indicates more exactly the aspect concerning which certainty is being expressed: specifically, whether the markup is correctly located, whether the correct element or attribute name has been used, or whether the content of the element or attribute is correct, etc.
attribute locus {
## uncertainty concerns whether the name of the element or attribute used is correctly applied.
"name"
|
## uncertainty concerns whether the start of the element is correctly identified.
"start"
|
## uncertainty concerns whether the end of the element is correctly identified.
"end"
|
## uncertainty concerns both the start and the end of the element.
"location"
|
## uncertainty concerns the content (for an element) or the value (for an attribute)
"value"
},
[
a:documentation [
"provides an alternative value for the aspect of the markup in question—an alternative generic identifier, transcription, or attribute value, or the identifier of an "
ns1:code [ "<anchor>" ]
" element (to indicate an alternative starting or ending location). If an "
ns1:code [ "@assertedValue" ]
" is given, the confidence level specified by "
ns1:code [ "@degree" ]
" applies to the alternative markup specified by "
ns1:code [ "@assertedValue" ]
"; if none is given, it applies to the markup in the text."
]
]
attribute assertedValue {
xsd:token { pattern = "[^\p{C}\p{Z}]+" }
}?,
## indicates one or more element(s) characterizing the conditions which are assumed in the assignment of a degree of confidence.
attribute given {
list {
xsd:anyURI { pattern = "\S+" }+
}
}?,
[
a:documentation [
"indicates the degree of confidence assigned to the aspect of the markup named by the "
ns1:code [ "@locus" ]
" attribute."
]
]
attribute degree { xsd:double }?,
empty
}
respons =
## (responsibility) identifies the individual(s) responsible for some aspect of the content or markup of particular element(s). [21.3. Attribution of Responsibility]
element respons {
(model.descLike | model.certLike)*,
att.global.attributes,
att.scoping.attributes,
## indicates the specific aspect of the encoding (markup or content) for which responsibility is being assigned.
attribute locus {
list {
(
## responsibility is being assigned concerning the name of the element or attribute used.
"name"
|
## responsibility is being assigned concerning the start of the element concerned.
"start"
|
## responsibility is being assigned concerning the end of the element concerned.
"end"
|
## responsibility is being assigned concerning the location of the element concerned.
"location"
|
## responsibility is being assigned concerning the content (for an element) or the value (for an attribute)
"value")+
}
},
empty
}
att.translatable.attributes = att.translatable.attribute.versionDate
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}).*" }
}?
att.predicate.attributes = att.predicate.attribute.predicate
att.predicate.attribute.predicate =
## the condition under which the element bearing this attribute applies, given as an XPath predicate expression.
attribute predicate { text }?
att.repeatable.attributes =
att.repeatable.attribute.minOccurs, att.repeatable.attribute.maxOccurs
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 }?
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_all-att.repeatable-MINandMAXoccurs-constraint-rule-18"
"\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}" ~
" "
]
model.contentPart =
classRef
| elementRef
| macroRef
| sequence
| alternate
| dataRef
| textNode
| anyElement
| \empty
att.combinable.attributes =
att.deprecated.attributes, att.combinable.attribute.mode
att.combinable.attribute.mode =
## specifies the effect of this declaration on its parent object.
[ a:defaultValue = "add" ]
attribute mode {
## this declaration is part of the current definitions.
"add"
|
## the object with the same identifier (and namespace in the case of an element or attribute) as the current one is no longer part of the current definitions
"delete"
|
## this declaration changes the object of the same identifier (and namespace in the case of an element or attribute) in the current definition
"change"
|
## this declaration replaces the object with the same identifier (and namespace in the case of an element or attribute) in the current definition.
"replace"
}?
att.identified.attributes =
att.combinable.attributes,
att.identified.attribute.ident,
att.identified.attribute.predeclare,
att.identified.attribute.module
att.identified.attribute.ident =
## supplies the identifier by which this element may be referenced.
attribute ident { xsd:Name }
att.identified.attribute.predeclare =
## says whether this object should be predeclared in the tei infrastructure module.
[ a:defaultValue = "false" ] attribute predeclare { xsd:boolean }?
att.identified.attribute.module =
## supplies a name for the module in which this object is to be declared.
attribute module { xsd:NCName }?
sch:pattern [
id = "tei_all-att.identified-spec-in-module-constraint-rule-20"
"\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}" ~
" "
]
att.deprecated.attributes = att.deprecated.attribute.validUntil
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_all-att.deprecated-validUntil-deprecation-two-month-warning-constraint-rule-21"
"\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_all-att.deprecated-validUntil-deprecation-should-be-explained-constraint-rule-22"
"\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}" ~
" "
]
att.namespaceable.attributes = att.namespaceable.attribute.ns
att.namespaceable.attribute.ns =
## (namespace) specifies the namespace to which the element(s) being specified belongs.
[ a:defaultValue = "http://www.tei-c.org/ns/1.0" ]
attribute ns {
xsd:anyURI { pattern = "\S*" }
}?
att =
## (attribute) contains the name of an attribute appearing within running text. [22. Documentation Elements]
element att {
xsd:Name,
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
}
code =
## contains literal code from some formal language such as a programming language. [22.1.1. Phrase Level Terms]
element code {
text,
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
}
eg =
## (example) contains any kind of illustrative example. [22.5. Element Specifications 22.5.3. Attribute List Specification]
element eg { macro.phraseSeq, att.global.attributes, empty }
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 | anyElement-egXML)*,
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
}
gi =
## (element name) contains the name (generic identifier) of an element. [22. Documentation Elements 22.5. Element Specifications]
element gi {
xsd:Name,
att.global.attributes,
## supplies the name of the scheme in which this name is defined.
## Sample values include: 1] TEI; 2] DBK (docbook); 3] XX (unknown); 4] Schematron; 5] HTML
[ a:defaultValue = "TEI" ]
attribute scheme {
xsd:token { pattern = "[^\p{C}\p{Z}]+" }
}?,
empty
}
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 ident {
text, att.global.attributes, att.typed.attributes, empty
}
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 tag {
text,
att.global.attributes,
att.typed.attribute.subtype,
## indicates the type of XML tag intended
attribute type {
## a start-tag, with delimiters < and > is intended
"start"
|
## an end-tag, with delimiters </ and > is intended
"end"
|
## an empty tag, with delimiters < and /> is intended
"empty"
|
## a pi (processing instruction), with delimiters <? and ?> is intended
"pi"
|
## a comment, with delimiters <!-- and --> is intended
"comment"
|
## a marked-section, with delimiters <[CDATA[ and ]]> is intended
"ms"
}?,
## 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
}
val =
## (value) contains a single attribute value. [22. Documentation Elements 22.5.3. Attribute List Specification]
element val { text, att.global.attributes, empty }
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 specList { specDesc+, att.global.attributes, empty }
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 specDesc {
empty,
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
}
classRef =
## points to the specification for an attribute or model class which is to be included in a schema [22.6. Class Specifications]
element classRef {
empty,
att.global.attributes,
att.repeatable.attributes,
## the identifier used for the required class within the source indicated.
attribute key { xsd:NCName },
## 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"
}?,
(
## supplies a list of class members which are to be included in the schema being defined.
attribute include {
list { xsd:NCName* }
}?
|
## supplies a list of class members which are to be excluded from the schema being defined.
attribute except {
list { xsd:NCName* }
}?),
empty
}
elementRef =
## points to the specification for some element which is to be included in a schema [22.2. Modules and Schemas]
element elementRef {
empty,
att.global.attributes,
att.repeatable.attributes,
## the identifier used for the required element within the source indicated.
attribute key { xsd:NCName },
empty
}
macroRef =
## points to the specification for some pattern which is to be included in a schema [22.7. Macro Specifications]
element macroRef {
empty,
att.global.attributes,
## the identifier used for the required pattern within the source indicated.
attribute key { xsd:NCName },
empty
}
moduleRef =
## (module reference) references a module which is to be incorporated into a schema. [22.2. Modules and Schemas]
element moduleRef {
(content?)
>> sch:pattern [
id = "tei_all-moduleRef-modref-constraint-rule-23"
"\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}" ~
" "
],
att.global.attributes,
(
## specifies a default prefix which will be prepended to all patterns from the imported module
attribute prefix { xsd:NCName? }?)
>> sch:pattern [
id =
"tei_all-moduleRef-prefix-not-same-prefix-constraint-rule-24"
"\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}" ~
" "
]
>> sch:pattern [
id =
"tei_all-moduleRef-prefix-not-except-and-include-constraint-rule-25"
"\x{a}" ~
" "
sch:rule [
context = "tei:moduleRef"
"\x{a}" ~
" "
sch:report [
test = "@except and @include"
"It is an error to supply both the @include and @except attributes"
]
"\x{a}" ~
" "
]
"\x{a}" ~
" "
],
(
## supplies a list of the elements which are to be copied from the specified module into the schema being defined.
attribute include {
list { xsd:NCName* }
}?
|
## supplies a list of the elements which are not to be copied from the specified module into the schema being defined.
attribute except {
list { xsd:NCName* }
}?),
(
## the name of a TEI module
attribute key { xsd:NCName }?
|
## (uniform resource locator) refers to a non-TEI module of RELAX NG code by external location
attribute url {
xsd:anyURI { pattern = "\S+" }
}?),
empty
}
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 moduleSpec {
((model.identEquiv | idno | model.descLike)*,
exemplum*,
remarks?,
listRef*),
att.global.attributes,
att.identified.attributes,
att.typed.attributes,
empty
}
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 schemaSpec {
((model.identEquiv | model.descLike)*,
(model.oddRef | model.oddDecl | listRef)*),
att.global.attributes,
att.identified.attributes,
att.namespaceable.attributes,
att.docStatus.attributes,
## specifies entry points to the schema, i.e. which patterns may be used as the root of documents conforming to it.
[ a:defaultValue = "TEI" ]
attribute start {
list { xsd:Name+ }
}?,
## 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 = "[^/\s]+:\S*" }
| xsd:Name { pattern = ".+:.+" })+
}
}?,
empty
}
specGrp =
## (specification group) contains any convenient grouping of specifications for use within the current module. [22.2. Modules and Schemas]
element specGrp {
(model.oddDecl | model.oddRef | model.divPart | listRef)*,
att.global.attributes,
empty
}
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 specGrpRef {
empty,
att.global.attributes,
## points at the specification group which logically belongs here.
attribute target {
xsd:anyURI { pattern = "\S+" }
},
empty
}
elementSpec =
## (element specification) documents the structure, content, and purpose of a single element type. [22.5. Element Specifications 22. Documentation Elements]
element elementSpec {
((model.identSynonyms | model.descLike)*,
classes?,
content?,
valList?,
constraintSpec*,
attList?,
(model | modelGrp | modelSequence)*,
exemplum*,
remarks*,
listRef*)
>> sch:pattern [
id =
"tei_all-elementSpec-child-constraint-based-on-mode-constraint-rule-26"
"\x{a}" ~
" "
sch:rule [
context = "tei:elementSpec[ @mode eq 'delete' ]"
"\x{a}" ~
" "
sch:report [
test = "child::*"
'This elementSpec element has a mode= of "delete" even though it has child elements. Change the mode= to "add", "change", or "replace", or remove the child elements.'
]
"\x{a}" ~
" "
]
"\x{a}" ~
" "
sch:rule [
context =
"tei:elementSpec[ @mode = ('add','change','replace') ]"
"\x{a}" ~
" "
sch:assert [
test = "child::* | (@* except (@mode, @ident))"
'This elementSpec element has a mode= of "'
sch:value-of [ select = "@mode" ]
'", but does not have any child elements or schema-changing attributes. Specify child elements, use validUntil=, predeclare=, ns=, or prefix=, or change the mode= to "delete".'
]
"\x{a}" ~
" "
]
"\x{a}" ~
" "
],
att.global.attributes,
att.identified.attributes,
att.namespaceable.attributes,
## specifies a default prefix which will be prepended to all patterns relating to the element, unless otherwise stated.
attribute prefix { xsd:NCName? }?,
empty
}
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 classSpec {
((model.identSynonyms | model.descLike)*,
classes?,
constraintSpec*,
attList?,
exemplum*,
remarks*,
listRef*),
att.global.attributes,
att.identified.attributes,
att.typed.attribute.subtype,
## 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
}
dataSpec =
## (datatype specification) documents a datatype. [22.3. Specification Elements 22.7. Macro Specifications]
element dataSpec {
((model.identSynonyms | model.descLike)*,
(content | valList)?,
constraintSpec*,
exemplum*,
remarks*,
listRef*),
att.global.attributes,
att.identified.attributes,
empty
}
macroSpec =
## (macro specification) documents the function and implementation of a pattern. [22.3. Specification Elements 22.7. Macro Specifications]
element macroSpec {
((model.identSynonyms | model.descLike)*,
(content | valList)?,
constraintSpec*,
exemplum*,
remarks*,
listRef*),
att.global.attributes,
att.identified.attributes,
empty
}
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 remarks {
model.pLike+,
att.global.attributes,
att.combinable.attributes,
att.translatable.attributes,
## specifies the remark concerned.
attribute ident { xsd:string }?,
empty
}
listRef =
## (list of references) supplies a list of significant references in the current document or elsewhere.
element listRef {
(desc*, model.ptrLike+)
>> sch:pattern [
id = "tei_all-listRef-TagDocsNestinglistRef-constraint-rule-28"
"\x{a}" ~
" "
sch:rule [
context =
"( tei:classSpec | tei:dataSpec | tei:elementSpec | tei:macroSpec | tei:moduleSpec | tei:schemaSpec | tei:specGrp )/tei:listRef"
"\x{a}" ~
" "
sch:report [
test = "tei:listRef"
"In the context of tagset documentation, the listRef element must not self-nest."
]
"\x{a}" ~
" "
]
"\x{a}" ~
" "
]
>> sch:pattern [
id =
"tei_all-listRef-TagDocslistRefChildren-constraint-rule-29"
"\x{a}" ~
" "
sch:rule [
context =
"( tei:classSpec | tei:dataSpec | tei:elementSpec | tei:macroSpec | tei:moduleSpec | tei:schemaSpec | tei:specGrp )/tei:listRef/tei:ptr | ( tei:classSpec | tei:dataSpec | tei:elementSpec | tei:macroSpec | tei:moduleSpec | tei:schemaSpec | tei:specGrp )/tei:listRef/tei:ref"
"\x{a}" ~
" "
sch:assert [
test = "@target and not( matches( @target,'\s') )"
"In the context of tagset documentation, each ptr or ref element inside a listRef must have a target attribute with only 1 pointer as its value."
]
"\x{a}" ~
" "
]
"\x{a}" ~
" "
],
att.global.attributes,
att.typed.attributes,
empty
}
exemplum =
## (exemplum) groups an example demonstrating the use of an element along with optional paragraphs of commentary. [22.5. Element Specifications]
element exemplum {
(model.pLike*, (egXML | eg), model.pLike*),
att.global.attributes,
att.typed.attributes,
att.translatable.attributes,
empty
}
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 classes {
memberOf*,
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
}
memberOf =
## specifies class membership of the documented element or class. [22.4.3. Classification of Components]
element memberOf {
macro.xtext,
att.global.attributes,
## specifies the identifier for a class of which the documented element or class is a member or subclass
attribute key { xsd:Name }?,
## 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
}
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 equiv {
empty,
att.global.attributes,
att.internetMedia.attributes,
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 { pattern = "\S+" }
}?,
## references an external script which contains a method to transform instances of this element to canonical TEI
attribute filter {
xsd:anyURI { pattern = "\S+" }
}?,
empty
}
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 altIdent {
xsd:NCName, att.global.attributes, att.typed.attributes, empty
}
model =
## describes the processing intended for a specified element. [22.5.4.1. The TEI processing model]
element model {
((model.identEquiv | model.descLike)*, param*, outputRendition*)
>> sch:pattern [
id = "tei_all-model-no_dup_default_models-constraint-rule-30"
"\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_all-model-no_dup_models-constraint-rule-31"
"\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}" ~
" "
],
att.global.attributes,
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 that 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
}
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 modelSequence {
((model.identEquiv | model.descLike)*, (model, model, model*))
>> sch:pattern [
id =
"tei_all-modelSequence-no_outputs_nor_predicates_4_my_kids-constraint-report-39"
"\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}" ~
" "
],
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 that 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
}
modelGrp =
[
a:documentation [
"(model group) any grouping of "
ns1:code [ "<model>" ]
" or "
ns1:code [ "<modelSequence>" ]
" elements with a common output method [22.5.4.4. Model Contexts and Outputs]"
]
]
element modelGrp {
((model.identEquiv | model.descLike)*,
outputRendition?,
(modelSequence | model)+),
att.global.attributes,
## 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
}
outputRendition =
## describes the rendering or appearance intended for all occurrences of an element in a specified context for a specified type of output.
element outputRendition {
text,
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
}
paramList =
## list of parameter specifications
element paramList { paramSpec*, att.global.attributes, empty }
paramSpec =
## supplies specification for one parameter of a model behaviour [22.5.4.8. Defining a processing model]
element paramSpec {
(model.identEquiv | model.descLike)*,
att.global.attributes,
att.identified.attributes,
empty
}
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 param {
empty,
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 `concat('Page ', @n)` for a page break or `@n` 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
}
content =
## (content model) contains a declaration of the intended content model for the element (or other construct) being specified. [22.5. Element Specifications]
element content {
(valList | model.contentPart+ | anyElement-content+)
>> sch:pattern [
id =
"tei_all-content-only_1_child_of_content-constraint-rule-32"
"\x{a}" ~
" "
sch:rule [
context = "tei:content[ *[2] ]"
"\x{a}" ~
" "
sch:let [ name = "tot_kids" value = "count( * )" ]
"\x{a}" ~
" "
sch:let [ name = "tei_kids" value = "count( tei:* )" ]
"\x{a}" ~
" "
sch:let [
name = "rng_kids"
value = "count( rng:* | rna:* )"
]
"\x{a}" ~
" "
sch:let [
name = "msg_part01"
value =
"'In the near future the <content> element will be limited to 1 and only 1 child element. '"
]
"\x{a}" ~
" "
sch:let [
name = "msg_part02"
value = "'This <content> element is in '"
]
"\x{a}" ~
" "
sch:let [
name = "msg_part03"
value =
"if ( local-name(..) eq 'elementSpec' ) then 'an ' else 'a '"
]
"\x{a}" ~
" "
sch:let [
name = "msg_part04"
value = "concat( local-name(..), ' with ' )"
]
"\x{a}" ~
" "
sch:let [
name = "msg_part05"
value =
"if ( parent::tei:moduleRef/@key ) then 'a @key' else ''"
]
"\x{a}" ~
" "
sch:let [
name = "msg_part06"
value =
"if ( parent::tei:moduleRef/@url ) then 'a @url' else ''"
]
"\x{a}" ~
" "
sch:let [
name = "msg_part07"
value =
"if ( parent::tei:*/@ident ) then 'an @ident' else ''"
]
"\x{a}" ~
" "
sch:let [ name = "msg_part08" value = """' of "'""" ]
"\x{a}" ~
" "
sch:let [
name = "msg_part09"
value = "../@ident | ../@key | ../@url"
]
"\x{a}" ~
" "
sch:let [
name = "msg_part10"
value = """concat('" and has ', $tot_kids, ' children,')"""
]
"\x{a}" ~
" "
sch:let [
name = "msgs_1to10"
value =
"concat( $msg_part01, $msg_part02, $msg_part03, $msg_part04, $msg_part05, $msg_part06, $msg_part07, $msg_part08, $msg_part09, $msg_part10 )"
]
"\x{a}" ~
" "
sch:report [
test = "$tei_kids eq $tot_kids"
role = "warning"
"\x{a}" ~
" "
sch:value-of [ select = "$msgs_1to10" ]
" which could be wrapped in a <sequence> element.\x{a}" ~
" "
]
"\x{a}" ~
" "
sch:report [
test = "$rng_kids eq $tot_kids"
role = "warning"
"\x{a}" ~
" "
sch:value-of [ select = "$msgs_1to10" ]
" which could be wrapped in an <rng:div> element.\x{a}" ~
" "
]
"\x{a}" ~
" "
sch:assert [
test = "$tei_kids eq $tot_kids or $rng_kids eq $tot_kids"
role = "warning"
"\x{a}" ~
" "
sch:value-of [ select = "$msgs_1to10" ]
" but those children are neither all TEI elements nor\x{a}" ~
" all RELAX NG elements, and thus this <content> is invalid and can not be easily rectified.\x{a}" ~
" "
]
"\x{a}" ~
" "
]
"\x{a}" ~
" "
],
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
}
sequence =
## indicates that the constructs referenced by its children form a sequence [22.5.1. Defining Content Models]
element sequence {
(model.contentPart+)
>> sch:pattern [
id = "tei_all-sequence-sequencechilden-constraint-assert-39"
"\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}" ~
" "
],
att.global.attributes,
att.repeatable.attributes,
## if false, indicates that component elements of a sequence may occur in any order.
attribute preserveOrder { xsd:boolean }?,
empty
}
alternate =
## indicates that the constructs referenced by its children form an alternation [22.5.1. Defining Content Models]
element alternate {
((valList | model.contentPart)+)
>> sch:pattern [
id = "tei_all-alternate-alternatechilden-constraint-assert-40"
"\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}" ~
" "
],
att.global.attributes,
att.repeatable.attributes,
empty
}
constraint =
## (constraint rules) the formal rules of a constraint [22.5. Element Specifications]
element constraint {
(text | anyElement-constraint)*, att.global.attributes, empty
}
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 constraintSpec {
((model.identSynonyms | model.descLike)*, constraint?)
>> sch:pattern [
id =
"tei_all-constraintSpec-empty-based-on-mode-constraint-rule-33"
"\x{a}" ~
" "
sch:rule [
context = "tei:constraintSpec[ @mode eq 'delete']"
"\x{a}" ~
" "
sch:report [
test = "child::*"
'This constraintSpec element has a mode= of "delete" even though it has child elements. Change the mode= to "add", "change", or "replace", or remove the child elements.'
]
"\x{a}" ~
" "
]
"\x{a}" ~
" "
sch:rule [
context = "tei:constraintSpec[ @mode eq 'change']"
"\x{a}" ~
" "
sch:assert [
test = "child::*"
'This constraintSpec element has a mode= of "change", but does not have any child elements. Specify child elements, or change the mode= to "delete".'
]
"\x{a}" ~
" "
]
"\x{a}" ~
" "
sch:rule [
context = "tei:constraintSpec[ @mode = ('add','replace') ]"
"\x{a}" ~
" "
sch:assert [
test = "child::tei:constraint"
'This constraintSpec element has a mode= of "'
sch:value-of [ select = "@mode" ]
"""", but does not have a child 'constraint' element. Use a child 'constraint' element or change the mode= to "delete" or "change"."""
]
"\x{a}" ~
" "
]
"\x{a}" ~
" "
]
>> sch:ns [
prefix = "s"
uri = "http://www.ascc.net/xml/schematron"
]
>> sch:pattern [
id = "tei_all-constraintSpec-sch_no_more-constraint-report-43"
"\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_all-constraintSpec-isosch-constraint-report-44"
"\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_all-constraintSpec-needrules-constraint-rule-36"
"\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}" ~
" "
]
>> sch:pattern [
id =
"tei_all-constraintSpec-unique-constraintSpec-ident-constraint-rule-37"
"\x{a}" ~
" "
sch:rule [
context =
"tei:constraintSpec[ @mode eq 'add' or not( @mode ) ]"
"\x{a}" ~
" "
sch:let [
name = "myIdent"
value = "normalize-space(@ident)"
]
"\x{a}" ~
" "
sch:report [
test =
"preceding::tei:constraintSpec[ normalize-space(@ident) eq $myIdent ]"
"\x{a}" ~
" The @ident of 'constraintSpec' should be unique; this one ("
sch:value-of [ select = "$myIdent" ]
") is the same as that of a previous 'constraintSpec'.\x{a}" ~
" "
]
"\x{a}" ~
" "
]
"\x{a}" ~
" "
],
att.global.attributes,
att.identified.attributes,
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
}
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 attList {
(attRef | attDef | attList)+,
att.global.attributes,
## (organization) specifies whether only one (choice) or all (group) of the attributes in the list are available
[ a:defaultValue = "group" ]
attribute org {
## grouped
"group"
|
## alternated
"choice"
}?,
empty
}
attDef =
## (attribute definition) contains the definition of a single attribute. [22.5.3. Attribute List Specification]
element attDef {
((model.identSynonyms | model.descLike)*,
datatype?,
constraintSpec*,
defaultVal?,
(valList | valDesc+)?,
exemplum*,
remarks*)
>> sch:ns [
prefix = "teix"
uri = "http://www.tei-c.org/ns/Examples"
]
>> sch:pattern [
id = "tei_all-attDef-attDefContents-constraint-assert-45"
"\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_all-attDef-noDefault4Required-constraint-rule-38"
"\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_all-attDef-defaultIsInClosedList-twoOrMore-constraint-rule-39"
"\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_all-attDef-defaultIsInClosedList-one-constraint-rule-40"
"\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}" ~
" "
],
att.global.attributes,
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 { pattern = "\S*" }
}?,
empty
}
attRef =
## (attribute pointer) points to the definition of an attribute or group of attributes. [22.2. Modules and Schemas]
element attRef {
empty,
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
}
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 datatype {
(dataRef | anyElement-datatype),
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
}
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 dataRef {
(dataFacet*)
>> sch:pattern [
id = "tei_all-dataRef-restrictDataFacet-constraint-rule-41"
"\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 — that is, for there to be a 'dataFacet' child there must be a @name attribute."
]
"\x{a}" ~
" "
sch:report [
test = "@restriction"
role = "nonfatal"
"Data facets and restrictions cannot both be expressed on the same data reference — that is, the @restriction attribute cannot be used when a 'dataFacet' element is present."
]
"\x{a}" ~
" "
]
"\x{a}" ~
" "
]
>> sch:pattern [
id =
"tei_all-dataRef-restrictAttResctrictionName-constraint-rule-42"
"\x{a}" ~
" "
sch:rule [
context = "tei:dataRef[@restriction]"
"\x{a}" ~
" "
sch:assert [
test = "@name"
role = "nonfatal"
"Restrictions can only be specified for references to datatypes specified by\x{a}" ~
" XML Schemas: Part 2: Datatypes — that is, for there to be a @restriction attribute there must be a @name attribute, too."
]
"\x{a}" ~
" "
]
"\x{a}" ~
" "
],
att.global.attributes,
(
## the identifier used for this datatype specification
attribute key { xsd:NCName }?
| [
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 { pattern = "\S+" }
}?),
## 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
}
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 dataFacet {
empty,
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
}
defaultVal =
## (default value) specifies the default declared value for an attribute. [22.5.3. Attribute List Specification]
element defaultVal {
text, att.global.attributes, att.combinable.attributes, empty
}
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 valDesc {
macro.phraseSeq.limited,
att.global.attributes,
att.translatable.attributes,
att.combinable.attributes,
empty
}
valItem =
## documents a single value in a predefined list of values. [22.5.3. Attribute List Specification]
element valItem {
(model.identSynonyms*,
(model.descLike+,
(model.identSynonyms, model.descLike*)*,
remarks*)?,
paramList?),
att.global.attributes,
att.combinable.attributes,
## specifies the value concerned.
attribute ident { xsd:string },
empty
}
valList =
[
a:documentation [
"(value list) contains one or more "
ns1:code [ "<valItem>" ]
" elements defining possible values. [22.5.3. Attribute List Specification]"
]
]
element valList {
valItem*,
att.global.attributes,
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
}
textNode =
## indicates the presence of a text node in a content model [22. Documentation Elements]
element textNode { empty, att.global.attributes, empty }
anyElement =
## indicates the presence of any elements in a content model [22. Documentation Elements]
element anyElement {
empty,
att.global.attributes,
att.repeatable.attributes,
## supplies a list of namespaces to one of which the permitted elements must belong.
attribute require {
list {
xsd:anyURI { pattern = "\S*" }+
}
}?,
## supplies a list of namespaces or prefixed element names which are not permitted.
attribute except {
list {
(xsd:anyURI { pattern = "[^/\s]+:\S*" }
| xsd:Name { pattern = ".+:.+" })+
}
}?,
empty
}
\empty =
## indicates the presence of an empty node within a content model [22. Documentation Elements]
element empty { empty, att.global.attributes, empty }
start = TEI | teiCorpus