SMAF DTD

<!-- DTD for SMAF -->
<!-- 07/08/2007-->
        
<!ELEMENT smaf   (text?, olac:olac? , lattice ) >
<!ATTLIST smaf   document CDATA #REQUIRED
                 addressing CDATA "char" >

<!ELEMENT text (#PCDATA) >

<!ELEMENT lattice   (edge*)>
<!ATTLIST lattice   init CDATA #IMPLIED
                    final CDATA #IMPLIED
                    cfrom CDATA #IMPLIED
                    cto CDATA #IMPLIED>

<!ELEMENT edge (#PCDATA|slot|fs|rmrs)* >
<!ATTLIST edge id ID #REQUIRED
               type CDATA #REQUIRED
               cfrom CDATA #IMPLIED
               cto CDATA #IMPLIED
               source CDATA #REQUIRED
               target CDATA #REQUIRED
               deps IDREFS #IMPLIED >

<!ELEMENT slot (#PCDATA) >
<!ATTLIST slot name CDATA #REQUIRED >

<!ELEMENT fs (f*) >
<!ATTLIST fs type CDATA #IMPLIED>
<!ELEMENT f (#PCDATA|fs)* >
<!ATTLIST f name CDATA #REQUIRED>

<!ENTITY % rmrs SYSTEM "rmrs.dtd">
<!-- rmrs -->

<!--!ELEMENT olac:olac (dc:creator?,created?,dc:identifier)-->

<!-- it's too tedious to specify all possible permutations in a DTD, so use ANY instead! -->
<!ELEMENT olac:olac ANY> 

<!ATTLIST olac:olac
    xmlns:olac CDATA #FIXED "http://www.language-archives.org/OLAC/1.0/"
    xmlns:dc CDATA #FIXED "http://purl.org/dc/elements/1.1/"
>

<!ELEMENT created (#PCDATA)>

<!--
THE FOLLOWING IS A TAKEN FROM...

     DTD for the OLAC Metadata Set, version 1.0
     Gary Simons and Steven Bird, 8 April 2003
     
     The definitive definition for an OLAC metadata record is the XML schema
     at:  http://www.language-archives.org/OLAC/1.0/olac.xsd
     
     This DTD is offerred for the convenience of users who need to use DTD-based 
     software.  However, since schemas have more functionality than DTDs, validation
     with this DTD does not guarantee that the document is valid with respect to the schema.

-->
    
<!ENTITY % attributes  
   "xml:lang CDATA #IMPLIED
    xsi:type CDATA #IMPLIED
    olac:code CDATA #IMPLIED"
 >

<!ELEMENT dc:creator (#PCDATA)>
<!ATTLIST dc:creator
        %attributes;
>

<!ELEMENT dc:description (#PCDATA)>
<!ATTLIST dc:description
        %attributes;
>

<!ELEMENT dc:identifier (#PCDATA)>
<!ATTLIST dc:identifier
        %attributes;
>
<!ELEMENT dc:language (#PCDATA)>
<!ATTLIST dc:language
        %attributes;
>

Question: should we have a schema definition also? (OLAC in particular works far better when defined via a schema.)

Last update: 2007-08-07 by BenjaminWaldron [edit]