RE: [xsl] Add an element to the result xml document

Subject: RE: [xsl] Add an element to the result xml document
From: LVanvleet@xxxxxxxxxx
Date: Mon, 7 Oct 2002 16:06:22 -0500
Joerg,
Thanks for your timely reply.  I understand you technique but that puts an
entire duplicate<MessageID>...</MessageID> following the current
<MessageID>...</MessageID>
I need just of copy of the element <MessageID> following the source
<MessageID> and </Message> following the source </MessageID>
Sorry I wasn't very clear.
Lynda

-----Original Message-----
From: Joerg Heinicke [mailto:joerg.heinicke@xxxxxx]
Sent: Monday, October 07, 2002 3:32 PM
To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Subject: Re: [xsl] Add an element to the result xml document


Hello Lynda,

hmm, I are copying in the wrong way. From the root context you are 
copying everything, you should copy node by node. You can read at 
http://www.w3.org/TR/xslt#copying how identity transformation can look like:

<xsl:template match="@*|node()">
   <xsl:copy>
     <xsl:apply-templates select="@*|node()"/>
   </xsl:copy>
</xsl:template>

Then you only need to add further template matching on <MessageID/> and 
say there, that you want to have it twice in the output:

<xsl:template match="MessageID">
   <xsl:copy>
     <xsl:apply-templates select="@*|node()"/>
   </xsl:copy>
   <xsl:copy>
     <xsl:apply-templates select="@*|node()"/>
   </xsl:copy>
</xsl:template>

Regards,

Joerg


LVanvleet@xxxxxxxxxx wrote:
> I have sucessfully copied all the elements in source xml to result xml but
I
> also want duplicates of some elements.  In the partial xml doc below I
want
> the result to contain two copies of the <MessageID> and </MessageID>
> elements.
> 
> I am using this XSLT:
> 
> <?xml version='1.0'?>
> <xsl:transform version="1.0"
>        xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
> <xsl:output method="xml" indent="yes"/>
> 
> <!-- copy all the elements to the result document -->
> <xsl:template match="/">
> 	<xsl:copy-of select="."/>
> </xsl:template>
> 
> <xsl:template match="Order">
> 	<xsl:apply-templates/>
> </xsl:template>
> 
> <xsl:template match="//ListOfMessageID/MessageID">
> 	<!-- add an extra <MessageID> and </MessageID> element -->
>     <xsl:element name="MessageID"/>
>     <xsl:apply-templates select="node()"/>
>   </xsl:template>
>   
> </xsl:transform>
> 
> On a document that starts with the elements:
> 
> <?xml version="1.0"?>
> <!-- Exostar xCBL 3.0 Order ICD -->
> <Order>
> 	<OrderHeader>
> 		<OrderNumber>
> 			<BuyerOrderNumber>3</BuyerOrderNumber>
> 			<SellerOrderNumber/>
> 			<ListOfMessageID>
> 				<MessageID>
> 					<IDNumber/>
> 					<IDAssignedBy>
> 						<IDAssignedByCoded/>
> 						<IDAssignedByCodedOther/>
> 					</IDAssignedBy>
> 					<IDAssignedDate/>
> 				</MessageID>
> 			</ListOfMessageID>
> 		</OrderNumber>
> 
> Lynda Van Vleet
> E-Procurement Technical Specialist
> 
> Newark Electronics
> 4801 North Ravenswood Avenue
> Chicago IL 60640-4496
> 773 907 5919
> 
> 
>  XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
> 
> 


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

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


Current Thread