xsl-list
[Top] [All Lists]

Re: [xsl] Accessing xml node data using variable

2006-04-22 08:27:38
Thanks Michael for the solution. The example given here is cooked up,
but we wanted to use this in our live situation. Hence we cannot
change the design.

This XPath expression has solved our case. Thanks again.

Sanket

On 4/22/06, Michael Kay <mike(_at_)saxonica(_dot_)com> wrote:
Firstly, packing information into structured element names is bad design.
This is what attributes are for. Don't use <title-en> and <title-nl>, use
<title xml:lang="en"> and <title xml:lang="nl">.

Secondly, this doesn't work:

<xsl:value-of select="root/{$MyTitleName}"/>

You can't use curly braces inside an XPath expression, and you can't
construct XPath expressions dynamically from strings. You want

<xsl:value-of select="root/*[name() = $MyTitleName]"/>

or if you change the design,

root/title[(_at_)xml-lang=$lang]

Michael Kay
http://www.saxonica.com/

-----Original Message-----
From: Sanket Pattekar [mailto:sanket(_dot_)pattekar(_at_)gmail(_dot_)com]
Sent: 22 April 2006 10:11
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: [xsl] Accessing xml node data using variable

Hi

I have a xml file called hello.xml that looks like <?xml
version="1.0"?> <?xml-stylesheet type="text/xsl"
href="hello.xsl"?> <root> <greeting>Hello world.</greeting>
<title-en>News Title English</title-en> <title-nl>News Title
Dutch</title-nl> </root>

Then I have the stylesheet called hello.xsl that looks like
<?xml version="1.0" encoding="ISO-8859-1"?> <xsl:stylesheet
version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
      <xsl:variable name="lang" select="'en'" />
      <xsl:variable name="MyTitleName"
select="concat('title-',$lang)"/>

      <xsl:template match="/">
              <head><title>Greeting</title></head>
                      <body>
                      <p>Words of greeting:<br/>
                              <b><i><u><xsl:value-of
select="root/greeting"/></u></i></b><br/>
                              <b><i><u><xsl:value-of
select="root/title-en"/></u></i></b><br/>
                              <b><i><u><xsl:value-of
select="root/title-nl"/></u></i></b><br/>
                              <b><i><u><xsl:value-of
select="root/{$MyTitleName}"/></u></i></b><br/>
                       </p>
                      </body>
      </xsl:template>
</xsl:stylesheet>

Now I want to create a variable called 'MyTitleName' in the
stylesheet, that refrences my xml node. Any suggestion would
be welcome.

Sanket

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



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

<Prev in Thread] Current Thread [Next in Thread>