Permalink
Find file
Fetching contributors…
Cannot retrieve contributors at this time
288 lines (287 sloc) 73.5 KB
<!DOCTYPE html
SYSTEM "about:legacy-compat">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><!--THIS FILE IS GENERATED FROM AN XML MASTER. DO NOT EDIT (5)--><title>Proposed Guidelines Prose for TEI Processing Models</title><meta name="author" content=""/><meta name="generator" content="Text Encoding Initiative Consortium XSLT stylesheets"/><meta charset="utf-8"/><link href="http://www.tei-c.org/release/xml/tei/stylesheet/tei.css" rel="stylesheet" type="text/css"/><link rel="stylesheet" media="print" type="text/css" href="http://www.tei-c.org/release/xml/tei/stylesheet/tei-print.css"/></head><body class="simple" id="TOP" itemscope="itemscope" itemtype="http://www.tei-c.org/ns/1.0/" itemprop="TEI"><!--TEI front--><div class="tei_front"><div class="titlePage"><div itemprop="docTitle" class="docTitle"><div itemprop="titlePart" class="titlePart">Proposed Guidelines Prose for TEI Processing Models</div></div><div itemprop="docAuthor" class="docAuthor">Sebastian Rahtz</div><div itemprop="docAuthor" class="docAuthor">James Cummings</div><div itemprop="docAuthor" class="docAuthor">Brian Pytlik Zillig</div><div itemprop="docAuthor" class="docAuthor">Magdalena Turska</div><div itemprop="date" class="docDate">Version 0.9: 29th May 2015</div></div></div><h2>Table of contents</h2><ul class="toc toc_body"><li class="toc"><span class="headingNumber">1. </span><a class="toc toc_0" href="#index.xml-body.1_div.1">Editing Note (to be removed)</a></li><li class="toc"><span class="headingNumber">2. </span><a class="toc toc_0" href="#index.xml-body.1_div.2">Documenting a Processing Model</a><ul class="toc"><li class="toc"><span class="headingNumber">2.1. </span><a class="toc toc_1" href="#index.xml-body.1_div.2_div.1">Processing Models</a></li><li class="toc"><span class="headingNumber">2.2. </span><a class="toc toc_1" href="#index.xml-body.1_div.2_div.2">Output Rendition </a></li><li class="toc"><span class="headingNumber">2.3. </span><a class="toc toc_1" href="#index.xml-body.1_div.2_div.3">Model Contexts</a></li><li class="toc"><span class="headingNumber">2.4. </span><a class="toc toc_1" href="#index.xml-body.1_div.2_div.4">Parameters for Model Behaviour</a></li><li class="toc"><span class="headingNumber">2.5. </span><a class="toc toc_1" href="#index.xml-body.1_div.2_div.5">Implementing a TEI Processing Model</a></li></ul></li></ul><ul class="toc toc_back"><li class="toc"><span class="headingNumber">Appendix A </span><a class="toc toc_0" href="#index.xml-back.1_div.1">Extensions to the TEI</a></li><li class="toc"><span class="headingNumber">Appendix B </span><a class="toc toc_0" href="#index.xml-back.1_div.2">Changes to the TEI</a></li><li class="toc"><span class="headingNumber">Appendix C </span><a class="toc toc_0" href="#index.xml-back.1_div.3">Schema for processing extended ODD</a></li></ul><!--TEI body--><div class="tei_body"><section class="teidiv0" id="index.xml-body.1_div.1"><header><h1><span class="headingNumber">1. </span><span class="head" itemprop="head">Editing Note (to be removed)</span></h1></header><p style="font-style:italic;font-weight:bold">I (JamesC) believe that the appropriate place for this draft guidelines prose is 22.4.8 shortly after <a class="link_ref" itemprop="ref" href="http://www.tei-c.org/release/doc/tei-p5-doc/en/html/TD.html#TDENT">http://www.tei-c.org/release/doc/tei-p5-doc/en/html/TD.html#TDENT</a> or another possibility is as a new 22.5 (pushing the current one down to 22.6).</p></section><section class="teidiv0" id="index.xml-body.1_div.2"><header><h1><span class="headingNumber">2. </span><span class="head" itemprop="head">Documenting a Processing Model</span></h1></header><p>Where desired, the recording of the original rendition of source documents is catered for through use of the global attributes (<span xmlns="" class="att" itemprop="att">rend</span>, <span xmlns="" class="att" itemprop="att">rendition</span> and <span xmlns="" class="att" itemprop="att">style</span>) as well as the <span class="gi">&lt;rendition&gt;</span> element (see [[undefined COHQW]]). What is needed in some other instances is a method through which to document one or more possible 'processing models' for the document instance being encoded. In this case a processing model is a template description for how the element should be transformed in one or more particular outputs. It might say that this element should be displayed in italics or presented alongside its alternative (e.g. in the example of <span class="gi">&lt;sic&gt;</span> and <span class="gi">&lt;corr&gt;</span>), with no details on how or in what processing language this might be accomplished. It should be noted that any processing model documentation should be considered illustrative rather than restrictive. This is a method for documenting one or more <em itemprop="emph">possible</em> processing models in abstract terms and it should be clear that processing of such documents is not limited to only these possibilities. This enables the creator of a TEI customization to specify how they intend particular elements could be processed.</p><p>This method of working assumes a workflow with at least three distinct parts and roles, in creating digital outputs from TEI texts. These roles may be held all by a single individual or multiple large teams depending on the scope and available resources. The minimal divisions that underlie this approach to documenting processing models are:</p><ol itemprop="list"><li class="item" itemprop="item">an editor manages the text integrity and makes the high-level output decisions. These fall into (at least) two parts:<ol itemprop="list"><li class="item" itemprop="item">Structural descriptions, e.g. 'should the original or corrected version be displayed by default', or 'is this a block level or inline component'</li><li class="item" itemprop="item">Indications of appearance ('titles are in italics').</li></ol></li><li class="item" itemprop="item">a programmer takes the editor's specification, and the TEI text(s), and creates the input for a designer to make the output.</li><li class="item" itemprop="item">a designer creates the output envelope (for example, and book layout using typesetting software, or a web site using their locally-supported web framework), making decisions in conjunction with the editor ('use Garamond font throughout' or 'every page must show the departmental logo')</li></ol><p>It is crucial to understand here that neither the designer nor the programmer necessarily need have any understanding of the semantics of TEI elements or the structure of a TEI document. The programmer, particularly, can use the processing model rules to extract material from the TEI text in a relatively simple way. The method works for a variety of output formats, as the programmer simply has to provide implementations for a small number of model behaviours, and understand the well-documented features of CSS. The concepts addressed by the behaviours (e.g. block and inline) are generally in line with XSL-FO, and HTML; the catalogue of functions is given under the element <span class="gi">&lt;model&gt;</span>.</p><p>The following elements are used to document processing models: </p><p>A processing model may by documented by one or more <span class="gi">&lt;model&gt;</span> elements. If these are provided within a <span class="gi">&lt;modelGrp&gt;</span> element, or appear inside the <span class="gi">&lt;elementSpec&gt;</span> itself, then they document alternative processing models. The <span class="gi">&lt;modelGrp&gt;</span> is used to group elements all of which are alternatives for the same <span xmlns="" class="att" itemprop="att">output</span>. If multiple <span class="gi">&lt;model&gt;</span> elements are provided within a <span class="gi">&lt;modelSequence&gt;</span> element, then they document a single model composed of a sequence of models to be processed as a unit.</p><div class="teidiv1" id="index.xml-body.1_div.2_div.1"><h2><span class="headingNumber">2.1. </span><span class="head" itemprop="head">Processing Models</span></h2><p>The <span class="gi">&lt;model&gt;</span> element is the basis of any processing model documentation. The <span class="gi">&lt;model&gt;</span> element is used to document the intended processing model for a particular element in an abstract manner which separates the documentation of intended processing from its implementation in whatever processing language is chosen. A required <span xmlns="" class="att" itemprop="att">behaviour</span> attribute which documents the intended processing behaviour and controls which processing function should be used to present this element in output. By default the behaviour specified by a <span class="gi">&lt;model&gt;</span> element is applicable to every occurrence of the element documented by the parent <span class="gi">&lt;elementSpec&gt;</span> within which it appears. However, a <span class="gi">&lt;model&gt;</span> element's scope may be modified using the <span xmlns="" class="att" itemprop="att">predicate</span> attribute to supply an XPath predicate determining the context under which this model is applicable.</p><p>The processing model notation allows each element to be assigned to one or more general categories (<span class="gi">&lt;model&gt;</span>), and optionally given an output rendition description (<span class="gi">&lt;outputRendition&gt;</span>). This allows a processor to know whether to handle the element or not, and broadly speaking how to display or otherwise process it. The <span class="gi">&lt;model&gt;</span> and <span class="gi">&lt;outputRendition&gt;</span> documentation are recorded in the TEI ODD customization. The editor or customization creator can document the intended output without having any knowledge about the implementation language or methodologies employed. The scope of a <span class="gi">&lt;model&gt;</span> and its <span xmlns="" class="att" itemprop="att">behaviour</span> may be limited by the <span xmlns="" class="att" itemprop="att">predicate</span> attribute. For a given <span class="gi">&lt;elementSpec&gt;</span>, there can be as many <span class="gi">&lt;model&gt;</span> statements as required. Multiple <span class="gi">&lt;model&gt;</span> statements are regarded as an alternation -- only one of them should be applied. This is comparable to a 'case statement' in some programming languages.</p><p>If the intention is for several <span class="gi">&lt;model&gt;</span> statements to be active at the same time, they can be enclosed inside a <span class="gi">&lt;modelSequence&gt;</span>. If it is desired to group sets of <span class="gi">&lt;model&gt;</span> statements without implying a sequence, for example grouping all of those for the same kind of output, then a <span class="gi">&lt;modelGrp&gt;</span> element may be used.</p></div><div class="teidiv1" id="index.xml-body.1_div.2_div.2"><h2><span class="headingNumber">2.2. </span><span class="head" itemprop="head">Output Rendition </span></h2><p>Within each <span class="gi">&lt;model&gt;</span> there can be set of <span class="gi">&lt;outputRendition&gt;</span> elements. For example, with the simple case of handling of the <span class="gi">&lt;hi&gt;</span> element a customization writer may decide that this should be treated as an inline element and normally output in italics:</p><div id="index.xml-egXML-d33e252" class="pre egXML_valid"><span class="element">&lt;model <span class="attribute">behaviour</span>="<span class="attributevalue">inline</span>"&gt;</span>
 <span class="element">&lt;outputRendition&gt;</span>font-style: italic;<span class="element">&lt;/outputRendition&gt;</span>
<span class="element">&lt;/model&gt;</span></div><p>The <span xmlns="" class="att" itemprop="att">behaviour</span> attribute specifies the name of a model behaviour inline. This behaviour and its parameters can be documented in a using the <span class="gi">&lt;paramSpec&gt;</span> element. While these express different categories of output possibilities they do not specify the precise details of implementation since that is dependent on the processing language chosen. The <span class="gi">&lt;outputRendition&gt;</span> element uses CSS syntax to specify the appearance. It would have been possible here to simply add 'display: inline;' to the rendition, to indicate that it is inline, but the intention is to separate the structural decision from the presentation of its appearance.</p><p>It is common for <span class="gi">&lt;hi&gt;</span> to use a <span xmlns="" class="att" itemprop="att">rendition</span> attribute to indicate appearance. By default, this is ignored, but <span xmlns="" class="att" itemprop="att">useSourceRendition</span> can be used to indicate that it should be taken account of:</p><div id="index.xml-egXML-d33e281" class="pre egXML_valid"><span class="element">&lt;model <span class="attribute">behaviour</span>="<span class="attributevalue">inline</span>"
 <span class="attribute">useSourceRendition</span>="<span class="attributevalue">true</span>"&gt;</span>
 <span class="element">&lt;outputRendition&gt;</span>font-style: italic;<span class="element">&lt;/outputRendition&gt;</span>
<span class="element">&lt;/model&gt;</span></div><p>In this case the <span class="gi">&lt;outputRendition&gt;</span> should be considered only a fallback and will be overridden by the rendition attribute if it exists. This uses the same behaviour as CSS; i.e. if rendition involves a change to a different property from 'font-style', then this local modification remains active.</p></div><div class="teidiv1" id="index.xml-body.1_div.2_div.3"><h2><span class="headingNumber">2.3. </span><span class="head" itemprop="head">Model Contexts</span></h2><p>If the processing model is context-dependent, the <span xmlns="" class="att" itemprop="att">predicate</span> attribute can provide an XPath expression to document when different models apply. In document processing for the <span class="gi">&lt;q&gt;</span> element, it may be desired to indicate that when it is inside a paragraph it should be treated as inline (with an italic font style), but when it isn't inside a paragraph, it should be treated as a block.</p><div id="index.xml-egXML-d33e304" class="pre egXML_valid"><span class="element">&lt;model <span class="attribute">predicate</span>="<span class="attributevalue">ancestor::p</span>"
 <span class="attribute">behaviour</span>="<span class="attributevalue">inline</span>"&gt;</span>
 <span class="element">&lt;outputRendition&gt;</span>font-style: italic;<span class="element">&lt;/outputRendition&gt;</span>
<span class="element">&lt;/model&gt;</span>
<span class="element">&lt;model <span class="attribute">behaviour</span>="<span class="attributevalue">block</span>"&gt;</span>
 <span class="element">&lt;outputRendition&gt;</span>left-margin: 2em;<span class="element">&lt;/outputRendition&gt;</span>
<span class="element">&lt;/model&gt;</span></div><p>The <span class="gi">&lt;model&gt;</span> elements here are alternatives and are so by default. It is only if the test (the <span xmlns="" class="att" itemprop="att">predicate</span> attribute) does not match the context will the second <span class="gi">&lt;model&gt;</span> be applied. The <span class="gi">&lt;model&gt;</span> elements could be grouped in a <span class="gi">&lt;modelGrp&gt;</span> element if there was a reason to do so, for example they are all for one particular form of output. This enables a convenient distinction between sets of models whose difference is not their predicate but their form of output.</p></div><div class="teidiv1" id="index.xml-body.1_div.2_div.4"><h2><span class="headingNumber">2.4. </span><span class="head" itemprop="head">Parameters for Model Behaviour</span></h2><p>In the examples above TEI elements have been mapped to to simple block and inline concepts. There are other behaviours possible and these can have parameters which themselves need to be documented. </p><p>A more complex example is provided by processing the <span class="gi">&lt;choice&gt;</span> element; this is commonly used to provide a pair of alternates (e.g. <span class="gi">&lt;sic&gt;</span> and <span class="gi">&lt;corr&gt;</span>). An editor or customization writer may wish to document that the corrected version should be shown by default in the output, but still allow for the implementation to switch to (or note or display in some form, such as a tooltip) the original version. This may be documented with a <span xmlns="" class="att" itemprop="att">behaviour</span> attribute, for example, of alternate depending on the function library being used. In documenting the processing model for <span class="gi">&lt;choice&gt;</span> there are three common pairs of <span class="gi">&lt;sic&gt;</span> and <span class="gi">&lt;corr&gt;</span>, <span class="gi">&lt;abbr&gt;</span> and <span class="gi">&lt;expan&gt;</span>, as well as <span class="gi">&lt;orig&gt;</span> and <span class="gi">&lt;reg&gt;</span> to record:</p><div id="index.xml-egXML-d33e378" class="pre egXML_valid"><span class="element">&lt;model <span class="attribute">predicate</span>="<span class="attributevalue">sic and corr</span>"
 <span class="attribute">behaviour</span>="<span class="attributevalue">alternate</span>"&gt;</span>
 <span class="element">&lt;param <span class="attribute">name</span>="<span class="attributevalue">default</span>"&gt;</span>corr<span class="element">&lt;/param&gt;</span>
 <span class="element">&lt;param <span class="attribute">name</span>="<span class="attributevalue">alternate</span>"&gt;</span>sic<span class="element">&lt;/param&gt;</span>
<span class="element">&lt;/model&gt;</span>
<span class="element">&lt;model <span class="attribute">predicate</span>="<span class="attributevalue">abbr and expan[1]</span>"
 <span class="attribute">behaviour</span>="<span class="attributevalue">alternate</span>"&gt;</span>
 <span class="element">&lt;param <span class="attribute">name</span>="<span class="attributevalue">default</span>"&gt;</span>expan<span class="element">&lt;/param&gt;</span>
 <span class="element">&lt;param <span class="attribute">name</span>="<span class="attributevalue">alternate</span>"&gt;</span>abbr<span class="element">&lt;/param&gt;</span>
<span class="element">&lt;/model&gt;</span>
<span class="element">&lt;model <span class="attribute">predicate</span>="<span class="attributevalue">orig and reg</span>"
 <span class="attribute">behaviour</span>="<span class="attributevalue">alternate</span>"&gt;</span>
 <span class="element">&lt;param <span class="attribute">name</span>="<span class="attributevalue">default</span>"&gt;</span>reg<span class="element">&lt;/param&gt;</span>
 <span class="element">&lt;param <span class="attribute">name</span>="<span class="attributevalue">alternate</span>"&gt;</span>orig<span class="element">&lt;/param&gt;</span>
<span class="element">&lt;/model&gt;</span></div><p>This example provides explicit behaviour parameters as named <span class="gi">&lt;param&gt;</span> children of the <span class="gi">&lt;model&gt;</span>. The <span class="gi">&lt;param&gt;</span> elements provide parameters to the behaviour implementation documented by the <span xmlns="" class="att" itemprop="att">behaviour</span> attribute and their content is always assumed to be an XPath expression. Thus in the example above, we specify expan[1] to choose the first of any available set of <span class="gi">&lt;expan&gt;</span> children. The behaviours and their parameters may be documented separately for a customization using a <span class="gi">&lt;paramSpec&gt;</span> element. If no <span class="gi">&lt;param&gt;</span> is supplied, or it is ., the content of the object documented by this <span class="gi">&lt;model&gt;</span> and subject to the <span xmlns="" class="att" itemprop="att">behaviour</span> is assumed to be the content of the current node including all child nodes of the element, its attribute nodes, text nodes, etc.</p><p>When a different behaviour is desired for other outputs this may be specified with the <span xmlns="" class="att" itemprop="att">output</span> attribute. In the following example the processing intention for the <span class="gi">&lt;date&gt;</span> element is documented where this has options when containing both regularized and human readable data. This example copes with three situations but could be expanded. It records what to do when:</p><ol itemprop="list"><li class="item" itemprop="item">there is text inside the element, and the output is print; </li><li class="item" itemprop="item">there is no text inside the element but there is a when attribute, and the output is print; and </li><li class="item" itemprop="item">there is a <span xmlns="" class="att" itemprop="att">when</span> attribute and text inside the element, and the output is web</li></ol><p>In the third case, the same alternate function as in the previous example is used, but for print we document that the <span xmlns="" class="att" itemprop="att">when</span> attribute should be used when there is no text.</p><div id="index.xml-egXML-d33e453" class="pre egXML_valid"><span class="element">&lt;model <span class="attribute">output</span>="<span class="attributevalue">print</span>" <span class="attribute">predicate</span>="<span class="attributevalue">text()</span>"
 <span class="attribute">behaviour</span>="<span class="attributevalue">inline</span>"/&gt;</span>
<span class="element">&lt;model <span class="attribute">output</span>="<span class="attributevalue">print</span>"
 <span class="attribute">predicate</span>="<span class="attributevalue">@when and not(text())</span>" <span class="attribute">behaviour</span>="<span class="attributevalue">inline</span>"&gt;</span>
 <span class="element">&lt;param <span class="attribute">name</span>="<span class="attributevalue">content</span>"&gt;</span>@when<span class="element">&lt;/param&gt;</span>
<span class="element">&lt;/model&gt;</span>
<span class="element">&lt;model <span class="attribute">predicate</span>="<span class="attributevalue">@when</span>" <span class="attribute">output</span>="<span class="attributevalue">web</span>"
 <span class="attribute">behaviour</span>="<span class="attributevalue">alternate</span>"&gt;</span>
 <span class="element">&lt;param <span class="attribute">name</span>="<span class="attributevalue">default</span>"&gt;</span>.<span class="element">&lt;/param&gt;</span>
 <span class="element">&lt;param <span class="attribute">name</span>="<span class="attributevalue">alternate</span>"&gt;</span>@when<span class="element">&lt;/param&gt;</span>
<span class="element">&lt;/model&gt;</span></div><p>When documenting the output for elements with attributes, the processing model documentation can access these attributes and their values using standard XPath notation (either abbreviated or unabbreviated syntax). For example, the <span class="gi">&lt;ref&gt;</span> element usually has a <span xmlns="" class="att" itemprop="att">target</span> attribute providing the location to which a link should be created. The <span class="gi">&lt;ref&gt;</span> element may or may not have text content, but sometimes just the target. The processing model documentation below caters for these two situations:</p><div id="index.xml-egXML-d33e474" class="pre egXML_valid"><span class="element">&lt;model <span class="attribute">predicate</span>="<span class="attributevalue">not(text())</span>"
 <span class="attribute">behaviour</span>="<span class="attributevalue">link</span>"&gt;</span>
 <span class="element">&lt;param <span class="attribute">name</span>="<span class="attributevalue">content</span>"&gt;</span>@target<span class="element">&lt;/param&gt;</span>
 <span class="element">&lt;param <span class="attribute">name</span>="<span class="attributevalue">link</span>"&gt;</span>@target<span class="element">&lt;/param&gt;</span>
<span class="element">&lt;/model&gt;</span>
<span class="element">&lt;model <span class="attribute">behaviour</span>="<span class="attributevalue">link</span>"&gt;</span>
 <span class="element">&lt;param <span class="attribute">name</span>="<span class="attributevalue">content</span>"&gt;</span>.<span class="element">&lt;/param&gt;</span>
 <span class="element">&lt;param <span class="attribute">name</span>="<span class="attributevalue">link</span>"&gt;</span>@target<span class="element">&lt;/param&gt;</span>
<span class="element">&lt;/model&gt;</span></div><p>Here the link function has two <span class="gi">&lt;param&gt;</span> elements, the text to be shown (content), and the URL to which it should be linked (link). The first of these <span class="gi">&lt;model&gt;</span> elements documents that when there is no text nodes inside the <span class="gi">&lt;ref&gt;</span> element it should use the content of the <span xmlns="" class="att" itemprop="att">target</span> attribute <em itemprop="emph">as if</em> it was textual content. This <span xmlns="" class="att" itemprop="att">predicate</span> attribute could be made more specific as not(text()) and @target to assure that there is a <span xmlns="" class="att" itemprop="att">target</span> attribute. The second of these uses this <span xmlns="" class="att" itemprop="att">target</span> attribute for providing the link, but the element itself (and any text nodes or child elements) of the <span class="gi">&lt;ref&gt;</span> element for its content.</p><p>The documentation for the suggested model behaviours is provided in the element specification for the <span class="gi">&lt;model&gt;</span> element. For example, the inline behaviour has two optional parameters content and label:</p><div id="index.xml-egXML-d33e540" class="pre egXML_valid"><span class="element">&lt;valItem <span class="attribute">ident</span>="<span class="attributevalue">inline</span>"&gt;</span>
 <span class="element">&lt;paramList&gt;</span>
  <span class="element">&lt;paramSpec <span class="attribute">ident</span>="<span class="attributevalue">content</span>"/&gt;</span>
  <span class="element">&lt;paramSpec <span class="attribute">ident</span>="<span class="attributevalue">label</span>"/&gt;</span>
 <span class="element">&lt;/paramList&gt;</span>
 <span class="element">&lt;desc <span class="attribute">versionDate</span>="<span class="attributevalue">2015-08-21</span>"
  <span class="attribute">xml:lang</span>="<span class="attributevalue">en</span>"&gt;</span>creates inline element out
   of <span class="element">&lt;term&gt;</span>content<span class="element">&lt;/term&gt;</span> if there's something in <span class="element">&lt;gi&gt;</span>outputRendition<span class="element">&lt;/gi&gt;</span>,
   use that formatting otherwise just show text of selected content.<span class="element">&lt;/desc&gt;</span>
<span class="element">&lt;/valItem&gt;</span></div><p>This documentation inside the <span class="gi">&lt;elementSpec&gt;</span> for the <span class="gi">&lt;model&gt;</span> element because it is there that we specify the list of attribute values that behaviour allows. Similarly the value for the behaviour attribute alternate has two parameters: alternate and default:</p><div id="index.xml-egXML-d33e574" class="pre egXML_valid"><span class="element">&lt;valItem <span class="attribute">ident</span>="<span class="attributevalue">alternate</span>"&gt;</span>
 <span class="element">&lt;paramList&gt;</span>
  <span class="element">&lt;paramSpec <span class="attribute">ident</span>="<span class="attributevalue">default</span>"&gt;</span>
   <span class="element">&lt;desc <span class="attribute">versionDate</span>="<span class="attributevalue">2015-08-21</span>"
    <span class="attribute">xml:lang</span>="<span class="attributevalue">en</span>"&gt;</span>preferred content<span class="element">&lt;/desc&gt;</span>
  <span class="element">&lt;/paramSpec&gt;</span>
  <span class="element">&lt;paramSpec <span class="attribute">ident</span>="<span class="attributevalue">alternate</span>"&gt;</span>
   <span class="element">&lt;desc <span class="attribute">versionDate</span>="<span class="attributevalue">2015-08-21</span>"
    <span class="attribute">xml:lang</span>="<span class="attributevalue">en</span>"&gt;</span>alternate content<span class="element">&lt;/desc&gt;</span>
  <span class="element">&lt;/paramSpec&gt;</span>
 <span class="element">&lt;/paramList&gt;</span>
 <span class="element">&lt;desc <span class="attribute">versionDate</span>="<span class="attributevalue">2015-08-21</span>"
  <span class="attribute">xml:lang</span>="<span class="attributevalue">en</span>"&gt;</span>create a specialized display
   of alternating elements for displaying the preferred version and an alternative,
   both at once or by some method of toggling between the two.<span class="element">&lt;/desc&gt;</span>
<span class="element">&lt;/valItem&gt;</span></div><p>The nature of the documentation of these behaviour parameters intentionally makes no reference to the processing functions which might implement since that is a decision that should be left to the implementor and might vary by choice of processing language and form of output.</p></div><div class="teidiv1" id="index.xml-body.1_div.2_div.5"><h2><span class="headingNumber">2.5. </span><span class="head" itemprop="head">Implementing a TEI Processing Model</span></h2><p>It is a principle of the processing model that the transformation stage should be minimally intelligent; that is to say, it should contain as few TEI-specific rules as possible. The ODD should be as explicit as possible, and provide maximum expressivity to the editor without recording details of implementation.</p><p>An implementation of a TEI Processing Model can take at least two approaches. One can read the TEI ODD customization in advance and produce a processing pipeline (which itself consults the ODD or not), or a processing implementation could consult the TEI ODD customization for information while processing a document instance. Software which implements this processing model might proceed as follows:</p><ol itemprop="list"><li class="item" itemprop="item">When processing an element in the instance document, any applicable <span class="gi">&lt;model&gt;</span> or <span class="gi">&lt;modelSequence&gt;</span> for the current output format should be followed whether this is done by consulting the TEI ODD customization directly or rules abstracted into the processing toolchain.</li><li class="item" itemprop="item">The <span class="gi">&lt;model&gt;</span> elements should be processed in order until a match with the predicate is found, or a <span class="gi">&lt;model&gt;</span> with no predicate applies. If a <span class="gi">&lt;model&gt;</span> has no predicate, it matches any occurrence of the element. If a <span class="gi">&lt;model&gt;</span> has no output, it applies to all forms of output. If there is not a <span xmlns="" class="att" itemprop="att">useSourceRendition</span> attribute of true on the <span class="gi">&lt;model&gt;</span> then any <span xmlns="" class="att" itemprop="att">rendition</span> attribute on the source element can be ignored.</li><li class="item" itemprop="item">All of the <span class="gi">&lt;model&gt;</span> elements inside a <span class="gi">&lt;modelSequence&gt;</span> should be applied in order if the context matches any optional limiting predicates</li><li class="item" itemprop="item">The processing should follow the function provided by the <span xmlns="" class="att" itemprop="att">behaviour</span> attribute. Where the parameter passed to that function is '.' or no <span class="gi">&lt;param&gt;</span> is supplied, then the object of the <span xmlns="" class="att" itemprop="att">behaviour</span> attribute is all child nodes of the element including its attributes, element, and text nodes. These nodes should be subject to processing within this context. Thus a block should create a block-type object in the output for this element and all the results from processing its children.</li><li class="item" itemprop="item">If there are possible <span class="gi">&lt;model&gt;</span> elements, but none has a predicate which matches the current element, processing should proceed to its child nodes and see if there are models for them. Likewise, if there is no <span class="gi">&lt;model&gt;</span> provided for the current element, proceed to its children and see if there are models for them.</li><li class="item" itemprop="item">The special behaviour omit should be interpreted to direct processing to stop for that element and to proceed to the next sibling.</li></ol><p>While this implementation system is lightly sketched it should be interpreted as broadly similar to the processing model for XSLT.</p></div></section></div><!--TEI back--><div class="tei_back"><section class="teidiv0" id="index.xml-back.1_div.1"><header><h1><span class="headingNumber">Appendix A </span><span class="head" itemprop="head">Extensions to the TEI</span></h1></header><p><b>Specification group [additions]</b></p><table class="border"><tr><td>&lt;<span class="green">param</span>&gt;</td><td><table class="border"><tr><td colspan="3">parameter of a model behaviour</td></tr><tr><td>Classes</td><td colspan="2"><ul>att.global</ul></td></tr><tr><td colspan="3"><div class="pre">
<span class="element">&lt;macroRef <span class="attribute">key</span>="<span class="attributevalue">data.xpath</span>"/&gt;</span></div></td></tr><tr><td>@<span class="green">name</span></td><td><table class="border"><tr><td colspan="3">Name of parameter</td></tr></table></td></tr><tr><td colspan="3"><div id="index.xml-egXML-d33e690" class="pre egXML_valid"><span class="element">&lt;model <span class="attribute">predicate</span>="<span class="attributevalue">sic and corr</span>"
 <span class="attribute">behaviour</span>="<span class="attributevalue">alternate</span>"&gt;</span>
 <span class="element">&lt;param <span class="attribute">name</span>="<span class="attributevalue">default</span>"&gt;</span>corr<span class="element">&lt;/param&gt;</span>
 <span class="element">&lt;param <span class="attribute">name</span>="<span class="attributevalue">alternate</span>"&gt;</span>sic<span class="element">&lt;/param&gt;</span>
<span class="element">&lt;/model&gt;</span>
<span class="element">&lt;model <span class="attribute">predicate</span>="<span class="attributevalue">abbr and expan[1]</span>"
 <span class="attribute">behaviour</span>="<span class="attributevalue">alternate</span>"&gt;</span>
 <span class="element">&lt;param <span class="attribute">name</span>="<span class="attributevalue">default</span>"&gt;</span>expan<span class="element">&lt;/param&gt;</span>
 <span class="element">&lt;param <span class="attribute">name</span>="<span class="attributevalue">alternate</span>"&gt;</span>abbr<span class="element">&lt;/param&gt;</span>
<span class="element">&lt;/model&gt;</span>
<span class="element">&lt;model <span class="attribute">predicate</span>="<span class="attributevalue">orig and reg</span>"
 <span class="attribute">behaviour</span>="<span class="attributevalue">alternate</span>"&gt;</span>
 <span class="element">&lt;param <span class="attribute">name</span>="<span class="attributevalue">default</span>"&gt;</span>reg<span class="element">&lt;/param&gt;</span>
 <span class="element">&lt;param <span class="attribute">name</span>="<span class="attributevalue">alternate</span>"&gt;</span>orig<span class="element">&lt;/param&gt;</span>
<span class="element">&lt;/model&gt;</span></div></td></tr><p>The content of parameter is an XPath Predicate Expression. The names of the expected parameters may be documented in the corresponding customization using <span class="gi">&lt;paramSpec&gt;</span>.</p></table></td></tr><tr><td>&lt;<span class="green">paramSpec</span>&gt;</td><td><table class="border"><tr><td colspan="3">specification of a parameter of a model behaviour</td></tr><tr><td>Classes</td><td colspan="2"><ul>att.globalatt.identifiable</ul></td></tr><tr><td colspan="3"><div class="pre">
<span class="element">&lt;alternate <span class="attribute">minOccurs</span>="<span class="attributevalue">0</span>"
 <span class="attribute">maxOccurs</span>="<span class="attributevalue">unbounded</span>"&gt;</span>
<span class="element">&lt;classRef <span class="attribute">key</span>="<span class="attributevalue">model.glossLike</span>"/&gt;</span>
<span class="element">&lt;classRef <span class="attribute">key</span>="<span class="attributevalue">model.descLike</span>"/&gt;</span><span class="element">&lt;/alternate&gt;</span></div></td></tr><tr><td colspan="3"><div id="index.xml-egXML-d33e731" class="pre egXML_valid"><span class="element">&lt;valItem <span class="attribute">ident</span>="<span class="attributevalue">link</span>"&gt;</span>
 <span class="element">&lt;paramList&gt;</span>
  <span class="element">&lt;paramSpec <span class="attribute">ident</span>="<span class="attributevalue">content</span>"/&gt;</span>
  <span class="element">&lt;paramSpec <span class="attribute">ident</span>="<span class="attributevalue">link</span>"&gt;</span>
   <span class="element">&lt;desc&gt;</span>link url<span class="element">&lt;/desc&gt;</span>
  <span class="element">&lt;/paramSpec&gt;</span>
 <span class="element">&lt;/paramList&gt;</span>
 <span class="element">&lt;desc&gt;</span>create hyperlink<span class="element">&lt;/desc&gt;</span>
 <span class="element">&lt;equiv <span class="attribute">name</span>="<span class="attributevalue">a</span>"/&gt;</span>
<span class="element">&lt;/valItem&gt;</span></div></td></tr><p>The <span class="gi">&lt;paramSpec&gt;</span> element is used to provide a specification of a parameter to be used in conjunction with a <span class="gi">&lt;model&gt;</span> element's <span xmlns="" class="att" itemprop="att">behaviour</span> attribute. In the example provided a <span xmlns="" class="att" itemprop="att">behaviour</span> attribute of link has two parameters: content and link. Using a <span class="gi">&lt;desc&gt;</span> attribute within a <span class="gi">&lt;paramSpec&gt;</span> is optional but recommended practice.</p></table></td></tr><tr><td>&lt;<span class="green">paramList</span>&gt;</td><td><table class="border"><tr><td colspan="3">list of parameter specifications</td></tr><tr><td>Classes</td><td colspan="2"><ul>att.global</ul></td></tr><tr><td colspan="3"><div class="pre">
<span class="element">&lt;elementRef <span class="attribute">maxOccurs</span>="<span class="attributevalue">unbounded</span>"
 <span class="attribute">key</span>="<span class="attributevalue">paramSpec</span>"/&gt;</span></div></td></tr><tr><td colspan="3"><div id="index.xml-egXML-d33e785" class="pre egXML_valid"><span class="element">&lt;valItem <span class="attribute">ident</span>="<span class="attributevalue">alternate</span>"&gt;</span>
 <span class="element">&lt;paramList&gt;</span>
  <span class="element">&lt;paramSpec <span class="attribute">ident</span>="<span class="attributevalue">default</span>"&gt;</span>
   <span class="element">&lt;desc&gt;</span>preferred content<span class="element">&lt;/desc&gt;</span>
  <span class="element">&lt;/paramSpec&gt;</span>
  <span class="element">&lt;paramSpec <span class="attribute">ident</span>="<span class="attributevalue">alternate</span>"&gt;</span>
   <span class="element">&lt;desc&gt;</span>alternate content<span class="element">&lt;/desc&gt;</span>
  <span class="element">&lt;/paramSpec&gt;</span>
 <span class="element">&lt;/paramList&gt;</span>
 <span class="element">&lt;desc <span class="attribute">verisionDate</span>="<span class="attributevalue">2015-08-21</span>"
  <span class="attribute">xml:lang</span>="<span class="attributevalue">en</span>"&gt;</span>create a specialized display of alternating elements for displaying the preferred version and an alternative, both at once or by some method of toggling between the two.<span class="element">&lt;/desc&gt;</span>
<span class="element">&lt;/valItem&gt;</span></div></td></tr><p>The <span class="gi">&lt;paramList&gt;</span> element provides a a mechanism to document parameter specifications using child <span class="gi">&lt;paramSpec&gt;</span> elements.</p></table></td></tr><tr><td>&lt;<span class="green">model</span>&gt;</td><td><table class="border"><tr><td colspan="3"><span lang="en" class="gloss" itemprop="gloss">processing model</span>documentation of an intended processing model for this element</td></tr><tr><td>Classes</td><td colspan="2"><ul>att.global</ul></td></tr><tr><td colspan="3"><div class="pre">
<span class="element">&lt;alternate <span class="attribute">minOccurs</span>="<span class="attributevalue">0</span>"
 <span class="attribute">maxOccurs</span>="<span class="attributevalue">unbounded</span>"&gt;</span>
<span class="element">&lt;classRef <span class="attribute">key</span>="<span class="attributevalue">model.glossLike</span>"/&gt;</span>
<span class="element">&lt;classRef <span class="attribute">key</span>="<span class="attributevalue">model.descLike</span>"/&gt;</span><span class="element">&lt;/alternate&gt;</span>
<span class="element">&lt;elementRef <span class="attribute">key</span>="<span class="attributevalue">param</span>" <span class="attribute">minOccurs</span>="<span class="attributevalue">0</span>"
 <span class="attribute">maxOccurs</span>="<span class="attributevalue">unbounded</span>"/&gt;</span>
<span class="element">&lt;elementRef <span class="attribute">key</span>="<span class="attributevalue">outputRendition</span>"
 <span class="attribute">minOccurs</span>="<span class="attributevalue">0</span>" <span class="attribute">maxOccurs</span>="<span class="attributevalue">unbounded</span>"/&gt;</span></div></td></tr><tr><td>@<span class="green">behaviour</span></td><td><table class="border"><tr><td colspan="3">which processing function, with optional named parameters, should be used to present this element output</td></tr><tr xmlns=""><td><span xmlns="http://www.w3.org/1999/xhtml" class="green">alternate</span> (default,alternate)</td><td>create a specialized display of alternating elements for
displaying the preferred version and an alternative, both at once or by some method of toggling between the
two.</td></tr><tr xmlns=""><td><span xmlns="http://www.w3.org/1999/xhtml" class="green">anchor</span> (id)</td><td>create an anchor with ID</td></tr><tr xmlns=""><td><span xmlns="http://www.w3.org/1999/xhtml" class="green">block</span> (content)</td><td>create a block structure</td></tr><tr xmlns=""><td><span xmlns="http://www.w3.org/1999/xhtml" class="green">body</span> (content)</td><td>create the body of a document.</td></tr><tr xmlns=""><td><span xmlns="http://www.w3.org/1999/xhtml" class="green">break</span> (type,label)</td><td>create a line, column, or page break according to
type</td></tr><tr xmlns=""><td><span xmlns="http://www.w3.org/1999/xhtml" class="green">cell</span> (content)</td><td>create a table cell</td></tr><tr xmlns=""><td><span xmlns="http://www.w3.org/1999/xhtml" class="green">cit</span> (content,source)</td><td>show the content, with an indication of the source</td></tr><tr xmlns=""><td><span xmlns="http://www.w3.org/1999/xhtml" class="green">document</span> (content)</td><td>start a new output document</td></tr><tr xmlns=""><td><span xmlns="http://www.w3.org/1999/xhtml" class="green">figure</span> (title)</td><td>make a figure with the title as caption</td></tr><tr xmlns=""><td><span xmlns="http://www.w3.org/1999/xhtml" class="green">glyph</span> (uri)</td><td>show a character by looking up reference to a chardesc at the
given URI</td></tr><tr xmlns=""><td><span xmlns="http://www.w3.org/1999/xhtml" class="green">graphic</span> (url,width,height,scale,title)</td><td>if url is present, uses it to display graphic, else
display a placeholder image. </td></tr><tr xmlns=""><td><span xmlns="http://www.w3.org/1999/xhtml" class="green">heading</span> (content,level)</td><td>creates a heading. </td></tr><tr xmlns=""><td><span xmlns="http://www.w3.org/1999/xhtml" class="green">index</span> (type)</td><td>generate list according to type</td></tr><tr xmlns=""><td><span xmlns="http://www.w3.org/1999/xhtml" class="green">inline</span> (content,label)</td><td>creates inline element out of content if there's
something in outputRendition, use that formatting otherwise just show text of selected
content.</td></tr><tr xmlns=""><td><span xmlns="http://www.w3.org/1999/xhtml" class="green">link</span> (content,link)</td><td>create hyperlink</td></tr><tr xmlns=""><td><span xmlns="http://www.w3.org/1999/xhtml" class="green">list</span> (content)</td><td>create a list by following content</td></tr><tr xmlns=""><td><span xmlns="http://www.w3.org/1999/xhtml" class="green">listItem</span> (content)</td><td>create list item</td></tr><tr xmlns=""><td><span xmlns="http://www.w3.org/1999/xhtml" class="green">metadata</span> (content)</td><td>create metadata section</td></tr><tr xmlns=""><td><span xmlns="http://www.w3.org/1999/xhtml" class="green">note</span> (content,place,label)</td><td>create an note, often out of line, depending on the value of
place; could be margin, footnote, endnote, inline</td></tr><tr xmlns=""><td><span xmlns="http://www.w3.org/1999/xhtml" class="green">omit</span></td><td>do nothing, do not process children</td></tr><tr xmlns=""><td><span xmlns="http://www.w3.org/1999/xhtml" class="green">paragraph</span> (content)</td><td>create a paragraph out of content.</td></tr><tr xmlns=""><td><span xmlns="http://www.w3.org/1999/xhtml" class="green">row</span> (content)</td><td>create a table row</td></tr><tr xmlns=""><td><span xmlns="http://www.w3.org/1999/xhtml" class="green">section</span> (content)</td><td>create a new section of the output document</td></tr><tr xmlns=""><td><span xmlns="http://www.w3.org/1999/xhtml" class="green">table</span> (content)</td><td>create a table</td></tr><tr xmlns=""><td><span xmlns="http://www.w3.org/1999/xhtml" class="green">text</span> (content)</td><td>create literal text</td></tr><tr xmlns=""><td><span xmlns="http://www.w3.org/1999/xhtml" class="green">title</span> (content)</td><td>create document title</td></tr></table></td></tr><tr><td>@<span class="green">predicate</span></td><td><table class="border"><tr><td colspan="3">the condition under which this model applies, given as an XPath Predicate Expression</td></tr></table></td></tr><tr><td>@<span class="green">useSourceRendition</span></td><td><table class="border"><tr><td colspan="3">whether to obey any rendition attribute which is present</td></tr></table></td></tr><tr><td>@<span class="green">output</span></td><td><table class="border"><tr><td colspan="3">the intended output method</td></tr><tr xmlns=""><td><span xmlns="http://www.w3.org/1999/xhtml" class="green">web</span></td><td>the output is intended for presentation in a web format</td></tr><tr xmlns=""><td><span xmlns="http://www.w3.org/1999/xhtml" class="green">print</span></td><td>the output is intended for presentation in a print format</td></tr><tr xmlns=""><td><span xmlns="http://www.w3.org/1999/xhtml" class="green">plain</span></td><td>the output is intended for presentation in a plain text
format</td></tr></table></td></tr><tr><td colspan="3"><div id="index.xml-egXML-d33e1141" class="pre egXML_valid"><span class="element">&lt;model <span class="attribute">behaviour</span>="<span class="attributevalue">inline</span>"/&gt;</span></div></td></tr><tr><td colspan="3"><div id="index.xml-egXML-d33e1144" class="pre egXML_valid"><span class="element">&lt;elementSpec <span class="attribute">mode</span>="<span class="attributevalue">change</span>" <span class="attribute">ident</span>="<span class="attributevalue">quote</span>"&gt;</span>
 <span class="element">&lt;model <span class="attribute">predicate</span>="<span class="attributevalue">ancestor::p</span>"
  <span class="attribute">behaviour</span>="<span class="attributevalue">inline</span>"&gt;</span>
  <span class="element">&lt;desc <span class="attribute">versionDate</span>="<span class="attributevalue">2015-08-21</span>"
   <span class="attribute">xml:lang</span>="<span class="attributevalue">en</span>"&gt;</span>If it's inside a paragraph then it's inline<span class="element">&lt;/desc&gt;</span>
 <span class="element">&lt;/model&gt;</span>
 <span class="element">&lt;model <span class="attribute">predicate</span>="<span class="attributevalue">not(ancestor::p)</span>"
  <span class="attribute">behaviour</span>="<span class="attributevalue">block</span>"&gt;</span>
  <span class="element">&lt;desc <span class="attribute">versionDate</span>="<span class="attributevalue">2015-08-21</span>"
   <span class="attribute">xml:lang</span>="<span class="attributevalue">en</span>"&gt;</span>If it's not inside a paragraph then it is block level<span class="element">&lt;/desc&gt;</span>
 <span class="element">&lt;/model&gt;</span>
<span class="element">&lt;/elementSpec&gt;</span></div></td></tr><tr><td colspan="3"><div id="index.xml-egXML-d33e1153" class="pre egXML_valid"><span class="element">&lt;model <span class="attribute">predicate</span>="<span class="attributevalue">parent::person</span>"
 <span class="attribute">behaviour</span>="<span class="attributevalue">inline</span>"&gt;</span>
 <span class="element">&lt;desc <span class="attribute">versionDate</span>="<span class="attributevalue">2015-08-21</span>"
  <span class="attribute">xml:lang</span>="<span class="attributevalue">en</span>"&gt;</span>If it is a child of a person element, treat as inline<span class="element">&lt;/desc&gt;</span>
<span class="element">&lt;/model&gt;</span></div></td></tr><tr><td colspan="3"><div id="index.xml-egXML-d33e1158" class="pre egXML_valid"><span class="element">&lt;model <span class="attribute">behaviour</span>="<span class="attributevalue">inline</span>"&gt;</span>
 <span class="element">&lt;outputRendition&gt;</span>font-weight:bold<span class="element">&lt;/outputRendition&gt;</span>
<span class="element">&lt;/model&gt;</span></div></td></tr><tr><td colspan="3"><div id="index.xml-egXML-d33e1163" class="pre egXML_valid"><span class="element">&lt;model <span class="attribute">behaviour</span>="<span class="attributevalue">inline</span>" <span class="attribute">output</span>="<span class="attributevalue">print</span>"/&gt;</span></div></td></tr><tr><td colspan="3"><div id="index.xml-egXML-d33e1166" class="pre egXML_valid"><span class="element">&lt;model <span class="attribute">predicate</span>="<span class="attributevalue">ancestor::p</span>"
 <span class="attribute">behaviour</span>="<span class="attributevalue">inline</span>"&gt;</span>
 <span class="element">&lt;param <span class="attribute">name</span>="<span class="attributevalue">content</span>"&gt;</span>@n<span class="element">&lt;/param&gt;</span>
<span class="element">&lt;/model&gt;</span></div></td></tr><tr><td colspan="3"><div id="index.xml-egXML-d33e1172" class="pre egXML_valid"><span class="element">&lt;model <span class="attribute">predicate</span>="<span class="attributevalue">parent::choice and count(parent::*/*) gt 1</span>"
 <span class="attribute">behaviour</span>="<span class="attributevalue">omit</span>"/&gt;</span></div></td></tr><tr><td colspan="3"><div id="index.xml-egXML-d33e1175" class="pre egXML_valid"><span class="element">&lt;elementSpec <span class="attribute">mode</span>="<span class="attributevalue">change</span>" <span class="attribute">ident</span>="<span class="attributevalue">date</span>"&gt;</span>
 <span class="element">&lt;model <span class="attribute">output</span>="<span class="attributevalue">print</span>" <span class="attribute">predicate</span>="<span class="attributevalue">text()</span>"
  <span class="attribute">behaviour</span>="<span class="attributevalue">inline</span>"/&gt;</span>
 <span class="element">&lt;model <span class="attribute">output</span>="<span class="attributevalue">print</span>"
  <span class="attribute">predicate</span>="<span class="attributevalue">@when and not(text())</span>" <span class="attribute">behaviour</span>="<span class="attributevalue">inline</span>"&gt;</span>
  <span class="element">&lt;param <span class="attribute">name</span>="<span class="attributevalue">content</span>"&gt;</span>@when<span class="element">&lt;/param&gt;</span>
 <span class="element">&lt;/model&gt;</span>
 <span class="element">&lt;model <span class="attribute">predicate</span>="<span class="attributevalue">@when</span>" <span class="attribute">output</span>="<span class="attributevalue">web</span>"
  <span class="attribute">behaviour</span>="<span class="attributevalue">alternate</span>"&gt;</span>
  <span class="element">&lt;param <span class="attribute">name</span>="<span class="attributevalue">default</span>"&gt;</span>.<span class="element">&lt;/param&gt;</span>
  <span class="element">&lt;param <span class="attribute">name</span>="<span class="attributevalue">alternate</span>"&gt;</span>@when<span class="element">&lt;/param&gt;</span>
 <span class="element">&lt;/model&gt;</span>
<span class="element">&lt;/elementSpec&gt;</span></div></td></tr><tr><td colspan="3"><div id="index.xml-egXML-d33e1187" class="pre egXML_valid"><span class="element">&lt;elementSpec <span class="attribute">mode</span>="<span class="attributevalue">change</span>" <span class="attribute">ident</span>="<span class="attributevalue">choice</span>"&gt;</span>
 <span class="element">&lt;model <span class="attribute">predicate</span>="<span class="attributevalue">sic and corr</span>"
  <span class="attribute">behaviour</span>="<span class="attributevalue">alternate</span>"&gt;</span>
  <span class="element">&lt;param <span class="attribute">name</span>="<span class="attributevalue">default</span>"&gt;</span>corr<span class="element">&lt;/param&gt;</span>
  <span class="element">&lt;param <span class="attribute">name</span>="<span class="attributevalue">alternate</span>"&gt;</span>sic<span class="element">&lt;/param&gt;</span>
 <span class="element">&lt;/model&gt;</span>
 <span class="element">&lt;model <span class="attribute">predicate</span>="<span class="attributevalue">abbr and expan</span>"
  <span class="attribute">behaviour</span>="<span class="attributevalue">alternate</span>"&gt;</span>
  <span class="element">&lt;param <span class="attribute">name</span>="<span class="attributevalue">default</span>"&gt;</span>expan<span class="element">&lt;/param&gt;</span>
  <span class="element">&lt;param <span class="attribute">name</span>="<span class="attributevalue">alternate</span>"&gt;</span>abbr<span class="element">&lt;/param&gt;</span>
 <span class="element">&lt;/model&gt;</span>
 <span class="element">&lt;model <span class="attribute">predicate</span>="<span class="attributevalue">orig and reg</span>"
  <span class="attribute">behaviour</span>="<span class="attributevalue">alternate</span>"&gt;</span>
  <span class="element">&lt;param <span class="attribute">name</span>="<span class="attributevalue">default</span>"&gt;</span>reg<span class="element">&lt;/param&gt;</span>
  <span class="element">&lt;param <span class="attribute">name</span>="<span class="attributevalue">alternate</span>"&gt;</span>orig<span class="element">&lt;/param&gt;</span>
 <span class="element">&lt;/model&gt;</span>
<span class="element">&lt;/elementSpec&gt;</span></div></td></tr><p>The <span class="gi">&lt;model&gt;</span> element may be used in customizations to document an intended processing output. There is no assumption that allpossible processing outputs will be documented since this is impossible.</p></table></td></tr><tr><td>&lt;<span class="green">modelSequence</span>&gt;</td><td><table class="border"><tr><td colspan="3"><span lang="en" class="gloss" itemprop="gloss">sequence of processing model </span>a group of model elements documenting intended processing models for this element, to be acted upon in sequence</td></tr><tr><td>Classes</td><td colspan="2"><ul>att.global</ul></td></tr><tr><td colspan="3"><div class="pre">
<span class="element">&lt;sequence&gt;</span>
<span class="element">&lt;alternate <span class="attribute">minOccurs</span>="<span class="attributevalue">0</span>"
 <span class="attribute">maxOccurs</span>="<span class="attributevalue">unbounded</span>"&gt;</span>
<span class="element">&lt;classRef <span class="attribute">key</span>="<span class="attributevalue">model.glossLike</span>"/&gt;</span>
<span class="element">&lt;classRef <span class="attribute">key</span>="<span class="attributevalue">model.descLike</span>"/&gt;</span><span class="element">&lt;/alternate&gt;</span>
<span class="element">&lt;alternate <span class="attribute">maxOccurs</span>="<span class="attributevalue">unbounded</span>"&gt;</span>
<span class="element">&lt;elementRef <span class="attribute">key</span>="<span class="attributevalue">model</span>"/&gt;</span>
<span class="element">&lt;elementRef <span class="attribute">key</span>="<span class="attributevalue">model</span>"/&gt;</span><span class="element">&lt;/alternate&gt;</span><span class="element">&lt;/sequence&gt;</span></div></td></tr><tr><td>@<span class="green">predicate</span></td><td><table class="border"><tr><td colspan="3">the condition under which this model applies given as an XPath Predicate Expression</td></tr></table></td></tr><tr><td>@<span class="green">useSourceRendition</span></td><td><table class="border"><tr><td colspan="3">whether to obey any rendition attribute which is present</td></tr></table></td></tr><tr><td>@<span class="green">output</span></td><td><table class="border"><tr><td colspan="3">the intended output method</td></tr><tr xmlns=""><td><span xmlns="http://www.w3.org/1999/xhtml" class="green">web</span></td><td>the output is intended for presentation in a web format</td></tr><tr xmlns=""><td><span xmlns="http://www.w3.org/1999/xhtml" class="green">print</span></td><td>the output is intended for presentation in a print format</td></tr><tr xmlns=""><td><span xmlns="http://www.w3.org/1999/xhtml" class="green">plaintext</span></td><td>the output is intended for presentation in a plain text format</td></tr></table></td></tr><tr><td colspan="3"><div id="index.xml-egXML-d33e1272" class="pre egXML_valid"><span class="element">&lt;modelGrp <span class="attribute">output</span>="<span class="attributevalue">print</span>"&gt;</span>
 <span class="element">&lt;modelSequence&gt;</span>
  <span class="element">&lt;model <span class="attribute">behaviour</span>="<span class="attributevalue">inline</span>"&gt;</span>
   <span class="element">&lt;param <span class="attribute">name</span>="<span class="attributevalue">content</span>"&gt;</span>@n<span class="element">&lt;/param&gt;</span>
  <span class="element">&lt;/model&gt;</span>
  <span class="element">&lt;model <span class="attribute">behaviour</span>="<span class="attributevalue">note</span>"&gt;</span>
   <span class="element">&lt;param <span class="attribute">name</span>="<span class="attributevalue">place</span>"&gt;</span>'foot'<span class="element">&lt;/param&gt;</span>
  <span class="element">&lt;/model&gt;</span>
 <span class="element">&lt;/modelSequence&gt;</span>
<span class="element">&lt;/modelGrp&gt;</span></div></td></tr><p>The <span class="gi">&lt;modelSequence&gt;</span> element groups <span class="gi">&lt;model&gt;</span> elements which document processing models that are intended to be acted upon in sequence.</p></table></td></tr><tr><td>&lt;<span class="green">modelGrp</span>&gt;</td><td><table class="border"><tr><td colspan="3"><span lang="en" class="gloss" itemprop="gloss">processing model group</span>a group of model elements documenting intended processing models for this element</td></tr><tr><td>Classes</td><td colspan="2"><ul>att.global</ul></td></tr><tr><td colspan="3"><div class="pre">
<span class="element">&lt;sequence&gt;</span>
<span class="element">&lt;alternate <span class="attribute">maxOccurs</span>="<span class="attributevalue">unbounded</span>"&gt;</span>
<span class="element">&lt;classRef <span class="attribute">key</span>="<span class="attributevalue">model.glossLike</span>"/&gt;</span>
<span class="element">&lt;classRef <span class="attribute">key</span>="<span class="attributevalue">model.descLike</span>"/&gt;</span><span class="element">&lt;/alternate&gt;</span>
<span class="element">&lt;elementRef <span class="attribute">key</span>="<span class="attributevalue">outputRendition</span>"
 <span class="attribute">minOccurs</span>="<span class="attributevalue">0</span>"/&gt;</span>
<span class="element">&lt;alternate <span class="attribute">minOccurs</span>="<span class="attributevalue">1</span>"
 <span class="attribute">maxOccurs</span>="<span class="attributevalue">unbounded</span>"&gt;</span>
<span class="element">&lt;elementRef <span class="attribute">key</span>="<span class="attributevalue">modelSequence</span>"/&gt;</span>
<span class="element">&lt;elementRef <span class="attribute">key</span>="<span class="attributevalue">model</span>"/&gt;</span><span class="element">&lt;/alternate&gt;</span><span class="element">&lt;/sequence&gt;</span></div></td></tr><tr><td>@<span class="green">useSourceRendition</span></td><td><table class="border"><tr><td colspan="3">whether to obey any rendition attribute which is present</td></tr></table></td></tr><tr><td>@<span class="green">output</span></td><td><table class="border"><tr><td colspan="3">the intended output method</td></tr><tr xmlns=""><td><span xmlns="http://www.w3.org/1999/xhtml" class="green">web</span></td><td>the output is intended for presentation in a web format</td></tr><tr xmlns=""><td><span xmlns="http://www.w3.org/1999/xhtml" class="green">print</span></td><td>the output is intended for presentation in a print format</td></tr><tr xmlns=""><td><span xmlns="http://www.w3.org/1999/xhtml" class="green">plaintext</span></td><td>the output is intended for presentation in a plain text format</td></tr></table></td></tr><tr><td colspan="3"><div id="index.xml-egXML-d33e1347" class="pre egXML_valid"><span class="element">&lt;elementSpec <span class="attribute">mode</span>="<span class="attributevalue">change</span>" <span class="attribute">ident</span>="<span class="attributevalue">abbr</span>"&gt;</span>
 <span class="element">&lt;modelGrp <span class="attribute">output</span>="<span class="attributevalue">web</span>"&gt;</span>
  <span class="element">&lt;model <span class="attribute">predicate</span>="<span class="attributevalue">parent::choice</span>"
   <span class="attribute">behaviour</span>="<span class="attributevalue">omit</span>"/&gt;</span>
  <span class="element">&lt;model <span class="attribute">predicate</span>="<span class="attributevalue">ancestor::front</span>"
   <span class="attribute">behaviour</span>="<span class="attributevalue">inline</span>"&gt;</span>
   <span class="element">&lt;outputRendition&gt;</span>font-style:italic; <span class="element">&lt;/outputRendition&gt;</span>
  <span class="element">&lt;/model&gt;</span>
  <span class="element">&lt;model <span class="attribute">predicate</span>="<span class="attributevalue">not(parent::choice)</span>"
   <span class="attribute">behaviour</span>="<span class="attributevalue">inline</span>"&gt;</span>
   <span class="element">&lt;outputRendition <span class="attribute">scope</span>="<span class="attributevalue">before</span>"&gt;</span>content: ' ('<span class="element">&lt;/outputRendition&gt;</span>
   <span class="element">&lt;outputRendition <span class="attribute">scope</span>="<span class="attributevalue">after</span>"&gt;</span>content: ')'<span class="element">&lt;/outputRendition&gt;</span>
  <span class="element">&lt;/model&gt;</span>
 <span class="element">&lt;/modelGrp&gt;</span>
 <span class="element">&lt;modelGrp <span class="attribute">output</span>="<span class="attributevalue">print</span>"&gt;</span>
  <span class="element">&lt;model <span class="attribute">predicate</span>="<span class="attributevalue">parent::choice</span>"
   <span class="attribute">behaviour</span>="<span class="attributevalue">omit</span>"/&gt;</span>
  <span class="element">&lt;model <span class="attribute">predicate</span>="<span class="attributevalue">not(parent::choice)</span>"
   <span class="attribute">behaviour</span>="<span class="attributevalue">note</span>"&gt;</span>
   <span class="element">&lt;param <span class="attribute">name</span>="<span class="attributevalue">place</span>"&gt;</span>'foot'<span class="element">&lt;/param&gt;</span>
  <span class="element">&lt;/model&gt;</span>
 <span class="element">&lt;/modelGrp&gt;</span>
<span class="element">&lt;/elementSpec&gt;</span></div></td></tr><tr><td colspan="3"><div id="index.xml-egXML-d33e1365" class="pre egXML_valid"><span class="element">&lt;modelGrp <span class="attribute">output</span>="<span class="attributevalue">print</span>"&gt;</span>
 <span class="element">&lt;modelSequence&gt;</span>
  <span class="element">&lt;model <span class="attribute">behaviour</span>="<span class="attributevalue">inline</span>"&gt;</span>
   <span class="element">&lt;param <span class="attribute">name</span>="<span class="attributevalue">content</span>"&gt;</span>@n<span class="element">&lt;/param&gt;</span>
  <span class="element">&lt;/model&gt;</span>
  <span class="element">&lt;model <span class="attribute">behaviour</span>="<span class="attributevalue">note</span>"&gt;</span>
   <span class="element">&lt;param <span class="attribute">name</span>="<span class="attributevalue">place</span>"&gt;</span>'foot'<span class="element">&lt;/param&gt;</span>
  <span class="element">&lt;/model&gt;</span>
 <span class="element">&lt;/modelSequence&gt;</span>
<span class="element">&lt;/modelGrp&gt;</span></div></td></tr><p>The <span class="gi">&lt;modelGrp&gt;</span> element may be used to group <span class="gi">&lt;model&gt;</span> elements for any purpose but if doing so by major output format (web, print, plaintext) then the <span xmlns="" class="att" itemprop="att">output</span> attribute should be used.</p></table></td></tr><tr><td>&lt;<span class="green">outputRendition</span>&gt;</td><td><table class="border"><tr><td colspan="3">supplies information about the desired output rendition, format, or appearance of one or more elements in the source text.</td></tr><tr><td>Classes</td><td colspan="2"><ul>att.globalmodel.oddDecl</ul></td></tr><tr><td colspan="3"><div class="pre">
<span class="element">&lt;textNode/&gt;</span></div></td></tr><tr><td>@<span class="green">scope</span></td><td><table class="border"><tr><td colspan="3">provides a way of defining ‘pseudo-elements’, that is, styling rules applicable to specific sub-portions of an element.</td></tr><tr xmlns=""><td><span xmlns="http://www.w3.org/1999/xhtml" class="green">first-line</span></td><td>styling applies to the first line of
the target element</td></tr><tr xmlns=""><td><span xmlns="http://www.w3.org/1999/xhtml" class="green">first-letter</span></td><td>styling applies to the first letter of
the target element</td></tr><tr xmlns=""><td><span xmlns="http://www.w3.org/1999/xhtml" class="green">before</span></td><td>styling should be applied immediately before
the content of the target element</td></tr><tr xmlns=""><td><span xmlns="http://www.w3.org/1999/xhtml" class="green">after</span></td><td>styling should be applied immediately after
the content of
the target element</td></tr></table></td></tr><tr><td colspan="3"><div id="index.xml-egXML-d33e1424" class="pre egXML_valid"><span class="element">&lt;model <span class="attribute">predicate</span>="<span class="attributevalue">ancestor::p</span>"
 <span class="attribute">behaviour</span>="<span class="attributevalue">inline</span>"&gt;</span>
 <span class="element">&lt;outputRendition&gt;</span>font-style: italic;<span class="element">&lt;/outputRendition&gt;</span>
<span class="element">&lt;/model&gt;</span>
<span class="element">&lt;model <span class="attribute">behaviour</span>="<span class="attributevalue">block</span>"&gt;</span>
 <span class="element">&lt;outputRendition&gt;</span>left-margin: 2em;<span class="element">&lt;/outputRendition&gt;</span>
<span class="element">&lt;/model&gt;</span></div></td></tr><p>The <span class="gi">&lt;outputRendition&gt;</span> element differs from the <span class="gi">&lt;rendition&gt;</span> element: the former documents rendering information in one or more possible outputs, usually recorded in the TEI customization file, the latter must only be used to document the original rendition of the source text.</p></table></td></tr></table></section><section class="teidiv0" id="index.xml-back.1_div.2"><header><h1><span class="headingNumber">Appendix B </span><span class="head" itemprop="head">Changes to the TEI</span></h1></header><p><b>Specification group [changes]</b></p><table class="border"><tr><td>&lt;<span class="orange">elementSpec</span>&gt;</td><td><table class="border"><tr><td colspan="3"><div class="pre">
<span class="element">&lt;sequence&gt;</span>
<span class="element">&lt;alternate <span class="attribute">minOccurs</span>="<span class="attributevalue">0</span>"
 <span class="attribute">maxOccurs</span>="<span class="attributevalue">unbounded</span>"&gt;</span>
<span class="element">&lt;classRef <span class="attribute">key</span>="<span class="attributevalue">model.glossLike</span>"/&gt;</span>
<span class="element">&lt;classRef <span class="attribute">key</span>="<span class="attributevalue">model.descLike</span>"/&gt;</span><span class="element">&lt;/alternate&gt;</span>
<span class="element">&lt;classRef <span class="attribute">key</span>="<span class="attributevalue">classes</span>" <span class="attribute">minOccurs</span>="<span class="attributevalue">0</span>"/&gt;</span>
<span class="element">&lt;classRef <span class="attribute">key</span>="<span class="attributevalue">content</span>" <span class="attribute">minOccurs</span>="<span class="attributevalue">0</span>"/&gt;</span>
<span class="element">&lt;classRef <span class="attribute">key</span>="<span class="attributevalue">valList</span>" <span class="attribute">minOccurs</span>="<span class="attributevalue">0</span>"/&gt;</span>
<span class="element">&lt;classRef <span class="attribute">key</span>="<span class="attributevalue">constraintSpec</span>"
 <span class="attribute">maxOccurs</span>="<span class="attributevalue">unbounded</span>" <span class="attribute">minOccurs</span>="<span class="attributevalue">0</span>"/&gt;</span>
<span class="element">&lt;classRef <span class="attribute">key</span>="<span class="attributevalue">attList</span>" <span class="attribute">minOccurs</span>="<span class="attributevalue">0</span>"/&gt;</span>
<span class="element">&lt;alternate <span class="attribute">maxOccurs</span>="<span class="attributevalue">unbounded</span>"
 <span class="attribute">minOccurs</span>="<span class="attributevalue">0</span>"&gt;</span>
<span class="element">&lt;elementRef <span class="attribute">key</span>="<span class="attributevalue">model</span>"/&gt;</span>
<span class="element">&lt;elementRef <span class="attribute">key</span>="<span class="attributevalue">modelGrp</span>"/&gt;</span>
<span class="element">&lt;elementRef <span class="attribute">key</span>="<span class="attributevalue">modelSequence</span>"/&gt;</span><span class="element">&lt;/alternate&gt;</span>
<span class="element">&lt;classRef <span class="attribute">key</span>="<span class="attributevalue">exemplum</span>"
 <span class="attribute">maxOccurs</span>="<span class="attributevalue">unbounded</span>" <span class="attribute">minOccurs</span>="<span class="attributevalue">0</span>"/&gt;</span>
<span class="element">&lt;classRef <span class="attribute">key</span>="<span class="attributevalue">remarks</span>"
 <span class="attribute">maxOccurs</span>="<span class="attributevalue">unbounded</span>" <span class="attribute">minOccurs</span>="<span class="attributevalue">0</span>"/&gt;</span>
<span class="element">&lt;classRef <span class="attribute">key</span>="<span class="attributevalue">listRef</span>"
 <span class="attribute">maxOccurs</span>="<span class="attributevalue">unbounded</span>" <span class="attribute">minOccurs</span>="<span class="attributevalue">0</span>"/&gt;</span><span class="element">&lt;/sequence&gt;</span></div></td></tr></table></td></tr><tr><td>&lt;<span class="orange">valItem</span>&gt;</td><td><table class="border"><tr><td colspan="3"><div class="pre">
<span class="element">&lt;alternate <span class="attribute">maxOccurs</span>="<span class="attributevalue">unbounded</span>"
 <span class="attribute">minOccurs</span>="<span class="attributevalue">0</span>"&gt;</span>
<span class="element">&lt;classRef <span class="attribute">key</span>="<span class="attributevalue">model.descLike</span>"/&gt;</span>
<span class="element">&lt;classRef <span class="attribute">key</span>="<span class="attributevalue">model.glossLike</span>"/&gt;</span><span class="element">&lt;/alternate&gt;</span>
<span class="element">&lt;elementRef <span class="attribute">key</span>="<span class="attributevalue">paramList</span>" <span class="attribute">minOccurs</span>="<span class="attributevalue">0</span>"
 <span class="attribute">maxOccurs</span>="<span class="attributevalue">1</span>"/&gt;</span></div></td></tr></table></td></tr></table></section><section class="teidiv0" id="index.xml-back.1_div.3"><header><h1><span class="headingNumber">Appendix C </span><span class="head" itemprop="head">Schema for processing extended ODD</span></h1></header><p><b>Specification []</b></p><table class="border"><tr><td>Module: header</td></tr><tr><td>Module: core</td></tr><tr><td>Module: tei</td></tr><tr><td>Module: textstructure</td></tr><tr><td>Module: tagdocs</td></tr><tr><td>Module: figures</td></tr><tr><td>Module: linking</td></tr><tr><td>&lt;<span class="orange">egXML</span>&gt;</td><td><table class="border"><tr><td colspan="3"><div class="pre">
<span class="element">&lt;rng:oneOrMore&gt;</span>
<span class="element">&lt;rng:choice&gt;</span>
 <span class="element">&lt;rng:text/&gt;</span>
 <span class="element">&lt;rng:anyName/&gt;</span>
<span class="element">&lt;/rng:choice&gt;</span>
<span class="element">&lt;/rng:oneOrMore&gt;</span></div></td></tr></table></td></tr></table></section></div><div class="stdfooter autogenerated"><div class="footer"><!--standard links to project, institution etc--><a class="plain" href="http://www.tei-c.org/">TEI</a> <a class="plain" href="/">Home</a> </div><address>Sebastian Rahtz, James Cummings, Brian Pytlik Zillig, and Magdalena Turska.
Date: 1970-01-01<br/><!--
Generated from index.xml using XSLT stylesheets version 0
based on http://www.tei-c.org/Stylesheets/
on 1970-01-01.
SAXON.
--></address></div></body></html>