<!-- ................................................................. --><!-- CafeML Qualified Names Module ................................... --><!-- file: cafe-qname-1.mod     This is an extension of XHTML, a reformulation of HTML as      a modular XML application.     This DTD module is identified by the PUBLIC and SYSTEM identifiers:PUBLIC "-//Elliotte Rusty Harold//ELEMENTS CafeML Qualified Names 1.0//EN"       "cafe-qname-1.mod"     Revisions:     (none)     ................................................................. --><!-- NOTES:  Using the CafeML Qualified Names Extension     This is a module for a markup language 'CafeML',     which currently declares two extension element types, <quoteoftheday>      and <today>. The parameter entity naming convention uses uppercase      for the entity name and lowercase for namespace prefixes, hence      this example uses 'CAFEML' and 'cafeml' respectively.      Please note the three case variants:          'CafeML'   the human-readable markup language name         'CAFEML'   used as a parameter entity name prefix          'cafeml'   used as the default namespace prefix     The %NS.prefixed; conditional section keyword must be declared      as "INCLUDE" in order to allow prefixing be used.--><!-- end of NOTES section --><!-- ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: --><!-- CafeML Qualified Names     This module is contained in two parts, labeled Section 'A' and 'B':       Section A declares parameter entities to support namespace-       qualified names, namespace declarations, and name prefixing        for CafeML.           Section B declares parameter entities used to provide       namespace-qualified names for all CafeML element types.     The recommended 12 step programme for creating conforming      modules is enumerated below, and spans both the CafeML Qualified     Names Template and CafeML Extension Template modules.--><!-- Section A: XHTML XML Namespace Framework :::::::::::::::::::: --><!-- 1. Declare the two parameter entities used to support XLink,        first the parameter entity container for the URI used to        identify the XLink namespace:--><!ENTITY % XLINK.xmlns "http://www.w3.org/1999/xlink" ><!-- This contains the XLink namespace declaration attribute.--><!ENTITY % XLINK.xmlns.attrib     "xmlns:xlink  %URI.datatype;           #FIXED '%XLINK.xmlns;'"><!-- 2. Declare a parameter entity %CAFEML.xmlns; containing the         namespace URI for the CafeML namespace:--><!ENTITY % CAFEML.xmlns  "http://www.ibiblio.org/xml/cafeml/" ><!-- 3. Declare a parameter entity %CAFEML.prefix; containing the         default namespace prefix string(s) to use when prefixing         is enabled. This may be overridden in the DTD driver or         the internal subset of an document instance when prefixing         of only the non-XHTML markup is desired.     NOTE: As specified in [XMLNAMES], the namespace prefix serves      as a proxy for the URI reference, and is not in itself significant.--><!ENTITY % CAFEML.prefix  "cafe" ><!-- 4. Declare a %CAFEML.prefixed; conditional section keyword, used        to activate namespace prefixing. The default value should         inherit '%NS.prefixed;' from the DTD driver, so that unless         overridden, the default behaviour follows the overall DTD         prefixing scheme.--><!ENTITY % NS.prefixed "IGNORE" ><!ENTITY % CAFEML.prefixed "%NS.prefixed;" ><!-- 5. Declare a parameter entity %CAFEML.pfx; containing the         colonized prefix (eg., '%CAFEML.prefix;:') used when         prefixing is active, an empty string when it is not.--><![%CAFEML.prefixed;[<!ENTITY % CAFEML.pfx  "%CAFEML.prefix;:" >]]><!ENTITY % CAFEML.pfx  "" ><!-- 6. Declare a parameter entity %CAFEML.xmlns.extra.attrib;        that when %CAFEML.prefixed; is 'INCLUDE' recursively         contains all non-CafeML namespace declaration attributes         for namespaces embedded in CafeML.         When %CAFEML.prefixed; is 'IGNORE', this should be declared        as '%XLINK.xmlns.attrib;', or an empty string if XLink is         not used in the DTD. --><![%CAFEML.prefixed;[<!ENTITY % CAFEML.xmlns.extra.attrib "">]]><!ENTITY % CAFEML.xmlns.extra.attrib      "%XLINK.xmlns.attrib;"><!-- 7. Declare a parameter entity %CAFEML.xmlns.attrib; containing         all XML namespace declaration attributes used by CafeML,         the form dependent on whether prefixing is active. Neither        XHTML nor XLink should be included here.--><![%CAFEML.prefixed;[<!ENTITY % CAFEML.xmlns.attrib     "xmlns:%CAFEML.prefix;  %URI.datatype;   #FIXED '%CAFEML.xmlns;'      %CAFEML.xmlns.extra.attrib;">]]><!ENTITY % CAFEML.xmlns.attrib     "xmlns        %URI.datatype;           #FIXED '%CAFEML.xmlns;'      %CAFEML.xmlns.extra.attrib;"><!-- 8. Declare a parameter entity that recursively aggregates all         previous namespace declaration attributes by including the         %CAFEML.xmlns.extra.attrib; parameter entity into that of its        embedding vocabulary, in this case XHTML.        NOTE: this conditional section is controlled by %NS.prefixed;         so that CafeML's default namespace attribute won't appear on         XHTML elements when only CafeML prefixing is active.--><![%NS.prefixed;[<!ENTITY % XHTML.xmlns.extra.attrib      "%CAFEML.xmlns.attrib;" >]]><!ENTITY % XHTML.xmlns.extra.attrib     "%XLINK.xmlns.attrib;"><!-- Section B: CafeML Qualified Names ::::::::::::::::::::::::::::: --><!-- 9. This section declares parameter entities used to provide        namespace-qualified names for all CafeML element types.--><!-- template-1.mod --><!ENTITY % CAFEML.quoteoftheday.qname  "%CAFEML.pfx;quoteoftheday" ><!ENTITY % CAFEML.today.qname   "%CAFEML.pfx;today" ><!-- end of cafe-qname-1.mod -->