[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

Re: [xsl] Using a variable as the xml node - ignore my previous mail


Subject: Re: [xsl] Using a variable as the xml node - ignore my previous mail
From: "Joe Fawcett" <joefawcett@xxxxxxxxxxx>
Date: Fri, 24 Mar 2006 15:21:57 -0000

----- Original Message ----- From: "bharathi kongara" <bharathikongara@xxxxxxxxx>
To: <xsl-list@xxxxxxxxxxxxxxxxxxxxxx>
Sent: Friday, March 24, 2006 2:58 PM
Subject: [xsl] Using a variable as the xml node - ignore my previous mail



Hi everyone,

I've been playing with this problem from yesterday,
tried all sort of solutions, but no use.

Here is the problem:

In my xsl, I'm referring to a configuration file which
is an xml file.

1000ConfigFile.xml:

<ConfigFile>
<100Code>Hundred<100Code>
<200Code>Twohundred</200Code>
.
.
.
</ConfigFile>

and the xsl file is:

key1 refers to the 1000 in the name of the config
file.
key2 refers to the 100 or 200 ... in the nodes in the
config file.
They will come from a stored procedue.

<xsl:variable name="Config"
select="document(concat(//key1,'Config.xml'))"/>

Now my problem is, I've to refer to the 100 node or
200 node etc which depends on the key2.

I'm doing this - define a vraible for refrerring to
the node based on key2.

<xsl:variable name="loc"
select="concat('$Config/ConfigFile/',//key2,'Code')"
/>

When I'm referring to the "loc" variable in the xsl
later as $loc, it is putting in the string
"$Config/ConfigFile/100Code" instead of substituting
the value "Hundred" from that node. But it works when
I directly use the $Config/ConfigFile/100Code instead
of $loc.

Any ideas? Any help is greatly appreciated.

Thanks in Advance,
Bharathi



Idea 1, change your XML, it is much easier to handle something like this:
<ConfigFile>
<Code key="100">Hundred</Code>
<Code key="00">Two Hundred</Code>
..

If you must stick with what you have then you need to use XPath like the following which are not very elegant:
<xsl:variable name="key2" select="path to key2 goes here"/>
$Config/ConfigFile/*[name() = $key2]


--

Joe


Current Thread
Keywords