Subject: Lookup table and maintaining hierarchy From: Mir Farooq Ali <mfali@xxxxxxxxx> Date: Sun, 06 Jun 2004 16:18:04 -0400 |
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>
<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>
<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>
<?xml version="1.0" encoding="iso-8859-1"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<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>
<?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.
-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 --------------------------------------------
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] Duplicate elements. HELP!, Michael Kay | Thread | RE: [xsl] Lookup table and maintain, Michael Kay |
Duplicate elements. HELP!, Stoaks, Max | Date | RE: [xsl] Duplicate elements. HELP!, Michael Kay |
Month |