|
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 |