<?xml version="1.0" encoding="ISO-8859-1"?>
<!--
       ALFS :    Document Type Definition
       Version : 3.1
       Author:   V. Dzuba
       Updates:  Kevin P. Fleming
       Date:     July 3, 2004

       The current version of the DTD is available at:
             http://www.linuxfromscratch.org/alfs/downloads/stable

       The current version of its documentation is available at:
             http://www.linuxfromscratch.org/alfs/view/dtd

       This DTD is published under both BSD and GNU licenses.
-->

<!ENTITY lt     "&#38;#60;"> 
<!ENTITY gt     "&#62;"> 
<!ENTITY amp    "&#38;#38;"> 
<!ENTITY apos   "&#39;"> 
<!ENTITY quot   "&#34;"> 

<!ENTITY % ops "configure | copy | download | execute | link | make | mkdir | move | ownership | package | patch | permissions | remove | search_replace | stage | textdump | unpack">

<!ELEMENT alfs           ((%ops; | include)+)>
<!ATTLIST alfs
          base           CDATA #IMPLIED
          version        CDATA #FIXED "3.1"
	  xml:base	 CDATA #IMPLIED
	  xmlns:xi	 CDATA #IMPLIED>

<!ELEMENT archive        (#PCDATA)>

<!ELEMENT base           (#PCDATA)>

<!ELEMENT configure      ((param | prefix)*)>
<!ATTLIST configure
          base           CDATA #IMPLIED
          command        CDATA #IMPLIED>

<!ELEMENT content        (#PCDATA)>

<!ELEMENT copy           (option*, source+, destination)>
<!ATTLIST copy
          base           CDATA #IMPLIED>

<!ELEMENT description    (para | list)*>

<!ELEMENT destination    (#PCDATA)>

<!ELEMENT digest         (#PCDATA)>
<!ATTLIST digest         
          type           CDATA     "md5">

<!ELEMENT download       (file, url*, destination, digest?)>

<!ELEMENT environment    (variable+)>
<!ATTLIST environment
          mode           (append | prepend) #IMPLIED>

<!ELEMENT execute        ((param | prefix)*)>
<!ATTLIST execute
          base           CDATA #IMPLIED
          command        CDATA #REQUIRED>

<!ELEMENT file           (#PCDATA)>

<!ELEMENT find           (#PCDATA)>

<!ELEMENT include        EMPTY>
<!ATTLIST include
          href           CDATA #REQUIRED>

<!ELEMENT item           (#PCDATA)>

<!ELEMENT link           (option*, target+, name)>
<!ATTLIST link
          base           CDATA #IMPLIED
          type           CDATA #IMPLIED>

<!ELEMENT list           (item | list)+>
<!ATTLIST list
          type           (bullet | number) "bullet">

<!ELEMENT make           ((param | prefix)*)>
<!ATTLIST make
          base           CDATA #IMPLIED>

<!ELEMENT mkdir          (option?, permissions?, name+)>
<!ATTLIST mkdir
          base           CDATA #IMPLIED>
          
<!ELEMENT move           (option?, source+, destination)>
<!ATTLIST move
          base           CDATA #IMPLIED>

<!ELEMENT name           (#PCDATA)>

<!ELEMENT option         (#PCDATA)>

<!ELEMENT ownership      (option?, name+)>
<!ATTLIST ownership
          base           CDATA #IMPLIED
          user           CDATA #IMPLIED
          group          CDATA #IMPLIED>
          
<!ELEMENT package        (packageinfo?, stage+)>
<!ATTLIST package
          name           CDATA #REQUIRED
          version        CDATA #REQUIRED>

<!ELEMENT packageinfo    (description?, requires*, utilizes*)>

<!ELEMENT para           (#PCDATA)>

<!ELEMENT param          (#PCDATA)>

<!ELEMENT patch          ((param | prefix)+)>
<!ATTLIST patch
          base           CDATA #IMPLIED>

<!ELEMENT permissions    (option?, name*)>
<!ATTLIST permissions
          base           CDATA #IMPLIED
          mode           CDATA #REQUIRED>

<!ELEMENT prefix         (#PCDATA)>

<!ELEMENT reference      (#PCDATA)>

<!ELEMENT remove         (#PCDATA)>

<!ELEMENT replace        (#PCDATA)>

<!ELEMENT requires       (name, version*)>

<!ELEMENT root           (#PCDATA)>

<!ELEMENT search_replace (file, find, replace)>
<!ATTLIST search_replace
          base           CDATA #IMPLIED>

<!ELEMENT source         (#PCDATA)>

<!ELEMENT stage          (stageinfo?, (alfs | %ops;)*)>
<!ATTLIST stage
          name           CDATA #IMPLIED>

<!ELEMENT stageinfo      (root?, user?, environment?, base?)>

<!ELEMENT target         (#PCDATA)>

<!ELEMENT textdump       (file, content)>
<!ATTLIST textdump
          base           CDATA #IMPLIED
          mode           CDATA #IMPLIED>

<!ELEMENT unpack         (digest?, reference*, archive, destination)>

<!ELEMENT url            (#PCDATA)>

<!ELEMENT user           (#PCDATA)>

<!ELEMENT utilizes       (name, version*)>

<!ELEMENT variable       (#PCDATA)>
<!ATTLIST variable
          name           CDATA #REQUIRED
          mode           CDATA #IMPLIED>

<!ELEMENT version        (#PCDATA)>
<!ATTLIST version
          condition      (eq | ne | gt | ge | lt | le) #REQUIRED>

