<!-- ........................................................... -->
<!-- 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 elements, 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.
-->
<!-- :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: -->
<!-- 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 step-by-step program for creating conforming
modules is enumerated below, and spans both the CafeML Qualified
Names Template and CafeML Extension Template modules.
-->
<!-- Section A: CafeML XML Namespace Framework :::::::::::::::::::: -->
<!-- 1. 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 behavior follows the overall DTD
prefixing scheme.
-->
<!ENTITY % NS.prefixed "IGNORE" >
<!ENTITY % CAFEML.prefixed "%NS.prefixed;" >
<!-- 2. Declare a parameter entity (e.g., %CAFEML.xmlns;) containing
the URI reference used to identify the Module namespace:
-->
<!ENTITY % CAFEML.xmlns "http://www.cafeconleche.org/xmlns/cafeml" >
<!-- 3. Declare parameter entities (eg., %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 a document instance. If no default prefix
is desired, this may be declared as an empty string.
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 "cafeml" >
<!-- 4. Declare parameter entities (eg., %CAFEML.pfx;) containing the
colonized prefix(es) (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 "" >
<!-- 5. The parameter entity %CAFEML.xmlns.extra.attrib; may be
redeclared to contain any non-CafeML namespace declaration
attributes for namespaces embedded in CafeML. When prefixing
is active it contains the prefixed xmlns attribute and any
namespace declarations embedded in CafeML, otherwise an empty
string.
-->
<![%CAFEML.prefixed;[
<!ENTITY % CAFEML.xmlns.extra.attrib
"xmlns:%CAFEML.prefix; %URI.datatype; #FIXED '%CAFEML.xmlns;'" >
]]>
<!ENTITY % CAFEML.xmlns.extra.attrib "" >
<!ENTITY % XHTML.xmlns.extra.attrib
"%CAFEML.xmlns.extra.attrib;"
>
<!-- Section B: CafeML Qualified Names ::::::::::::::::::::::::::::: -->
<!-- This section declares parameter entities used to provide
namespace-qualified names for all CafeML element types.
-->
<!-- module: cafe-1.mod -->
<!ENTITY % CAFEML.quoteoftheday.qname "%CAFEML.pfx;quoteoftheday" >
<!ENTITY % CAFEML.today.qname "%CAFEML.pfx;today" >
<!-- end of cafe-qname-1.mod -->