[Prev][Next][Index][Thread]

Re: Ephemeral XML?



At 12:52 PM 1/13/97 -0800, Joe English wrote:
>
>Ralph Ferris <ralph@fsc.fujitsu.com> wrote:
>>
>> I don't consider my proposal to be "namespace pollution." I consider it to
>> be method over-riding, in the manner of object-oriented programming.
>> [...]
>> One solution is to define these tags as architecural forms, and make these
>> architectural forms part of a default set that's used by XML.
>> [...]
>> Pre-defined interfaces with over-rideable methods are what make component
>> software work. Call these "component DTDs."
>
>
>This sounds like a good approach, as long as the XML spec
>also mandates some form of declaration to enable specific
>architectures.  

A formalism for declaring a document's derivation from an architecture or
architectures is defined in the forthcoming HyTime TC (largely as
documented for the architecture processing support in the latest releases
of SP).  Unfortunately, the full form of these mechanisms depend on the use
of data attributes (<!ATTLIST #NOTATION archname ...>), which means that
XML documents cannot use the full form unless we add notation attributes to
XML.

However, the minimal part of the declaration simply uses a processing
instruction to indicate which architectures are in use, e.g.:

<!DOCTYPE MyDoc [
 <?ArcBase XML-Link MyArc InfoMaster>
]>

Where the name "ArcBase" is effectively normative as XML doesn't allow SGML
declarations, which is where you would change the name of the PI (don't you
love indirection?).

A full architecture processor then expects to see notation declarations
corresponding to the architectures named (e.g., <!NOTATION MyArc PUBLIC
"...">)
with notation attributes defining the document-specific values for the
architecture control attributes.

The architecture control attributes are needed to do renaming, specify
options used, and so on.  However, since these attributes can all have
default values, you could always derive an XML-specific version of your
architecture that set the default values to something appropriate for XML
use, following the XML philosophy that no options are good options.  Thus
the notation attribute declarations would be superfluous because the
architecture engine for each such architecture would know what its base
default values are because they would be built in.  Thus, I could have:

<!DOCTYPE MyDoc [
 <?ArcBase XML-Link XML-MyArc XML-InfoMaster>
 <!NOTATION XML-Link PUBLIC "-//W3C::SGML ERB//NOTATION XML Link
Architecture//EN" >
 <!NOTATION XML-MyArc PUBLIC "-//ME//NOTATION My Architecture, XML
Profile//EN" >
 <!NOTATION XML-InfoMaster PUBLIC "+//ISBN 0-189773::IBM//NOTATION
InfoMaster Architecture, XML Profile//EN" >

]>

It would conform to the ISO/IEC 10744 requirements and fit within the XML
constraints.  The notation declarations could be considered superfluous in
this case as the PI is sufficient to identify the architectures as long as
the names used are normative.  In the general case, you can use whatever
name you want because the architecture is actually identified by the
external ID of the notation you declare.  However, we tend to expect the
notation names to be used consistently.  Or, you could consider the names
in the ArcBase PI to imply notation declarations with omitted system
identifiers if no notation declaration is present, at which point things
like catalog lookup come into play and you could put the name-to-public ID
mapping in an external catalog if necessary (which it's probably not 99.99%
of the time).

Cheers,

E.


--
W. Eliot Kimber (eliot@isogen.com) 
Senior SGML Consulting Engineer, Highland Consulting
2200 North Lamar Street, Suite 230, Dallas, Texas 75202
+1-214-953-0004 +1-214-953-3152 fax
http://www.isogen.com (work) http://www.drmacro.com (home)
"Rats in the morning, rats in the afternoon...if they don't go away, I'll be
re-educated soon..."                 --Austin Lounge Lizards, "1984 Blues"