xsl-list
[Top] [All Lists]

RE: xsl:copy question

2003-02-05 10:19:34

Hi,
    I tested the same stylesheet in xalan j 2_3 and the atribute was not copied 
to the next element .  So it seems it was a bug.

    But even in the later version of xalan the attribute ocurring after the 
empty attribute still is not copied.

    It is like when the condition 'a*[.!=''] | node()'  is being 
matched(against the element with 3 atributes 'elementA att1='1' att2='' 
att3='5') it matches and copies the first attribute which is not empty but when 
it encounters the next attribute which is empty it jumps to the next node( due 
to the or clause)  instead of matching the non empty attribute after the empty 
attribute.  This leaves attributes in the same node ocurring after an empty 
attribute not copied.

Is this also a bug or is this how xslt is supposed to work?  thanks
  D






 --- On Fri 01/24,  < ds5j(_at_)excite(_dot_)com > wrote:
From:  [mailto: ds5j(_at_)excite(_dot_)com]
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Date: Fri, 24 Jan 2003 21:31:32 -0500
Subject: RE: [xsl] xsl:copy question

Hi, 
Somehow the xsl in my email did not make it to the post.  So I have written 
some pseudo code this time.  Please see below



Also:
WHile using xalan I notice when a deep copy is done empty attributes are not 
copied.  

But when shallow copies are done empty attributes get copied.  To address the 
fact that empty attributes were being copied I had to fix the traditional code 
tp have an attribute not equal to empty test.

Does anyone why this happens as well?

Hi,

   While editing a copy stylesheet to copy everything except empty attributes I 
came across some weird results.

   I got th stylesheet to work but did not understand why some attributes were 
being copied to the next node.

Example:

xsl:template match='@*[.!='']|node()'
'xsl:copy 
xsl:apply-templates match='@*'



The problem ocurred with following input:
'elementA att1='1' att2='' att3='5'
elementB

Output was:
elementA att1='1' 
elementB had att3='5'


Somehow the stylesheet was copying until it encountered an empty attributed and 
then it went to the next node and copied the rest of the attributes from the 
previous node into the next node.

I fixed the stylsheet but would like to understand what was going on and why I 
go weird results.

My fix was :


xsl:template match='@*|node()'
'xsl:copy 
xsl:apply-templates match='@*[.!='']'


I just would to undersrand what was happening , I'm sure the original code was 
buggy but what was wrong with it?

thanks

D.



_______________________________________________
Join Excite! - http://www.excite.com
The most personalized portal on the Web!

 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list



_______________________________________________
<font size=2 face=geneva><b>Join Excite! - <a href=http://www.excite.com 
target=_blank>http://www.excite.com</a></b>
The most personalized portal on the Web!</font>


_______________________________________________
Join Excite! - http://www.excite.com
The most personalized portal on the Web!

 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list



<Prev in Thread] Current Thread [Next in Thread>