mct> 3. Rewrite the element or attribute, prepending the
mct> (possibly generated) unique prefix for the namespace
mct> of the element/attributes Expanded Name.
sh> Suppose I have a requirement that my XML content cannot be changed in any
sh> way. For example, the content is on a CD, yet I still wish to be able to
sh> associate namespaces with the GIs on that CD.
sh>
sh> So how do I prepend the prefixes to content found on a read-only medium?
sh>
sh> I suppose I could copy the data off the CD and validate the copy, but
sh> wouldn't that get old pretty fast?
The validation takes place in the RAM of the validation process.
If your validator builds a DOM internally, then the re-writing
is actually done by assigning new values to the DOM tree.
If you want to do it "streaming", can't a namespace-aware SAX
processor spit out [LocalName, applicableNamespace] pairs as it parses
the document?
It seems that you don't even have to use two passes to find unique
prefixes:
Just use the namespace URI as the definition, with bad
characters escaped, as the normalized prefix.
For example,
<book xmlns:Q="uri:/alpha">
<name/>
</book>
is rewritten as
<book>
<uri_2falpha:name>
</book>
(where bad characters in the uri are escaped with '_' hex hex.)
-- ============================================================== Mark Tucker tucker_m@regenstrief.iupui.edu Regenstrief Institute phone: (317) 630-2606 1001 W. 10'th St; Indianapolis, IN; 46202-2859; fax: (317) 630-6962