cocoon-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Kamal Bhatt <>
Subject Re: Warnings for XSLT
Date Mon, 29 May 2006 01:32:12 GMT

Sorry, but this was a cocoon specific issue. The script was working fine 
as it was. The problem (which got lost thanks to my bad copying and 
pasting) was not the script, it was with the unexplained warnings 
(TraxErrorListener) that I got from running the scripts. Is that a bug 
or is it something illegal that I am doing in my XSLT that would not 
work in another more stringent parser?

I wish I saw that wiki page earlier, it would have saved me half a day's 
worth or work.


Jason Johnston wrote:

> Kamal Bhatt wrote:
>> Apologies, I did not see that. Yes, you are right most of those * is 
>> not meant to be there. It was rendering right when I pasted it in. I 
>> did not realise that is what the browser does. Sorry people, please 
>> ignore the unnecessary *. Someone at work worked out that you don't 
>> need the node() and * would surfice and seems to fix the problem. I 
>> would like to know why it is a problem though..
> I'm not sure, but one possibility: node() matches not only elements 
> but any node: attributes, text, comments... so your template would 
> have ended up trying to call local-name() on nodes that don't have a 
> local name.  That would explain why changing it to match only elements 
> with * cleared up the problem.
> Since this isn't a Cocoon-specific issue, an XSLT mailing list or 
> forum may be a better bet for getting the answer.  Or perhaps one 
> specific to the XSLT processor you're using (Xalan?), since it's 
> likely different processors handle these edge cases differently.
>> What I was trying to do is copy one element into another element and 
>> remove unnecessary namespace declarations (as this is meant to be 
>> published XML) whilst retaining a specific namespace (the supplier 
>> namespace).
> There is a page on the Cocoon wiki about stripping extra namespace 
> declarations, as it is a common problem: 
>> <files>
>>  <supplier ...>
>>     ...
>>  </supplier>
>>  <customRows>
>>    ...
>>  </customRows>
>> </files>
>> becomes:
>> <sup:supplier sup:xmlns="..." xmlns="..." ...>
>>  ...
>>  <sup:supplementary>
>>    <sup:customRows>
>>    ...
>>    </sup:customRows>
>>  </sup:supplementary>
>> </sup:supplier>
>> Here is an unadulterated version of the XSLT
>> <xsl:stylesheet version="1.0"
>>    xmlns:xsl=""
>>    xmlns:sup=""
>>    xmlns:xsi=""
>>    xmlns=""
>>    >
>>  <xsl:template match="files">
>>     <xsl:apply-templates select="sup:supplier"/>
>>  </xsl:template>
>>  <xsl:template match="sup:supplier">
>>    <supplier xmlns:xsi="">
>>      <xsl:apply-templates select="@*|node()"/>
>>      <supplementary>
>>    <xsl:apply-templates select="../customRows"/>
>>      </supplementary>
>>    </supplier>
>>  </xsl:template>
>>  <xsl:template match="node()>
>>    <xsl:element name="{local-name()}">
>>      <xsl:apply-templates select="@*"/>
>>      <xsl:if test="count(*) = 0">
>>        <xsl:value-of select="."/>
>>      </xsl:if>          <xsl:apply-templates select="child::*"/>
>>    </xsl:element>
>>  </xsl:template>
>>  <xsl:template match="@*">
>>    <xsl:attribute name="{name()}">
>>      <xsl:value-of select="."/>
>>    </xsl:attribute>   </xsl:template>
>> </xsl:stylesheet>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail:
> For additional commands, e-mail:

Kamal Bhatt

Disclaimer: This email is confidential and may contain privileged information for the sole
use of the person or business to which it is addressed. If you are not the intended recipient,
please notify the sender by return e-mail or phone as you must not view, disseminate, distribute
or copy this email without our consent. We do not accept any liability in connection with
any computer virus, data corruption, incompleteness, or unauthorised amendment of this email.
It is the sole responsibility of the receiver to scan for viruses before opening.

To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message