Re: [xsl] XSLT2.0 compatibility

Subject: Re: [xsl] XSLT2.0 compatibility
From: "Mukul Gandhi" <gandhi.mukul@xxxxxxxxx>
Date: Sat, 2 Sep 2006 10:18:46 +0530
Hi Jessica,
  This error message is correct implementation by the XSLT processor.

You must follow this pattern, while creating elements and attributes:

Create element (a)
  Create element a's attributes
Create any child elements

It is quite obvious, you cannot create child elements before creating
parent element's (here a) attributes.

On 9/2/06, Lin, Jessica <jlin@xxxxxxxxxxx> wrote:
I used to run my xslt 1.0 fine with saxon xslt processor1.0. After I migrated to xslt processor2.0, I meet the strange error. It complains a simple attribute copy command in my xslt file which is <xsl:copy-of select="@*"/>. The error message is

Error at xsl:copy-of on line 141 of file:///C:/trex-dev/Trunk/Projects/BFW/bde.bfw.core/resources/transform.xslt:
 XTDE0410: An attribute node (key) cannot be created after the children of the containing element
** Transformation error

; SystemID: file:///C:/trex-dev/Trunk/Projects/BFW/bde.bfw.core/resources/transform.xslt; Line#: 141; Column#: -1
net.sf.saxon.trans.DynamicError: An attribute node (key) cannot be created after the children of the containing element
 at net.sf.saxon.instruct.CopyOf.processLeavingTail(CopyOf.java:138)
 An attribute node (key) cannot be created after the children of the containing element
 at net.sf.saxon.instruct.Block.processLeavingTail(Block.java:330)
 at net.sf.saxon.instruct.Instruction.process(Instruction.java:90)
 at net.sf.saxon.instruct.ElementCreator.processLeavingTail(ElementCreator.java:162)
 at net.sf.saxon.instruct.Block.processLeavingTail(Block.java:330)
 at net.sf.saxon.instruct.Template.expand(Template.java:95)
 at net.sf.saxon.instruct.Template.processLeavingTail(Template.java:79)
 at net.sf.saxon.instruct.ApplyTemplates.applyTemplates(ApplyTemplates.java:290)
 at net.sf.saxon.instruct.ApplyTemplates.apply(ApplyTemplates.java:169)
 at net.sf.saxon.instruct.ApplyTemplates.process(ApplyTemplates.java:129)
 at net.sf.saxon.instruct.ElementCreator.processLeavingTail(ElementCreator.java:162)
 at net.sf.saxon.instruct.Copy.processLeavingTail(Copy.java:123)
 at net.sf.saxon.instruct.Template.expand(Template.java:95)
 at net.sf.saxon.instruct.Template.processLeavingTail(Template.java:79)
 at net.sf.saxon.instruct.ApplyTemplates.applyTemplates(ApplyTemplates.java:290)
 at net.sf.saxon.instruct.ApplyTemplates.apply(ApplyTemplates.java:169)
 at net.sf.saxon.instruct.ApplyTemplates.process(ApplyTemplates.java:129)
 at net.sf.saxon.instruct.ElementCreator.processLeavingTail(ElementCreator.java:162)
 at net.sf.saxon.instruct.Copy.processLeavingTail(Copy.java:123)
 at net.sf.saxon.instruct.Template.expand(Template.java:95)
 at net.sf.saxon.instruct.Template.processLeavingTail(Template.java:79)
 at net.sf.saxon.instruct.ApplyTemplates.applyTemplates(ApplyTemplates.java:290)
 at net.sf.saxon.instruct.ApplyTemplates.apply(ApplyTemplates.java:169)
 at net.sf.saxon.instruct.ApplyTemplates.process(ApplyTemplates.java:129)
 at net.sf.saxon.instruct.Copy.processLeavingTail(Copy.java:170)
 at net.sf.saxon.instruct.Template.expand(Template.java:95)
 at net.sf.saxon.instruct.Template.processLeavingTail(Template.java:79)
 at net.sf.saxon.instruct.ApplyTemplates.applyTemplates(ApplyTemplates.java:290)
 at net.sf.saxon.Controller.transformDocument(Controller.java:1406)
 at net.sf.saxon.Controller.transform(Controller.java:1234)


The strange situation is the saxon xslt 2.0 processor does not complain all attribute copy. Many <xsl:copy-of select="@*"/> work fine. I want to know do any of you experience this before? Have any clue?



Thanks, Jessica


--
Regards,
Mukul Gandhi

http://gandhimukul.tripod.com

Current Thread