xsl-list
[Top] [All Lists]

Re: Clarify Add an element to the result xml document

2002-10-08 10:44:17
Hello Lynda,

then it's easy:

<xsl:template match="MessageID">
  <xsl:copy>
  <!-- here the copy template is applied only to possible attributes -->
    <xsl:apply-templates select="@*"/>
    <xsl:copy>
      <!-- here the copy template is applied to attributes and nodes -->
      <xsl:apply-templates select="@*|node()"/>
    </xsl:copy>
  </xsl:copy>
</xsl:template>

Regards,

Joerg

LVanvleet(_at_)newark(_dot_)com wrote:
To clarify what I need.
This is source XML:

<Order>
        <OrderHeader>
                <OrderNumber>
                        <BuyerOrderNumber>3</BuyerOrderNumber>
                        <SellerOrderNumber/>
                        <ListOfMessageID>
                <!-- one MessageID element -->
                                <MessageID>
                                        <IDNumber/>
                                        <IDAssignedBy>
                                                <IDAssignedByCoded/>
                                                <IDAssignedByCodedOther/>
                                        </IDAssignedBy>
                                        <IDAssignedDate/>
                                </MessageID>
                        </ListOfMessageID>
                </OrderNumber>

This is what I need the result to look like:

<Order>
        <OrderHeader>
                <OrderNumber>
                        <BuyerOrderNumber>3</BuyerOrderNumber>
                        <SellerOrderNumber/>
                        <ListOfMessageID>
                <!-- nested MessageID elements -->
                                <MessageID>
                                <MessageID>
                                        <IDNumber/>
                                        <IDAssignedBy>
                                                <IDAssignedByCoded/>
                                                <IDAssignedByCodedOther/>
                                        </IDAssignedBy>
                                        <IDAssignedDate/>
                                </MessageID>
                                </MessageID>
                        </ListOfMessageID>
                </OrderNumber>


The Solution from Michael Kay that follows duplicated the MessageID and
children:
<xsl:template match="MessageID">
<xsl:copy>
<xsl:copy-of select="@*"/>
<xsl:apply-templates/>
</xsl:copy>
<!-- and again... -->
<xsl:copy>
<xsl:copy-of select="@*"/>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>

The Solutions from Joerg adds a <MessageID/> element in place of the child
elements:
<xsl:template match="MessageID">
    <xsl:copy>
      <xsl:copy>
      </xsl:copy>
    </xsl:copy>
</xsl:template>

The burning question is why do I want this.  We receive E-Procurement orders
in xCBL, cXML, etc.  We set up mapping in NetFish to our order response and
back-end.  When we start a new element map in NetFish (now Iona E2A
Integrator) we repeat element tags to show repeating groups of elements.

Thanks again for your help - I have tried so many ways to solve this without
manually adding the tags.
Lynda

Lynda Van Vleet


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



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