[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]
Subject: Simplest Namespace That Could Possibly Work
There may be a blindly simple way to solve the 1.0 namespace issue:
Have a namespace-bound schema that defines only the DITA class attribute.
This would:
- Satisfy my requirements for having documents be unambiguously bound to
the DITA specification
- Bring the DITA class attribute, which is the key to all DITA-specific
processing (because it enables recognition of element types derived from
DITA)
- Otherwise avoid all namespace issues related to specialization, schema
organization, and so on.
Given this approach, the only change would be to the class attributes
themselves, to wit:
DITA as submitted to OASIS:
<!ATTLIST topic %global-atts; class CDATA "- topic/topic ">
<!ATTLIST title %global-atts; class CDATA "- topic/title ">
DITA with namespaced class:
<!ENTITY % ditabase-ns-decl
'xmlns:dita
CDATA
#FIXED
"http://dita.oasis-open.org/1.0/packages/ditabase"
'
>
<!ATTLIST topic
%global-atts; dita:class CDATA #FIXED "- topic/topic"
%ditabase-ns-decl;
>
<!ATTLIST title
%global-atts; dita:class CDATA #FIXED "- topic/title"
%ditabase-ns-decl;
>
A DTD-based document instance would be visually indistinguishable from
an existing one, although the parsed document would obviously differ in
having "dita:class" intead of "class" and would have the namespace decls:
<?xml version="1.0"?>
<!DOCTYPE topic SYSTEM "uri-of-dita-DTD-declaration-set">
<topic id="topic-01">
A schema-valid document could look like this:
<?xml version="1.0"?>
<topic
xmlns:dita="http://dita.oasis-open.org/1.0/packages/ditabase"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://dita.oasis-open.org/1.0/packages/ditabase
uri-to-ditabase-schema
"
xsi:noNamespaceSchemaLocation="uri-to-existing-DITA-schemas"
id="topic-01"
>
A minimal document (no schema or DOCTYPE declaration would look like this:
<?xml version="1.0"?>
<topic
xmlns:dita="http://dita.oasis-open.org/1.0/packages/ditabase"
id="topic-01"
>
Note that all three of these documents are 100% clear about being DITA
documents by dint of the fact that all declare the ditabase namespace,
but their processing and validation mechanism is otherwise completely
unchanged from current DITA practice.
Existing DITA-aware processors would need only add an OR clause to their
"class" attribute check in order to accomdate both legacy DITA instances
and OASIS DITA 1.0 instances, e.g:
<xsl:template match="*[(contains(@class, ' topic/topic ') OR
(contains(@dita:class, ' topic/topic ')" >
All other processing would be unchanged (because no other names would be
different).
Cheers,
E.
--
W. Eliot Kimber
Professional Services
Innodata Isogen
9390 Research Blvd, #410
Austin, TX 78759
(512) 372-8122
eliot@innodata-isogen.com
www.innodata-isogen.com
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]