Subject: Re: [xsl] Add an element to the result xml document From: Joerg Heinicke <joerg.heinicke@xxxxxx> Date: Mon, 07 Oct 2002 23:53:17 +0200 |
> I need just of copy of the element <MessageID> following the source > <MessageID> and </Message> following the source </MessageID>
<xsl:template match="MessageID"> <xsl:copy> <xsl:copy> </xsl:copy> </xsl:copy> </xsl:template>
<xsl:template match="MessageID"> <xsl:copy> <xsl:copy-of select="@*"/> <xsl:copy> <xsl:apply-templates select="@*"/> </xsl:copy> </xsl:copy> </xsl:template>
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]
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
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] Add an element to the res, LVanvleet | Thread | [xsl] Expected behavior for parsed , John Mostrom |
RE: [xsl] XSL nested tag help, Passin, Tom | Date | Re: [xsl] XSL nested tag help, Joerg Heinicke |
Month |