Subject: RE: [xsl] create xml from incoming xml and load it into a variable From: "Michael Kay" <mike@xxxxxxxxxxxx> Date: Fri, 25 Jul 2008 21:57:03 +0100 |
Well, you can't use xsl:key anywhere other other than as a child of xsl:stylesheet. How to correct your code depends rather on what you thought your code was intended to mean. I suspect you want the xsl:key as written, but moved to the right place, and a call on the key() function where you currently have the xsl:key element. Remember that an xsl:key declaration is not tied to a specific document or tree. It's the call on key() that determines which tree will be searched. Michael Kay http://www.saxonica.com/ > -----Original Message----- > From: sudheshna iyer [mailto:sudheshnaiyer@xxxxxxxxx] > Sent: 25 July 2008 21:37 > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > Subject: Re: [xsl] create xml from incoming xml and load it > into a variable > > Thank you. > > I did this using: > <xsl:template match="root"> > <xsl:variable name="var"> > <xsl:element name="subroot" use-attribute-sets="id"> > <xsl:apply-templates select="bbb"/> > </xsl:element> > </xsl:variable> > > <!--Traverse the variable--> > <xsl:for-each select="xalan:nodeset($var)/root/subroot"> > <xsl:key name="ccc" match="subroot" use="11"/> ===> > ERROR!!!! > </xsl:for-each> > </xsl:template> > > Sample xml: > <?xml version="1.0" encoding="UTF-8"?> > <root> > <subroot id="11111"> > <ccc>11</ccc> > <ddd>2005-08-26</ddd> > <eee>aaaaaaaa</eee> > </subroot> > <subroot id="11111"> > <ccc>22</ccc> > <ddd>2005-08-26</ddd> > <eee>aaaaaaaa</eee> > </subroot> > <subroot id="11111"> > <ccc>11</ccc> > <ddd>2005-08-26</ddd> > <eee>aaaaaaaa</eee> > </subroot> > </root> > > Inside the loop, I need to use <xsl:key name="ccc" > match="subroot" use="ccc"/>. > But while transforming, I am receiving the following error: > > xsl:key is not allowed in this position in the stylesheet! > > How do I use "key" tag inside a variable which contains xml? > > I appreciate your help. > > > --- On Fri, 7/25/08, Andrew Welch <andrew.j.welch@xxxxxxxxx> wrote: > > > From: Andrew Welch <andrew.j.welch@xxxxxxxxx> > > Subject: Re: [xsl] create xml from incoming xml and load it into a > > variable > > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > > Date: Friday, July 25, 2008, 6:02 AM > > 2008/7/25 sudheshna iyer <sudheshnaiyer@xxxxxxxxx>: > > > How do I create xml from incoming xml and load it into > > a variable from xsl? Afterr loading I > > > > > > have to loop through the variable for doing more xsl > > transformations? > > > > > > My xsl has incoming xml. I have to create another xml > > of different format, put it in a variable > > > and loop through that variable to apply more xsl > > transformations. > > > > > > Do the first pass in a variable: > > > > <xsl:variable name="first-pass"> > > <xsl:apply-templates mode="first-pass"/> </xsl:variable> > > > > The do the second pass by calling apply-templates on the first pass: > > > > <xsl:apply-templates select="$first-pass"/> > > > > ...or something similar - you may want to mode the second > pass if it's > > less work. Remember to have two root match templates, one > moded, to > > ensure do don't get infinite recursion. > > > > If the first pass could be a one-off batch process, then > you're better > > off separating out the transforms than repeatedly doing the > first pass > > each time. > > > > -- > > Andrew Welch > > http://andrewjwelch.com > > Kernow: http://kernowforsaxon.sf.net/
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] create xml from incoming , sudheshna iyer | Thread | RE: [xsl] create xml from incoming , sudheshna iyer |
Re: [xsl] create xml from incoming , sudheshna iyer | Date | Re: [xsl] create xml from incoming , Wendell Piez |
Month |