Hi Richard,

I also had this same problem.  I did some reading, and according to Michael
Kay's XSLT Programmer's Reference:

"The xsl:exclude-result-prefixes and exclude-result-prefixes attributes
apply only to namespace nodes copied from the stylesheet using literal
result elements.  They do not affect namespace nodes copied from the source
document using <xsl:copy> or <xsl:copy-of>: there is no way of suppressing
these."

Unfortunately, since xslt's will often have a catch-all template matcher to
copy elements it doesn't transform, this comes up quite a bit.

So... what I ended up doing was extending the HTMLSerializer (or whatever
serializer you're using for your pipelines), and overriding the
startPrefixMapping and endPrefixMapping methods to do nothing, effectively
removing all namespaces from my HTML.  This also had the added benefit of
having no performance penalties (and theoretically, a ever-so-slight speedup
since we no longer process namespaces in our serializer).

You could make this more general, and use the serializer's configuration to
declare which namespaces you want to exclude, but excluding all worked well
for us, especially since we were outputting HTML.

Hope that helps!

Harry

-----Original Message-----
From: Reinhard Poetz [mailto:[EMAIL PROTECTED]]
Sent: Monday, July 01, 2002 7:53 AM
To: [EMAIL PROTECTED]
Subject: RE: How to remove namespace declarations and prefixes?


> From: Manos Batsis [mailto:[EMAIL PROTECTED]]

> > From: Reinhard Poetz [mailto:[EMAIL PROTECTED]] 

> > Is there a difference in performance - your solution compared 
> > to a working
> > "exclude-result-prefixes"-attribute?
> 
> Depends on whether you want to add a new stylesheet or modify the
> existing one (if any). While on the second choice (using xsl:element
> with local-name() in all templates that handle elements and attributes)
> performance should not change notisably; essentially this and
> exclude-result-prefixes do the same thing.
> 
> 
> > Did you try it with Cocoon? If yes, which version do you use?
> 
> Nope I haven't.

It seems to me that this is a bug in cocoon.

> 
> > 
> > My stylesheet:
> > 
> > <xsl:stylesheet
> >     version="1.0"
> >     xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
> >    xmlns:f="http://www.poetz.cc/forms";
> >    xmlns:l="http://www.poetz.cc/linking";
> >    xmlns:cinclude="http://apache.org/cocoon/include/1.0";
> >    xmlns:dc="http://purl.org/dc/elements/1.1/";
> >    xmlns:rss="http://purl.org/rss/1.0/";
> >    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
> >     exclude-result-prefixes="f">
> 
> Yes, the above will only remove namespace prefixes bound to
> http://www.poetz.cc/forms
> To filter all prefixes out modify the exclude-result-prefixes attribute
> to 

ATM it doesn't remove the namespace. I'll report the bug to bugzilla.

Thanks for your help.

Reinhard


---------------------------------------------------------------------
Please check that your question  has not already been answered in the
FAQ before posting.     <http://xml.apache.org/cocoon/faq/index.html>

To unsubscribe, e-mail:     <[EMAIL PROTECTED]>
For additional commands, e-mail:   <[EMAIL PROTECTED]>

---------------------------------------------------------------------
Please check that your question  has not already been answered in the
FAQ before posting.     <http://xml.apache.org/cocoon/faq/index.html>

To unsubscribe, e-mail:     <[EMAIL PROTECTED]>
For additional commands, e-mail:   <[EMAIL PROTECTED]>

Reply via email to