I am not sure where in the script you need this but the technique you
want is something like this:
$data = the LR elements
$find = the Lookup elements
select="$data/LR[(_at_)from=$find/@from]"
Douglas Ross
Developer, HTML UI Framework
Kronos
E-mail: dross(_at_)kronos(_dot_)com
www.kronos.com
-----Original Message-----
From: David Laub [mailto:dlaub(_at_)prodigy(_dot_)net]
Sent: Friday, March 11, 2005 9:24 PM
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: [xsl] Data-Dtriven node selection
I may be attempting the impossible. Or I just may be
too stupid to figure it out
What I want to do is this: use a xml file to specify
which nodes from another xml file to select using a
data-driven xslt template.
For example:
1) My base xml file (LR.xml) , from which I want to
select nodes in a data-drivem manner
<LR>
<Name>David Laub</Name>
<Age>53</Age>
<Addr>4645 W. Jerome</Addr>
<Telephone>847-674 2266</Telephone>
<City>Skokie</City>
<State>IL</State>
</LR>
2) My data-driven "selector" file (LRLookup1.xml) -
the intent being for this specific example to select
only the name & city nodes - I also want to rename the
nodes.
<LRLookUp1>
<Element from="LR/Name" to="Name"/>
<Element from="LR/City" to="HomeTown"/>
</LRLookUp1>
3) Finally my stylesheet (GenericLRFiler.xsl) - which
doesn't quite work - I associate it with LRLookup1.xml
and the stylesheet then explicitly also reads the
LR.xml file
The key line is:
<xsl:value-of select="$LossReport/./@from"/>
That's the line that fails: I want to append in a
data-driven manner the specific nodes to the existing
node-tree in the variable $LossReport. The XPath
isn't smart enough to know I want to evaluate ./@from
(which holds LR/Name & LR/City from the data-driven
selector file) I guess it just thinks I'm appending
the string ./@from as part of the XPath, which returns
nothing
I can succesfully hard code a specific node
<xsl:value-of select="$LossReport/LR/City"/>
but that defeats teh whole purpose of the whole
exercise!
Here's the full stylesheet
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:fo="http://www.w3.org/1999/XSL/Format">
<xsl:output method="xml" indent="yes"/>
<xsl:variable name="LossReport"
select="document('XSLT/LR.xml')"/>
<xsl:template match="*">
<xsl:element name="LRFilteredData">
<xsl:apply-templates/>
</xsl:element>
</xsl:template>
<xsl:template match="/LRLookUp1/Element">
<xsl:element name="{./@to}">
<xsl:value-of select="$LossReport/./@from"/>
</xsl:element>
<xsl:apply-templates/>
</xsl:template>
</xsl:stylesheet>
This is actual output:
<LRFilteredData>
<Name></Name>
<HomeTown></HomeTown>
</LRFilteredData>
what I want for output is:
<LRFilteredData>
<Name>David Laub</Name>
<HomeTown>Skokie</HomeTown>
</LRFilteredData>
So is this magic do-able?
Thanks in advance
David Laub
--~------------------------------------------------------------------
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(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--
--~------------------------------------------------------------------
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(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--