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.. 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). eg:

<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="http://www.w3.org/1999/XSL/Transform";
   xmlns:sup="http://www.calypso.net.au/apps/supub/SupplierV1.0";
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
   xmlns="http://www.calypso.net.au/apps/supub/SupplierV1.0";
   >
 <xsl:template match="files">
    <xsl:apply-templates select="sup:supplier"/>
</xsl:template>
 <xsl:template match="sup:supplier">
   <supplier xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";>
     <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>



Lars Huttar wrote:

Kamal Bhatt wrote:


Hi
I keep getting warnings about TraxErrorListener for line 55 and 64 for the XSLT included at the end of this file. To make life easier the problem is with the following lines:
<xsl:element name="*{local-name()}*">
and
<xsl:attribute name="*{name()}*">

||


without the curly braces it does not work, but with them I get the warnings. As the pipelines that reference this are high traffic, I find the logs files jam packed with these warnings. How can I get rid of them?

We are using cocoon-2.1.9 on jboss.

Cheers.


<xsl:stylesheet version="*1.0*" xmlns:xsl="*http://www.w3.org/1999/XSL/Transform*"; xmlns:sup="*http://www.calypso.net.au/apps/supub/SupplierV1.0*"; xmlns="*http://www.calypso.net.au/apps/supub/SupplierV1.0*";>
- <#> <xsl:template match="*files*">
 <xsl:apply-templates select="*sup:supplier*" />
 </xsl:template>
- <#> <xsl:template match="*sup:supplier*">
- <#> <supplier xmlns:xsi="*http://www.w3.org/2001/XMLSchema-instance*";>
 <xsl:apply-templates select="[EMAIL PROTECTED]|node()*" />
- <#> <supplementary>
 <xsl:apply-templates select="*../customRows*" />
 </supplementary>
 </supplier>
 </xsl:template>
- <#> <xsl:template match="*node()*">
- <#> <xsl:element name="*{local-name()}*">
 <xsl:apply-templates select="[EMAIL PROTECTED]" />
- <#> <xsl:if test="*count(*) = 0*">
 <xsl:value-of select="*.*" />
 </xsl:if>
 <xsl:apply-templates select="*child::**" />
 </xsl:element>
 </xsl:template>
- <#> <xsl:template match="[EMAIL PROTECTED]">
- <#> <xsl:attribute name="*{name()}*">
 <xsl:value-of select="*.*" />
 </xsl:attribute>
 </xsl:template>
 </xsl:stylesheet>


Please describe what you mean by these asterisks, and we can try to ... OH!!!

I bet you copied and pasted from the browser where these attribute values were shown in BOLD, or something!
And the bold got translated into asterisks!   (+,+)

(Deleting several sentences I wrote above about ill-formed XML element names.)

OK, looking at your stylesheet afresh...
Your curly brackets look OK, though the templates could be simplified.
Can you tell us in more detail what the warnings say?

Here is a simpler version of your last two templates:

 <xsl:template match="node()">
   <xsl:copy>
     <xsl:apply-templates select="@*"/>
     <xsl:if test="not(*)">
       <xsl:value-of select="."/>
     </xsl:if>
     <xsl:apply-templates select="*"/>
   </xsl:copy>
 </xsl:template>
 <xsl:template match="@*">
   <xsl:copy-of select="." />
 </xsl:template>

Depending on what you're trying to do, you may find an identity template useful:
http://www.xmltraining.biz/xsltidentity

HTH,
Lars



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




--
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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to