<?xml version="1.0" encoding="utf-8"?>
<declarations>
  <dtd relSysId="split-example.dtd" 
    systemId="file:///home/maloneyc/git/NCBITools/DtdAnalyzer/test/split-example/split-example.dtd"
    publicId="-//NLM//external dtd dummy public id//EN">
    <annotations>
      <annotation type='note'>
        <p>
          This is a sample DTD to illustrate and to test various features of the
          DtdAnalyzer.
        </p>
        <p>
          This is the main ".dtd" module of this DTD.  These notes will be inserted into
          the main index.html page of the documenation.  Note that since this is the main
          module, we should use the "!dtd" annotations, and not any "!module" annotations
          here.
        </p>
      </annotation>
    </annotations>
  </dtd>
  
  <elements>
    <element name="split" dtdOrder="1">
      <declaredIn systemId="file:///home/maloneyc/git/NCBITools/DtdAnalyzer/test/split-example.dtd"
        publicId="-//NLM//external dtd dummy public id//EN" lineNumber="39"/>
      <content-model spec="element" minified="(banana)*" spaced="( banana )*">
        <choice q="*">
          <child>banana</child>
        </choice>
      </content-model>
      <annotations>
        <annotation type='note'>
          <p>Specifies the main ingredients of a banana split.
            Remember the following:</p>
          <ul>
            <li>One banana</li>
            <li>Two banana</li>
            <li>Three banana</li>
            <li>Four</li>
          </ul>
        </annotation>
        <annotation type='model'>
          <p>Four bananas make a bunch and so do many more.</p>
        </annotation>
        <annotation type='tags'>
          <tag>root</tag>
          <tag>rock-group</tag>
          <tag>mess-of-fun</tag>
        </annotation>
        <annotation type='example'>
          <pre><code>&lt;split&gt;
  &lt;banana instrument='guitar'&gt;Fleegle&lt;/banana&gt;
  &lt;banana instrument='drums'&gt;Bingo&lt;/banana&gt;
  &lt;banana instrument='bass'&gt;Drooper&lt;/banana&gt;
  &lt;banana instrument='keyboard'&gt;Snorky&lt;/banana&gt;
&lt;/split&gt;</code></pre>
        </annotation>
        <annotation type='schematron'>
          <report test='count(banana) &lt; 4'>
            You need four bananas to make a bunch.  Many more is okay, too.
          </report>
        </annotation>
      </annotations>
    </element>
    <element name="i" dtdOrder="4">
      <declaredIn systemId="file:///home/maloneyc/git/NCBITools/DtdAnalyzer/test/inline.ent"
        publicId="-//NLM//external ent dummy public id 1//EN" lineNumber="17"/>
      <content-model spec="mixed" minified="(#PCDATA|em|strong|i|img)*"
        spaced="( #PCDATA | em | strong | i | img )">
        <child>em</child>
        <child>strong</child>
        <child>i</child>
        <child>img</child>
      </content-model>
      <context>
        <parent name="i"/>
        <parent name="banana"/>
        <parent name="em"/>
        <parent name="strong"/>
      </context>
    </element>
    <element name="banana" dtdOrder="6">
      <declaredIn systemId="file:///home/maloneyc/git/NCBITools/DtdAnalyzer/test/banana.ent"
        publicId="-//NLM//external ent dummy public id 2//EN" lineNumber="15"/>
      <content-model spec="mixed" minified="(#PCDATA|em|strong|i|img)*"
        spaced="( #PCDATA | em | strong | i | img )">
        <child>em</child>
        <child>strong</child>
        <child>i</child>
        <child>img</child>
      </content-model>
      <context>
        <parent name="split"/>
      </context>
      <annotations>
        <annotation type='note'>
          <p>This specifies one banana.  One banana doesn't make a bunch.</p>
        </annotation>
        <annotation type='schematron'>
          <assert test="@instrument != 'drums' or . = 'Bingo'">
            If he plays the drums, he must be Bingo!
          </assert>
        </annotation>
      </annotations>
    </element>
    <element name="em" dtdOrder="2">
      <declaredIn systemId="file:///home/maloneyc/git/NCBITools/DtdAnalyzer/test/inline.ent"
        publicId="-//NLM//external ent dummy public id 1//EN" lineNumber="13"/>
      <content-model spec="mixed" minified="(#PCDATA|em|strong|i|img)*"
        spaced="( #PCDATA | em | strong | i | img )">
        <child>em</child>
        <child>strong</child>
        <child>i</child>
        <child>img</child>
      </content-model>
      <context>
        <parent name="i"/>
        <parent name="banana"/>
        <parent name="em"/>
        <parent name="strong"/>
      </context>
    </element>
    <element name="img" dtdOrder="5">
      <declaredIn systemId="file:///home/maloneyc/git/NCBITools/DtdAnalyzer/test/inline.ent"
        publicId="-//NLM//external ent dummy public id 1//EN" lineNumber="19"/>
      <content-model spec="empty" minified="EMPTY" spaced="EMPTY"/>
      <context>
        <parent name="i"/>
        <parent name="banana"/>
        <parent name="em"/>
        <parent name="strong"/>
      </context>
    </element>
    <element name="strong" dtdOrder="3">
      <declaredIn systemId="file:///home/maloneyc/git/NCBITools/DtdAnalyzer/test/inline.ent"
        publicId="-//NLM//external ent dummy public id 1//EN" lineNumber="15"/>
      <content-model spec="mixed" minified="(#PCDATA|em|strong|i|img)*"
        spaced="( #PCDATA | em | strong | i | img )">
        <child>em</child>
        <child>strong</child>
        <child>i</child>
        <child>img</child>
      </content-model>
      <context>
        <parent name="i"/>
        <parent name="banana"/>
        <parent name="em"/>
        <parent name="strong"/>
      </context>
    </element>
  </elements>
  
  <attributes>
    <attribute name="src">
      <attributeDeclaration element="img" type="CDATA" mode="#REQUIRED">
        <declaredIn systemId="file:///home/maloneyc/git/NCBITools/DtdAnalyzer/test/inline.ent"
          publicId="-//NLM//external ent dummy public id 1//EN" lineNumber="20"/>
      </attributeDeclaration>
    </attribute>
    <attribute name="name">
      <attributeDeclaration element="banana" type="CDATA" mode="#REQUIRED">
        <declaredIn systemId="file:///home/maloneyc/git/NCBITools/DtdAnalyzer/test/banana.ent"
          publicId="-//NLM//external ent dummy public id 2//EN" lineNumber="17"/>
      </attributeDeclaration>
    </attribute>
    <attribute name="instrument">
      <attributeDeclaration element="banana" type="CDATA" mode="#IMPLIED">
        <declaredIn systemId="file:///home/maloneyc/git/NCBITools/DtdAnalyzer/test/banana.ent"
          publicId="-//NLM//external ent dummy public id 2//EN" lineNumber="30"/>
      </attributeDeclaration>
      <annotations>
        <annotation type='note'>
          <p>Describes a banana's instrument.</p>
        </annotation>
        <annotation type='schematron'>
          <assert test="not(parent::banana) or
            . = 'guitar' or . = 'drums' or . = 'bass' or . = 'keyboards'">
            Bananas can only play guitar, drums, bass, or keyboards.
          </assert>
        </annotation>
      </annotations>
    </attribute>
  </attributes>
  
  <parameterEntities>
    <entity name="banana.ent"
      relSysId='banana.ent'
      systemId="file:///home/maloneyc/git/NCBITools/DtdAnalyzer/test/banana.ent"
      publicId="-//NLM//external ent dummy public id 2//EN">
      <declaredIn systemId="file:///home/maloneyc/git/NCBITools/DtdAnalyzer/test/split-example.dtd"
        publicId="-//NLM//external dtd dummy public id//EN" lineNumber="45"/>
      <annotations level='reference'>
        <annotation type='note'>
          <p>In the split DTD, we bring in the banana.ent module in order to get all the 
            slippery things assocatied with bananas.</p>
        </annotation>
      </annotations>
      <annotations level='module'>
        <annotation type='note'>
          <p>This module defines the &lt;banana> element, and all the slippery things associated
            with it.</p>
        </annotation>
      </annotations>
    </entity>
    
    <entity name="inline.ent"
      relSysId='inline.ent'
      systemId="file:///home/maloneyc/git/NCBITools/DtdAnalyzer/test/inline.ent"
      publicId="-//NLM//external ent dummy public id 1//EN">
      <declaredIn systemId="file:///home/maloneyc/git/NCBITools/DtdAnalyzer/test/split-example.dtd"
        publicId="-//NLM//external dtd dummy public id//EN" lineNumber="42"/>
      <annotations level='reference'>
        <annotation type='note'>
          <p>This entity declares some "core" things, that really just happen to be a few
            elements that look suspiciously like HTML.</p>
        </annotation>
      </annotations>
      <annotations level='module'>
        <annotation type='note'>
          <p>This module defines the elements that can be used inline in a description.</p>
        </annotation>
      </annotations>
    </entity>
    
    <entity name="inline">
      <declaredIn systemId="file:///home/maloneyc/git/NCBITools/DtdAnalyzer/test/inline.ent"
        publicId="-//NLM//external ent dummy public id 1//EN" lineNumber="10"/>
      <value>em | strong | i | img</value>
      <annotations>
        <annotation type='note'>
          <p>Example parameter entity.  This is a list of elements that can be included inline
            within a &lt;banana> element.</p>
        </annotation>
      </annotations>
    </entity>
  </parameterEntities>

  <generalEntities>
    <entity name="fleegle-pic"
      systemId="file:///home/maloneyc/git/NCBITools/DtdAnalyzer/test/fleegle-pic.ent">
      <declaredIn systemId="file:///home/maloneyc/git/NCBITools/DtdAnalyzer/test/banana.ent"
        publicId="-//NLM//external ent dummy public id 2//EN" lineNumber="34"/>
      <annotations>
        <annotation type='note'>
          <p>This is a picture of Fleegle.</p>
        </annotation>
      </annotations>
    </entity>
  </generalEntities>
</declarations>

