Subject: RE: Lookup table and maintaining hierarchy
From: "Michael Kay" <mhk@xxxxxxxxx>
Date: Sun, 6 Jun 2004 21:42:03 +0100
|
This looks like one of those "spot the difference" competitions. In the 30
seconds I allow for looking at questions on this list, I can't spot the
difference between your lookup file and your output file.
Perhaps you should spend a little longer formulating the question.
Michael Kay
> -----Original Message-----
> From: Mir Farooq Ali [mailto:mfali@xxxxxxxxx]
> Sent: 06 June 2004 20:18
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: Lookup table and maintaining hierarchy
>
> I had posted this question a long time, got some responses
> but could not
> solve the problem completely.
>
> Consider my XML file that looks like this
> <?xml version="1.0" encoding="utf-8" ?>
> <TM>
> <T id="something" TC="a">
> <Type>b</Type>
> <Prefs>
> <UC>S</UC>
> <UPS>1</UPS>
> </Prefs>
> <ST>
> <T id="somethinga" TC="a">
> <Type>b</Type>
> <Prefs>
> <UC>S</UC>
> <UPS>1</UPS>
> </Prefs>
> <ST>
> <T id="somethingb" TC="a">
> <Type>b</Type>
> <Prefs>
> <UC>S</UC>
> <UPS>1</UPS>
> </Prefs>
> </T>
> <T id="somethingc" TC="a">
> <Type>b</Type>
> <Prefs>
> <UC>S</UC>
> <UPS>2</UPS>
> </Prefs>
> </T>
> </ST>
> </T>
> <T id="somethingd" TC="a">
> <Type>b</Type>
> <Prefs>
> <UC>S</UC>
> <UPS>2</UPS>
> </Prefs>
> </T>
> </ST>
> </T>
> <T id="somethinge" TC="a">
> <Type>b</Type>
> <Prefs>
> <UC>S</UC>
> <UPS>2</UPS>
> </Prefs>
> </T>
> </TM>
>
>
>
> With the following lookup file
>
> <AB>
> <TC name="a">
> <TTM type="b">
> <UCM preference="1">
> <UC>S</UC>
> <UPS>
> <pa prefnum="1">
> <XXXX>
> <YYYY />
> <ZZZZ />
> </XXXX>
> </pa>
> <pa prefnum="2">
> <WWWW />
> </pa>
> </UPS>
> </UCM>
> </TTM>
> </TC>
> </AB>
>
>
> The generated output should look something like this
>
> <AB>
> <TC name="a">
> <TTM type="b">
> <UCM preference="1">
> <UC>S</UC>
> <UPS>
> <pa prefnum="1">
> <XXXX>
> <YYYY />
> <ZZZZ />
> </XXXX>
> </pa>
> <pa prefnum="2">
> <WWWW />
> </pa>
> </UPS>
> </UCM>
> </TTM>
> </TC>
> </AB>
>
>
> I am using this stylesheet below
>
> <?xml version="1.0" encoding="iso-8859-1"?>
> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
> version="1.0">
>
> <xsl:output indent="yes"/>
>
> <xsl:template match="T">
> <xsl:variable name="tc" select="@TC"/>
> <xsl:variable name="ttm" select="Type"/>
> <xsl:variable name="uc" select="Prefs/UC"/>
> <xsl:variable name="ups" select="Prefs/UPS"/>
> <xsl:for-each select="document('ali-lookup.xml')">
> <xsl:apply-templates mode="modify"
> select="/AB/TC[@name=$tc]/TTM[@type=$ttm]/
>
> UCM[UC=$uc]/UPS/pa[@prefnum=$ups]/*"/>
> </xsl:for-each>
> </xsl:template>
>
> <xsl:template match="@*|node()">
> <xsl:copy>
> <xsl:apply-templates select="@*|node()"/>
> </xsl:copy>
> </xsl:template>
>
> <xsl:template match="*" mode="modify" priority="2">
> <p c="{name(.)}">
> <xsl:apply-templates mode="modify"/>
> </p>
> </xsl:template>
>
> <xsl:template match="@*|node()" mode="modify">
> <xsl:copy>
> <xsl:apply-templates select="@*|node()"/>
> </xsl:copy>
> </xsl:template>
>
> </xsl:stylesheet>
>
> I am getting this
>
> <?xml version="1.0" encoding="utf-8" ?>
> <S>
> <p id="something1" c="XXXX">
> <p id="something11" c="YYYY" />
> <p id="something12" c="ZZZZ" />
> </p>
> <p id="somethinga1" c="XXXX">
> <p id="somethinga11" c="YYYY" />
> <p id="somethinga12" c="ZZZZ" />
> </p>
> <p id="somethingb1" c="XXXX">
> <p id="somethingb11" c="YYYY" />
> <p id="somethingb12" c="ZZZZ" />
> </p>
> <p id="somethingc1" c="WWWW" />
> <p id="somethingd1" c="WWWW" />
> <p id="somethinge1" c="WWWW" />
> </S>
>
> where every transformed node is at the same level. I want to preserve
> the hierarchy of the original xml file. Any help is appreciated.
>
> Thanks,
>
> -Farooq.
> --
> Mir Farooq Ali
>
> Computer Science, Virginia Tech,
> Email: miali@xxxxxxxxx
> Web: http://purl.org/net/farooq
> Office: 525 McBryde Hall
> Tel: (540) 231-1927 (Office)
> --------------------------------------------
> (c) 2004 Mir Farooq Ali All rights reserved
> --------------------------------------------
>
>
>
>
>
>
> --+------------------------------------------------------------------
> 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@xxxxxxxxxxxxxxxxxxxxxx>
> --+--
>
|