<!-- DTD for the Blinkenlights Markup Language version 1.0  -->
<!-- See http://www.blinkenlights.de/ for more information. -->

<!ELEMENT blm (header?, frame+)>
<!ATTLIST blm
          version   CDATA  #FIXED "1.0"
          width     CDATA  #REQUIRED
          height    CDATA  #REQUIRED
          channels  CDATA  "1"
          bits      CDATA  "1">

<!ELEMENT header (title,
                  description?, creator?, author?, email?, url?,
                  duration?, loop?)>
<!ELEMENT title       ( #PCDATA )>
<!ELEMENT description ( #PCDATA )>
<!ELEMENT creator     ( #PCDATA )>
<!ELEMENT author      ( #PCDATA )>
<!ELEMENT email       ( #PCDATA )>
<!ELEMENT url         ( #PCDATA )>
<!ELEMENT duration    ( #PCDATA )>
<!ELEMENT loop        ( #PCDATA )>

<!ELEMENT frame (row+)>
<!ATTLIST frame
          duration  CDATA  #REQUIRED>
<!ELEMENT row ( #PCDATA )>

