<!-- $Id: catalog.dtd,v 1.9 2001/06/12 14:26:00 ndw Exp $ -->

<!ENTITY % pubIdChars "CDATA">
<!ENTITY % publicIdentifier "%pubIdChars;">
<!ENTITY % partialPublicIdentifier "%pubIdChars;">
<!ENTITY % uriReference "CDATA">
<!ENTITY % string "CDATA">
<!ENTITY % systemOrPublic "(system|public)">

<!ENTITY % p "">
<!ENTITY % s "">
<!ENTITY % nsdecl "xmlns%s;">

<!ENTITY % catalog "%p;catalog">
<!ENTITY % public "%p;public">
<!ENTITY % system "%p;system">
<!ENTITY % uri "%p;uri">
<!ENTITY % rewriteSystem "%p;rewriteSystem">
<!ENTITY % rewriteURI "%p;rewriteURI">
<!ENTITY % delegatePublic "%p;delegatePublic">
<!ENTITY % delegateSystem "%p;delegateSystem">
<!ENTITY % delegateURI "%p;delegateURI">
<!ENTITY % nextCatalog "%p;nextCatalog">
<!ENTITY % group "%p;group">

<!ENTITY % local.catalog.attribs "">

<!ELEMENT %catalog; (%public;|%system;|%uri;
                     |%rewriteSystem;|%rewriteURI;
                     |%delegatePublic;|%delegateSystem;|%delegateURI;
                     |%nextCatalog;|%group;)+>
<!ATTLIST %catalog;
    %nsdecl;    %uriReference;      #FIXED
        'urn:oasis:names:tc:entity:xmlns:xml:catalog'
    prefer      %systemOrPublic;    #IMPLIED
    xml:base    %uriReference;      #IMPLIED
    %local.catalog.attribs;
>

<!ELEMENT %public; EMPTY>
<!ATTLIST %public;
    id      ID          #IMPLIED
    publicId    %publicIdentifier;  #REQUIRED
    uri     %uriReference;      #REQUIRED
    xml:base    %uriReference;      #IMPLIED
>

<!ELEMENT %system; EMPTY>
<!ATTLIST %system;
    id      ID          #IMPLIED
    systemId    %string;        #REQUIRED
    uri     %uriReference;      #REQUIRED
    xml:base    %uriReference;      #IMPLIED
>

<!ELEMENT %uri; EMPTY>
<!ATTLIST %uri;
    id      ID          #IMPLIED
    name        %string;        #REQUIRED
    uri     %uriReference;      #REQUIRED
    xml:base    %uriReference;      #IMPLIED
>

<!ELEMENT %rewriteSystem; EMPTY>
<!ATTLIST %rewriteSystem;
    id      ID          #IMPLIED
    systemIdStartString %string;    #REQUIRED
    rewritePrefix       %string;        #REQUIRED
>

<!ELEMENT %rewriteURI; EMPTY>
<!ATTLIST %rewriteURI;
    id      ID          #IMPLIED
    uriStartString  %string;        #REQUIRED
    rewritePrefix   %string;        #REQUIRED
>

<!ELEMENT %delegatePublic; EMPTY>
<!ATTLIST %delegatePublic;
    id      ID          #IMPLIED
    publicIdStartString %partialPublicIdentifier;   #REQUIRED
    catalog     %uriReference;      #REQUIRED
    xml:base    %uriReference;      #IMPLIED
>

<!ELEMENT %delegateSystem; EMPTY>
<!ATTLIST %delegateSystem;
    id      ID          #IMPLIED
    systemIdStartString %string;    #REQUIRED
    catalog     %uriReference;      #REQUIRED
    xml:base    %uriReference;      #IMPLIED
>

<!ELEMENT %delegateURI; EMPTY>
<!ATTLIST %delegateURI;
    id      ID          #IMPLIED
    uriStartString  %string;        #REQUIRED
    catalog     %uriReference;      #REQUIRED
    xml:base    %uriReference;      #IMPLIED
>

<!ELEMENT %nextCatalog; EMPTY>
<!ATTLIST %nextCatalog;
    id      ID          #IMPLIED
    catalog     %uriReference;      #REQUIRED
    xml:base    %uriReference;      #IMPLIED
>

<!ELEMENT %group; (%public;|%system;|%uri;
                   |%rewriteSystem;|%rewriteURI;
                   |%delegatePublic;|%delegateSystem;|%delegateURI;
                   |%nextCatalog;)+>
<!ATTLIST %group;
    id      ID          #IMPLIED
    prefer      %systemOrPublic;    #IMPLIED
    xml:base    %uriReference;      #IMPLIED
>
