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