Difference between revisions of "FAND2 replace"
Jump to navigation
Jump to search
(initial check-in) |
Piotr Banski (talk | contribs) m (+ link to ODD) |
||
Line 1: | Line 1: | ||
− | This ODD demonstrates how to remove numbered <div>s without | + | This [[ODD]] demonstrates how to remove numbered <div>s without |
causing non-deterministic DTDs to be generated. We do this by | causing non-deterministic DTDs to be generated. We do this by | ||
re-writing the content models of <front>, <body>, and | re-writing the content models of <front>, <body>, and |
Revision as of 18:45, 3 April 2007
This ODD demonstrates how to remove numbered <div>s without causing non-deterministic DTDs to be generated. We do this by re-writing the content models of <front>, <body>, and <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.
<?xml version="1.0"?> <?oxygen RNGSchema="http://www.tei-c.org/release/xml/tei/custom/schema/relaxng/tei_odds.rnc" type="compact"?> <TEI xmlns="http://www.tei-c.org/ns/1.0" xmlns:rng="http://relaxng.org/ns/structure/1.0" xml:lang="en"> <teiHeader> <fileDesc> <titleStmt> <title> <choice> <abbr>FAND</abbr> <expan>Front Against Numbered Divs</expan> </choice> via replacing content models </title> <author>Syd Bauman</author> </titleStmt> <publicationStmt> <p>Intended for publication as an example for TEI users. No warrantee express or implied.</p> </publicationStmt> <sourceDesc> <p>Based on TEI Lite (from Sourceforge revision r1953 of <date value="2006-12-05T02:35:47-05:00"/>)</p> </sourceDesc> </fileDesc> <revisionDesc> <change who="#sbauman.emt" date="2006-12-15T09:50">started</change> </revisionDesc> </teiHeader> <text> <body> <p>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.</p> <schemaSpec ident="teiFandReplace" start="teiCorpus TEI text body"> <!-- Note that instances that use <text> or <body> as the --> <!-- root element are definitionally not conforming TEI --> <!-- documents; nonetheless, doing so can be very useful --> <!-- for testing. --> <!-- modules: same as for TEI Lite --> <moduleRef key="tei"/> <moduleRef key="core"/> <moduleRef key="header"/> <moduleRef key="textstructure"/> <moduleRef key="figures"/> <moduleRef key="linking"/> <moduleRef key="analysis"/> <moduleRef key="tagdocs"/> <!-- FAND: redefine content of <front> --> <elementSpec ident="front" mode="change" module="textxtructure"> <content> <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> <!-- this comment is the FAND difference <rng:group> <rng:ref name="div1"/> <rng:zeroOrMore> <rng:choice> <rng:ref name="div1"/> <rng:ref name="model.frontPart"/> <rng:ref name="model.global"/> </rng:choice> </rng:zeroOrMore> </rng:group> end FAND fix --> </rng:choice> </rng:optional> </rng:group> </content> </elementSpec> <!-- FAND: redefine content of <body> --> <elementSpec ident="body" mode="change" module="textstructure"> <content> <rng:group> <!-- this <group> exists just so odd2dtd can get parens in right place --> <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> <!-- FAND strikes again <rng:group> <rng:ref name="div0"/> <rng:zeroOrMore> <rng:choice> <rng:ref name="div0"/> <rng:ref name="divGen"/> <rng:ref name="model.global"/> </rng:choice> </rng:zeroOrMore> </rng:group> <rng:group> <rng:ref name="div1"/> <rng:zeroOrMore> <rng:choice> <rng:ref name="div1"/> <rng:ref name="divGen"/> <rng:ref name="model.global"/> </rng:choice> </rng:zeroOrMore> </rng:group> end FAND deletion --> </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> <!-- FAND removes the following <rng:group> <rng:ref name="div0"/> <rng:zeroOrMore> <rng:choice> <rng:ref name="div0"/> <rng:ref name="divGen"/> <rng:ref name="model.global"/> </rng:choice> </rng:zeroOrMore> </rng:group> <rng:group> <rng:ref name="div1"/> <rng:zeroOrMore> <rng:choice> <rng:ref name="div1"/> <rng:ref name="divGen"/> <rng:ref name="model.global"/> </rng:choice> </rng:zeroOrMore> </rng:group> end FAND deletion --> </rng:choice> </rng:group> </rng:choice> <rng:zeroOrMore> <rng:ref name="model.divWrapper.bottom"/> </rng:zeroOrMore> </rng:group> </content> </elementSpec> <!-- FAND: redefine content of <back> --> <elementSpec ident="back" mode="change" module="textstructure"> <content> <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> <!-- FAND strikes this section out <rng:group> <rng:ref name="div1"/> <rng:zeroOrMore> <rng:choice> <rng:ref name="div1"/> <rng:ref name="model.frontPart"/> <rng:ref name="model.global"/> </rng:choice> </rng:zeroOrMore> </rng:group> end FAND deletion --> </rng:choice> </rng:optional> <rng:zeroOrMore> <rng:ref name="model.divWrapper.bottom"/> </rng:zeroOrMore> </rng:group> </content> </elementSpec> <!-- element deletion: same as for TEI Lite --> <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> </body> </text> </TEI>