xsl-list
[Top] [All Lists]

RE: [xsl] create xml from incoming xml and load it into a variable

2008-07-25 13:57:36
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(_at_)yahoo(_dot_)com] 
Sent: 25 July 2008 21:37
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
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(_dot_)j(_dot_)welch(_at_)gmail(_dot_)com> wrote:

From: Andrew Welch <andrew(_dot_)j(_dot_)welch(_at_)gmail(_dot_)com>
Subject: Re: [xsl] create xml from incoming xml and load it into a 
variable
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Date: Friday, July 25, 2008, 6:02 AM
2008/7/25 sudheshna iyer <sudheshnaiyer(_at_)yahoo(_dot_)com>:
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/


--~------------------------------------------------------------------
XSL-List info and archive: 
http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to:
http://lists.mulberrytech.com/xsl-list/
or e-mail:
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--


      

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: 
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--



--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--