Re: [xsl] Question about variable-field lookup tables

Subject: Re: [xsl] Question about variable-field lookup tables
From: Mir Farooq Ali <miali@xxxxxxxxx>
Date: Tue, 13 Jan 2004 21:59:10 -0500
G. Ken Holman wrote:

> At 2004-01-12 11:41 -0500, Mir Farooq Ali wrote:
>
>> I need some help with a particular problem I'm trying to solve. I need to
>> transform an xml document that is based partially on information that is
>> extracted from another xml file whose purpose is to act like a lookup
>> table.
>
>
> Sounds like all you need to do is change your context ... you don't
> describe the meaning of all your markup, but I hope the following helps.
>
> .................... Ken
>
> T:\ftemp>type ali-lookup.xml
> <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>
>
> T:\ftemp>type ali.xml
> <TM>
> <T id="something" TC="a">
> <Type>b</Type>
> <Prefs>
> <UC>S</UC>
> <UPS>1</UPS>
> </Prefs>
> </T>
> <T id="something" TC="a">
> <Type>b</Type>
> <Prefs>
> <UC>S</UC>
> <UPS>2</UPS>
> </Prefs>
> </T>
> ...
> </TM>
>
> T:\ftemp>type ali.xsl
> <?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>
>
> T:\ftemp>saxon ali.xml ali.xsl
> <?xml version="1.0" encoding="utf-8"?>
> <TM>
>
> <p c="XXXX">
>
> <p c="YYYY"/>
>
> <p c="ZZZZ"/>
>
> </p>
>
> <p c="WWWW"/>
> ...
> </TM>
> T:\ftemp>rem
>
>
>
> --
> North America (Washington, DC): 3-day XSLT/2-day XSL-FO 2004-03-15
> Instructor-led on-site corporate, government & user group training
> for XSLT and XSL-FO world-wide: please contact us for the details
>
> G. Ken Holman mailto:gkholman@xxxxxxxxxxxxxxxxxxxx
> Crane Softwrights Ltd. http://www.CraneSoftwrights.com/s/
> Box 266, Kars, Ontario CANADA K0A-2E0 +1(613)489-0999 (F:-0995)
> ISBN 0-13-065196-6 Definitive XSLT and XPath
> ISBN 0-13-140374-5 Definitive XSL-FO
> ISBN 1-894049-08-X Practical Transformation Using XSLT and XPath
> ISBN 1-894049-11-X Practical Formatting Using XSL-FO
> Member of the XML Guild of Practitioners: http://XMLGuild.info
> Male Breast Cancer Awareness http://www.CraneSoftwrights.com/s/bc
>
>
> XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
>


Thank you Ken and David for your replies. Your suggestions worked well.

Regarding the context of my application, the XML file that needs to be transformed represents an abstract model that is converted to a more concrete representation of an user interface.

Thanks,

-Farooq.
--
Mir Farooq Ali

Computer Science, Virginia Tech,
Email: miali@xxxxxxxxx
Web: http://purl.org/net/farooq
--------------------------------------------
(c) 2004 Mir Farooq Ali  All rights reserved
--------------------------------------------



XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list


Current Thread