FAND1 hack

From TEIWiki
Revision as of 04:53, 28 December 2007 by CnaraCacel (talk | contribs) (riccna)
Jump to navigation Jump to search

boorletoele This is an ODD hack that one can use to generate a TEI schema that does not (really) have numbered <div>s, but also has deterministic DTD content models.

The basic idea is that we don't actually delete <div0> and <div1>, but rather rename them to something that should never actually interfere with our TEI encoding.

<?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 for the Abolition of Numbered Divs</expan>
          </choice> realized via a hack </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 use a hack to 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="teiFandHack" 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: rename <div0> and <div1> -->
        <elementSpec ident="div0" module="textstructure" mode="replace">
          <altIdent>DO_NOT_USE_THIS</altIdent>
          <gloss>unused stub</gloss>
          <desc>This element exists for the sole purpose of permitting DTDs
            generated to have deterministic content models. As the name implies,
            this element should never actually be used in a document instance.</desc>
          <classes/>
          <content>
            <rng:empty/>
          </content>
        </elementSpec>
        <elementSpec ident="div1" module="textstructure" mode="replace">
          <altIdent>DO_NOT_USE_ME</altIdent>
          <gloss>unused stub</gloss>
          <desc>This element exists for the sole purpose of permitting DTDs
            generated to have deterministic content models. As the name implies,
            this element should never actually be used in a document instance.</desc>
          <classes/>
          <content>
            <rng:empty/>
          </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="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>