xsl-list
[Top] [All Lists]

Re: xsl:call-template , strange behaviour

2005-06-05 22:59:46
Thanks Wendell for explanation ;)

Regards,
Mukul

--- Wendell Piez <wapiez(_at_)mulberrytech(_dot_)com> wrote:

Mukul,

In your stylesheet, your <a/> and <b/> elements have
namespace nodes on 
them for the "temp" namespace, which they have
inherited from the 
xsl:stylesheet element.

Since you have not asked that this namespace be
excluded, the processor can 
only assume that they are part of the data it should
output.

Note that neither <a/> nor <b/> is *in* the temp
namespace, so it is 
probably not accurate (or at least it's misleading)
to say they are 
"associated with it", even though in the result the
namespace declarations 
for temp must appear on <a/> and <b/> -- since
there's no other place where 
temp can be declared.

Since temp is not actually used, it should be
possible to suppress it by 
using the exclude-namespace-prefixes attribute on
xsl:stylesheet. But it 
will be suppressed on both <a/> and <b/> -- the fact
that <b/> is generated 
by a template named "temp:test" is a red herring.
The behavior isn't 
strange at all -- what would be strange would be if
<b/> were placed in a 
different namespace from the one given it by the
stylesheet (the null 
namespace), just because of the name of the template
that adds it to the 
result.

Cheers,
Wendell

At 12:01 AM 6/6/2005, you wrote:
I have written this stylesheet -

<?xml version="1.0"?>
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
                xmlns:temp="http://whatever";
                version="2.0">

 <xsl:output method="xml" indent="yes" />

 <xsl:template match="/">
    <xsl:call-template name="test" />
    <xsl:call-template name="temp:test" />
 </xsl:template>

 <xsl:template name="test">
   <a/>
 </xsl:template>

 <xsl:template name="temp:test">
   <b/>
 </xsl:template>

</xsl:stylesheet>

With both Xalan-J 2.6 and Saxon 8.4, I get the
output
-
<?xml version="1.0" encoding="utf-8"?>
<a xmlns:temp="http://whatever"/>
<b xmlns:temp="http://whatever"/>

I am curious, why element <a> gets associated with
the
namespace 'temp' ..?



======================================================================
Wendell Piez                           
mailto:wapiez(_at_)mulberrytech(_dot_)com
Mulberry Technologies, Inc.               
http://www.mulberrytech.com
17 West Jefferson Street                    Direct
Phone: 301/315-9635
Suite 207                                         
Phone: 301/315-9631
Rockville, MD  20850                                
Fax: 301/315-8285

----------------------------------------------------------------------
   Mulberry Technologies: A Consultancy Specializing
in SGML and XML

======================================================================



--~------------------------------------------------------------------
XSL-List info and archive: 
http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to:
http://lists.mulberrytech.com/xsl-list/
or e-mail:
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--




__________________________________________________
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com 

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--