FAND2 replace

This ODD demonstrates how to remove numbered &lt;div>s without causing non-deterministic DTDs to be generated. We do this by re-writing the content models of &lt;front>, &lt;body>, and &lt;back>. The advantage is this works quite well. The disadvantage is that if the original content model of any of those elements is changed (e.g., by a bug-fix released by TEI), we need to update the content model here correspondingly.

 <?oxygen RNGSchema="http://www.tei-c.org/release/xml/tei/custom/schema/relaxng/tei_odds.rnc" type="compact"?>     FAND Front Against Numbered Divs via replacing content models Syd Bauman   Intended for publication as an example for TEI users. No warrantee express or implied.   Based on TEI Lite (from Sourceforge revision r1953 of )    started  

This ODD is intended as an example of how to replace the content models of <gi>front</gi>, <gi>body</gi>, and <gi>back</gi> so that one can rid a schema of numbered <gi>div</gi>s and simultaneously avoid non-deterministic DTDs. It is not intended to be actually used for encoding.

<schemaSpec ident="teiFandReplace" start="teiCorpus TEI text body">

<moduleRef key="tei"/> <moduleRef key="core"/> <moduleRef key="header"/> <moduleRef key="textstructure"/> <moduleRef key="figures"/> <moduleRef key="linking"/> <moduleRef key="analysis"/> <moduleRef key="tagdocs"/>

<elementSpec ident="front" mode="change" module="textxtructure"> <rng:group xmlns:rng="http://relaxng.org/ns/structure/1.0"> <rng:zeroOrMore> <rng:choice> <rng:ref name="model.frontPart"/> <rng:ref name="model.global"/> </rng:choice> </rng:zeroOrMore> <rng:optional> <rng:choice> <rng:group> <rng:group> <rng:ref name="model.pLike.front"/> </rng:group> <rng:zeroOrMore> <rng:choice> <rng:ref name="model.pLike.front"/> <rng:ref name="titlePage"/> <rng:ref name="model.global"/> </rng:choice> </rng:zeroOrMore> </rng:group> <rng:group> <rng:ref name="div"/> <rng:zeroOrMore> <rng:choice> <rng:ref name="div"/> <rng:ref name="model.frontPart"/> <rng:ref name="model.global"/> </rng:choice> </rng:zeroOrMore> </rng:group> </rng:choice> </rng:optional> </rng:group> </elementSpec> <elementSpec ident="body" mode="change" module="textstructure"> <rng:group> <rng:zeroOrMore> <rng:choice> <rng:ref name="model.divWrapper"/> <rng:ref name="model.global"/> </rng:choice> </rng:zeroOrMore> <rng:choice> <rng:group> <rng:oneOrMore> <rng:group> <rng:ref name="macro.component"/> </rng:group> <rng:zeroOrMore> <rng:ref name="model.global"/> </rng:zeroOrMore> </rng:oneOrMore> <rng:group> <rng:zeroOrMore> <rng:ref name="divGen"/> <rng:zeroOrMore> <rng:ref name="model.global"/> </rng:zeroOrMore> </rng:zeroOrMore> <rng:optional> <rng:choice> <rng:group> <rng:ref name="div"/> <rng:zeroOrMore> <rng:choice> <rng:ref name="div"/> <rng:ref name="divGen"/> <rng:ref name="model.global"/> </rng:choice> </rng:zeroOrMore> </rng:group> </rng:choice> </rng:optional> </rng:group> </rng:group> <rng:group> <rng:zeroOrMore> <rng:ref name="divGen"/> <rng:zeroOrMore> <rng:ref name="model.global"/> </rng:zeroOrMore> </rng:zeroOrMore> <rng:choice> <rng:group> <rng:ref name="div"/> <rng:zeroOrMore> <rng:choice> <rng:ref name="div"/> <rng:ref name="divGen"/> <rng:ref name="model.global"/> </rng:choice> </rng:zeroOrMore> </rng:group> </rng:choice> </rng:group> </rng:choice> <rng:zeroOrMore> <rng:ref name="model.divWrapper.bottom"/> </rng:zeroOrMore> </rng:group> </elementSpec> <elementSpec ident="back" mode="change" module="textstructure"> <rng:group xmlns:rng="http://relaxng.org/ns/structure/1.0"> <rng:zeroOrMore> <rng:choice> <rng:ref name="model.frontPart"/> <rng:ref name="model.global"/> <rng:ref name="model.divWrapper"/> </rng:choice> </rng:zeroOrMore> <rng:optional> <rng:choice> <rng:group> <rng:ref name="div"/> <rng:zeroOrMore> <rng:choice> <rng:ref name="div"/> <rng:ref name="model.frontPart"/> <rng:ref name="model.global"/> </rng:choice> </rng:zeroOrMore> </rng:group> </rng:choice> </rng:optional> <rng:zeroOrMore> <rng:ref name="model.divWrapper.bottom"/> </rng:zeroOrMore> </rng:group> </elementSpec>

<elementSpec ident="ab" mode="delete" module="linking"/> <elementSpec ident="altGrp" mode="delete" module="linking"/> <elementSpec ident="altIdent" mode="delete" module="tagdocs"/> <elementSpec ident="alt" mode="delete" module="linking"/> <elementSpec ident="analytic" mode="delete" module="core"/> <elementSpec ident="attDef" mode="delete" module="tagdocs"/> <elementSpec ident="attList" mode="delete" module="tagdocs"/> <elementSpec ident="attRef" mode="delete" module="tagdocs"/> <elementSpec ident="biblItem" mode="delete" module="core"/> <elementSpec ident="biblStruct" mode="delete" module="core"/> <elementSpec ident="binaryObject" mode="delete" module="core"/> <elementSpec ident="broadcast" mode="delete" module="header"/> <elementSpec ident="cb" mode="delete" module="core"/> <elementSpec ident="classes" mode="delete" module="tagdocs"/> <elementSpec ident="classSpec" mode="delete" module="tagdocs"/> <elementSpec ident="cl" mode="delete" module="analysis"/> <elementSpec ident="c" mode="delete" module="analysis"/> <elementSpec ident="content" mode="delete" module="tagdocs"/> <elementSpec ident="correction" mode="delete" module="header"/> <elementSpec ident="datatype" mode="delete" module="tagdocs"/> <elementSpec ident="defaultVal" mode="delete" module="tagdocs"/> <elementSpec ident="desc" mode="delete" module="core"/> <elementSpec ident="distinct" mode="delete" module="core"/> <elementSpec ident="div0" module="textstructure" mode="delete"/> <elementSpec ident="div1" module="textstructure" mode="delete"/> <elementSpec ident="div2" module="textstructure" mode="delete"/> <elementSpec ident="div3" module="textstructure" mode="delete"/> <elementSpec ident="div4" module="textstructure" mode="delete"/> <elementSpec ident="div5" module="textstructure" mode="delete"/> <elementSpec ident="div6" module="textstructure" mode="delete"/> <elementSpec ident="div7" module="textstructure" mode="delete"/> <elementSpec ident="egXML" mode="delete" module="tagdocs"/> <elementSpec ident="elementSpec" mode="delete" module="tagdocs"/> <elementSpec ident="equipment" mode="delete" module="header"/> <elementSpec ident="equiv" mode="delete" module="core"/> <elementSpec ident="exemplum" mode="delete" module="tagdocs"/> <elementSpec ident="fsdDecl" mode="delete" module="header"/> <elementSpec ident="headItem" mode="delete" module="core"/> <elementSpec ident="headLabel" mode="delete" module="core"/> <elementSpec ident="hyphenation" mode="delete" module="header"/> <elementSpec ident="imprimatur" mode="delete" module="textstructure"/> <elementSpec ident="interpretation" mode="delete" module="header"/> <elementSpec ident="joinGrp" mode="delete" module="linking"/> <elementSpec ident="join" mode="delete" module="linking"/> <elementSpec ident="linkGrp" mode="delete" module="linking"/> <elementSpec ident="link" mode="delete" module="linking"/> <elementSpec ident="listRef" mode="delete" module="tagdocs"/> <elementSpec ident="macroSpec" mode="delete" module="tagdocs"/> <elementSpec ident="measure" mode="delete" module="core"/> <elementSpec ident="meeting" mode="delete" module="core"/> <elementSpec ident="memberOf" mode="delete" module="tagdocs"/> <elementSpec ident="metDecl" mode="delete" module="header"/> <elementSpec ident="metSym" mode="delete" module="header"/> <elementSpec ident="m" mode="delete" module="analysis"/> <elementSpec ident="moduleRef" mode="delete" module="tagdocs"/> <elementSpec ident="moduleSpec" mode="delete" module="tagdocs"/> <elementSpec ident="monogr" mode="delete" module="core"/> <elementSpec ident="normalization" mode="delete" module="header"/> <elementSpec ident="phr" mode="delete" module="analysis"/> <elementSpec ident="postBox" mode="delete" module="core"/> <elementSpec ident="postCode" mode="delete" module="core"/> <elementSpec ident="quotation" mode="delete" module="header"/> <elementSpec ident="quote" mode="delete" module="core"/> <elementSpec ident="recording" mode="delete" module="header"/> <elementSpec ident="recordingStmt" mode="delete" module="header"/> <elementSpec ident="remarks" mode="delete" module="tagdocs"/> <elementSpec ident="schemaSpec" mode="delete" module="tagdocs"/> <elementSpec ident="scriptStmt" mode="delete" module="header"/> <elementSpec ident="segmentation" mode="delete" module="header"/> <elementSpec ident="series" mode="delete" module="core"/> <elementSpec ident="spanGrp" mode="delete" module="analysis"/> <elementSpec ident="span" mode="delete" module="analysis"/> <elementSpec ident="specDesc" mode="delete" module="tagdocs"/> <elementSpec ident="specGrp" mode="delete" module="tagdocs"/> <elementSpec ident="specGrpRef" mode="delete" module="tagdocs"/> <elementSpec ident="specList" mode="delete" module="tagdocs"/> <elementSpec ident="state" mode="delete" module="header"/> <elementSpec ident="stdVals" mode="delete" module="header"/> <elementSpec ident="street" mode="delete" module="core"/> <elementSpec ident="stringVal" mode="delete" module="tagdocs"/> <elementSpec ident="tag" mode="delete" module="tagdocs"/> <elementSpec ident="tagsDecl" mode="delete" module="header"/> <elementSpec ident="timeline" mode="delete" module="linking"/> <elementSpec ident="valDesc" mode="delete" module="tagdocs"/> <elementSpec ident="valItem" mode="delete" module="tagdocs"/> <elementSpec ident="valList" mode="delete" module="tagdocs"/> <elementSpec ident="variantEncoding" mode="delete" module="header"/> <elementSpec ident="when" mode="delete" module="linking"/> <elementSpec ident="w" mode="delete" module="analysis"/> </schemaSpec> </TEI>