Subject: Re: [xsl] Why does using the XSL namespace default namespace preclude literal result elements in the empty namespace? From: tcn@xxxxxxxxxxxxx (Trevor Nash) Date: Sat, 21 Jul 2001 15:32:25 GMT |
On Sat, 21 Jul 2001 09:35:40 -0400 (Eastern Daylight Time), Mark Nahabedian <naha@xxxxxxxxxx> wrote: >Aaron Hope writes: > > I know that's a long subjetct but the instructions said to be specific... > > > > I've got a stylesheet with 80-90% of elements in the xsl namespace, the > > rest being literal result elements destined for html output. All those > > xsl: prefixes add up to a lotta noise, and well, i can't help but feel > > there should be a way to avoid it. If what i gather from the 1.0 spec > > is correct, then these elements can't simply be in an html: namespace > > (html 4.0 or xhtml, say). I know I can replace them with <element> and > > <attribute> tags, but, again, that's a lot of noise and you end up > > putting in c-like terminator comments, e.g. </element><!-- table -->. > > At first I read the namespace-alias entry and I said "Ooh, there we > > go!", but no, since you can't have empty namespaces other than the > > default, there's no way to set the result namespace to the null namespace. > >The XSLT and HTML names are in different namespaces. Those namespaces >can not both be the default namespace at the same time. What I do is >pick the one that it's the biggest nuissance to type the prefix for >(usially XSLT) as the default namespace. > > > So, after all that here's my question: why can't i say > > <namespace-alias stylesheet-prefix="html" result-prefix="#none"/>? (or > > #empty or #null, etc) > Because namespace-alias is used to swap one namespace for another. It has nothing to do with what prefix the XSLT processor uses in the output: you do not get any control over this, though most processors try to follow what is in the input. It is a feature of the namespace recommendation that the empty namespace cannot be associated with a prefix. I.e. you can say xmlns="" but not xmlns:null="". If you want the empty namespace in the output, then you have to reserve the default namespace for literal result elements. I guess somebody somewhere knows why? >What's wrong with using the zero length string, as in > > <namespace-alias stylesheet-prefix="html" result-prefix=""/> > This is not legal. The default namespace is referred to by '#default' not ''. Besides, the effect would be to declare the output elements in the XSLT namespace, which is not what you want. >Admittedly, the one time I recall trying to do this it didn't work, >but I attributed that to a bug in the processor I was using, which was >beta software. > One way to address this problem, and other perceived shortcomings of XSLT syntax, is to write a stylesheet which takes something like <stylesheet> <template match="/"> <h:html/> </template> </stylesheet> and produces <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" > <xsl:template match="/"> <html/> </xsl:template> </xsl:stylesheet> Its not hard. Though you will have to understand what namespace-alias really does, and you may end up finding out more than you really want to know about white space handling ;-) Regards, Trevor Nash -- Traditional training & distance learning, Consultancy by email Melvaig Software Engineering Limited voice: +44 (0) 1445 771 271 email: tcn@xxxxxxxxxxxxx XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] Why does using the XSL namesp, Mark Nahabedian | Thread | Re: [xsl] Why does using the XSL na, Aaron Hope |
[xsl] Why does using the XSL namesp, Mark Nahabedian | Date | Re: [xsl] Elements print sometimes , Tamre Bond |
Month |