Re: Binary Data in XML

John Cowan (cowan@locke.ccil.org)
Wed, 30 Sep 1998 15:08:54 -0400


Peter Murray-Rust wrote:

> <CML:molecule xml:packed="base64" xml:mime="chemical/x-chemdraw">... base64
> encoding of horrid binary file ... </CML:molecule>
>
> I know that this can also be done using NOTATION but also that - like many
> others - I don't know how to do it and have never seen a NOTATION used in
> XML documents. I therefore support Tim's suggestion of bolting xml:packed
> into the language and suggest xml:mime as a companion.

Here's how. Insert the following declarations into the DTD
(internal or external as desired):

<!NOTATION chemical-x-chemdraw PUBLIC "-//whoever/whatever">
<!ATTLIST CML:molecule
xml:mime NOTATION(chemical-x-chemdraw | another | another) #REQUIRED>

and then just use it as above. A validating parser will guarantee
that the value of the xml:mime attribute is one of the specified
notations, and it will be possible to retrieve the external
identifier for each notation so that you know what it means.

The nice thing about this is that it just works if you are DTD-blind,
but provides the information that a generalized processor for
notation-governed elements needs to figure out what to do
(e.g. render using a chemical/x-chemdraw renderer).

-- 
John Cowan	http://www.ccil.org/~cowan		cowan@ccil.org
	You tollerday donsk?  N.  You tolkatiff scowegian?  Nn.
	You spigotty anglease?  Nnn.  You phonio saxo?  Nnnn.
		Clear all so!  'Tis a Jute.... (Finnegans Wake 16.5)