xsl-list
[Top] [All Lists]

Re: [xsl] Mapping Values.

2006-03-15 02:39:44
Hi Amal,
   Please try this stylesheet. It uses identity template along with
templates for other rules.

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

<xsl:output method="xml" indent="yes" />

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

<xsl:template match="@*[. = 'abcd']">
    <xsl:attribute name="{name()}">1</xsl:attribute>
</xsl:template>

<xsl:template match="@*[(. = 'xxxx') or (. = 'yyyy')]">
    <xsl:attribute name="{name()}">2</xsl:attribute>
</xsl:template>

<xsl:template match="@*[. = 'aaaa']">
    <xsl:attribute name="{name()}">3</xsl:attribute>
</xsl:template>

</xsl:stylesheet>

Regards,
Mukul

On 3/14/06, Amal <raj(_dot_)amal(_at_)gmail(_dot_)com> wrote:
I have an xml of the form

<root>
<bldg loc=3D3D3D"abcd" subloc=3D3D3D"abcd" />
<bldg loc=3D3D3D"xxxx" subloc=3D3D3D"yyyy" />
<bldg loc=3D3D3D"aaaa" subloc=3D3D3D"aaaa" />

<addr bldgloc=3D3D3D"aaaa" bldgsubloc=3D3D3D"aaaa" />
<addr bldgloc=3D3D3D"xxxx" bldgsubloc=3D3D3D"yyyy" />

 </root>

I have to convert it to
<root>
<bldg loc=3D3D3D"1" subloc=3D3D3D"1" />
<bldg loc=3D3D3D"2" subloc=3D3D3D"2" />
<bldg loc=3D3D3D"3" subloc=3D3D3D"3" />

<addr bldgloc=3D3D3D"3" bldgsubloc=3D3D3D"3" />
<addr bldgloc=3D3D3D"2" bldgsubloc=3D3D3D"2" />

</root>

So for this purpose I want to map some strings to some values that can be
used later. Like when I map bldg block in input to bldg block in output I
want to map the attributes to a number and then use the same when mapping
addr tags.
How shud I go about doing it ?


Amal.

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--

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