[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

Re: [xsl] order update


Subject: Re: [xsl] order update
From: "Joerg Heinicke" <joerg.heinicke@xxxxxx>
Date: Tue, 26 Mar 2002 21:38:13 +0100

XML:

<root>
    <order ordernr="100">
        <orderline orderlinenr="1">
            <art>1</art>
        </orderline>
    </order>
    <order ordernr="101">
        <orderline orderlinenr="1">
            <art>1</art>
        </orderline>
    </order>
    <order ordernr="102">
        <orderline orderlinenr="1">
            <art>1</art>
        </orderline>
    </order>
</root>

order.xml

<root>
    <order ordernr="101">
        <orderline orderlinenr="2">
            <art>50</art>
        </orderline>
        <orderline orderlinenr="3">
            <art>60</art>
        </orderline>
    </order>
</root>

XSL

<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

    <xsl:output indent="yes"/>

    <xsl:variable name="file" select="document('order.xml')"/>

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

    <xsl:template match="order">
        <xsl:copy>
            <xsl:apply-templates select="@*"/>
            <xsl:apply-templates select="orderline |
$file/root/order[@ordernr=current()/@ordernr]/orderline">
                <xsl:sort select="@orderlinenr"/>
            </xsl:apply-templates>
        </xsl:copy>
    </xsl:template>

</xsl:stylesheet>

Output

<root>
    <order ordernr="100">
        <orderline orderlinenr="1">
            <art>1</art>
        </orderline>
    </order>
    <order ordernr="101">
        <orderline orderlinenr="1">
            <art>1</art>
        </orderline>
        <orderline orderlinenr="2">
            <art>50</art>
        </orderline>
        <orderline orderlinenr="3">
            <art>60</art>
        </orderline>
    </order>
    <order ordernr="102">
        <orderline orderlinenr="1">
            <art>1</art>
        </orderline>
    </order>
</root>

Hope this helps,

Joerg

> i have an xml that contains 1 orderline of order 100
>
> <order ordernr="100">
>   <orderline orderlinenr="1">
>      <art>1</art>
>   </orderline>
> </orderline>
>
> now i want to add new orderlines from an update.xml file
> which contains
>
> <order ordernr="100">
>   <orderline orderlinenr="2">
>      <art>50</art>
>   </orderline>
>   <orderline orderlinenr="3">
>      <art>60</art>
>   </orderline>
> </orderline>
>
> How do i put these 2 together without loosing the first orderline that is
already in this order.
>
> output xml should be
>
> <order ordernr="100">
>   <orderline orderlinenr="1">
>      <art>1</art>
>   </orderline>
>   <orderline orderlinenr="2">
>      <art>50</art>
>   </orderline>
>   <orderline orderlinenr="3">
>      <art>60</art>
>   </orderline>
> </orderline>
>
> thanks
> pGl


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



Current Thread
Keywords