[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

Re: Why does using the XSL namespace default namespace

Subject: Re: 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
xsl namespace default
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

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.