Re: [xsl] XPath Question.

Subject: Re: [xsl] XPath Question.
From: "Joerg Heinicke" <joerg.heinicke@xxxxxx>
Date: Fri, 21 Dec 2001 03:46:50 +0100
Hello Raj,

I created a mapping.xml with the follwing structure:

<mapping>
    <map OrderId="1001" mapped="1"/>
    <map OrderId="1002" mapped="2"/>
    <map OrderId="1003" mapped="3"/>
    <map OrderId="1004" mapped="4"/>
</mapping>

The I have the followng stylesheet:

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

<xsl:template match="/Customer">
    <xsl:text>OUT</xsl:text>
    <xsl:apply-templates select="Order[OrderId = $mapping/map/@OrderId]"/>
    <xsl:if test="Order[not(OrderId = $mapping/map/@OrderId)]">
        <xsl:text>*99</xsl:text>
    </xsl:if>
</xsl:template>

<xsl:template match="Order">
    <xsl:text>*</xsl:text>
    <xsl:value-of select="$mapping/map[@OrderId =
current()/OrderId]/@mapped"/>
</xsl:template>

The output: OUT*1*2*3*4*99.

Hope this helps,

Joerg

> Hi All,
> My XML file is some thing like this
>
> <Customer>
> <Order>
> <OrderId>1001</OrderId>
> </Order>
> <Order>
> <OrderId>1002/OrderId>
> </Order>
> <Order>
> <OrderId>1003</OrderId>
> </Order>
> <Order>
> <OrderId>1004</OrderId>
> </Order>
> <Order>
> <OrderId>1007</OrderId>
> </Order>
> <Order>
> <OrderId>1009</OrderId>
> </Order>
> </Customer>
>
> I have to print the output by mapping the codes
> 1001 - 1
> 1002 - 2
> 1003 - 3
> 1004 - 4
> If any OrderId is not in the above mapping table, I have to print 99.
>
> Output will be something like this:
> OUT*1*2*3*4*99*99
>
> My Problem here is if I have more than one OrderId codes that does not
match
> the mapping table, I have to print only one 99.
>
> Can any body help me, on How I can do that.
>
> Thanks,
> Raj..


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


Current Thread