xsl-list
[Top] [All Lists]

RE: order problem

2003-06-27 01:51:25

I have this element hierarchy

Source::
root
    body
        record1(*)
        record2(*)

Destination::
root1
    body1
        record3(*)
        record4(*)

Actually, in the text of your message, you suggest that your source has
a quite different structure, namely:

   root
       body
           ( record1 | record2 ) *
            
This is a classic case for xsl:apply-templates.

<xsl:apply-templates select="record1 | record2"/>

<xsl:template match="record1">
...
</xsl:template>

<xsl:template match="record2">
...
</xsl:template>



Here occurence of record1 and record2 can occur any number of 
times.This will be my source xml on which the transform is to be 
applied.Following is the xsl

<xsl:template match="/" name="root">
<xsl:element name="root1">
 <xsl:element name="body1">
  <xsl:for-each select="/root/body/record1">
   <xsl:element name="record3"><xsl:value-of 
select="concat(.,'1')"/></xsl:element>
  </xsl:for-each>
  <xsl:for-each select="/root/body/record2">
   <xsl:element name="record4"><xsl:value-of 
select="concat(.,'2')"/></xsl:element>
  </xsl:for-each>
 </xsl:element>
</xsl:element>
</xsl:template>

Only problem would be that i need the order of records to be same in
output
as in input and input of records can be in random order,viz 
<record1><record1><record2><record1><record2><record1>.But with the 
two for-loops this will break the sequence.

How can this be done.

Any help on this would be deeply appreciated.

Thanks,
Shadab



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



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



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