Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > XML > Re: xslt trouble with xsl:if

Thread Tools

Re: xslt trouble with xsl:if

Peter Flynn
Posts: n/a
z1 wrote:
> hi-
> i am fooling around with soap and weather templates.
> for some reason either this if or select is failing.
> i am very new to xml and found this code at another site.
> i can show you the xml and then the xslt sample code that is not matching.
> please look and if it jumps right off the page give me a tip on why it didnt
> select the data.
> i think for most xslt people this will be easy. i want the if to work if it
> is null because
> the weather service may return null for an attribute.
> from the government weather service:
> <weather time-layout="k-p24h-n5-1">
> <name>Weather Type, Coverage, and Intensity</name>
> <weather-conditions weather-summary="Increasing Clouds"/>
> <weather-conditions weather-summary="Partly Cloudy"/>
> <weather-conditions weather-summary="Partly Cloudy"/>
> <weather-conditions weather-summary="Mostly Sunny"/>
> <weather-conditions weather-summary="Chance Rain Showers">
> <value coverage="chance" intensity="light" weather-type="rain
> showers" qualifier="none"/>
> </weather-conditions>
> </weather>
> from a sample template i found:
> <xsl:template name="weather">
> <xslaram name="position" />
> <xsl:if
> test="/dwml/data/parameters/weather/weather-conditions[position()=$position]/@weather-summary
> !=''">

Depending on how the incoming data is handled (parsed as well-formed
only, or validated), position() may evaluate to one of two things:

a) what you intuitively expect (if you're used to normal text document
markup (HTML, DocBook, TEI, etc): the numeric position of the
weather-conditions *element node* among its siblings (eg for
@weather-summary='Partly Cloudy' this would be "2" and "3");

b) what you don't expect (unless you came to XML via the "data-only"
route): the numeric position of the matching node among *all* types of
siblings, including the "name" element and the (otherwise irrelevant)
white-space between the weather-conditions elements (eg for
@weather-summary='Partly Cloudy' this would be "6" and "8").

I'm unclear why it would want to identify the weather-conditions element
by position anyway.

The reliable way of matching location-among-siblings is to use

> <xsl:value-of
> select="/dwml/data/parameters/weather/weather-conditions[position()=$position]/@weather-summary"/>
> </xsl:if>
> </xsl:template>
> other parts of the templates are generating output (not formatted yet
> though)
> assuming that the path is correct and it looks like it is, why wont this
> match?

Use xsl-message and xsl:value-of to output the actual value of $position
to the console during execution so you can debug it.

> @weather-summary is the attribute that has a value associated with it that
> is not null.
> the path from the root looks ok....

You haven't shown us the whole document, so we'll take it on trust that
there is a containing structure reflecting /dwml/data/parameters

> i want to get into learning a little bit more about xml and xslt.
> i have a book on it and am currently studing a css book too.
> i like the fact that when i combine all the templates with html i can have
> it output
> the results formatted. i need to get better at the xslt processing.

Dave Pawson's excellent XSL FAQ (, and
Mulberry's XSL-LIST mailing list
( are your friends.

Reply With Quote

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off

Similar Threads
Thread Thread Starter Forum Replies Last Post
Including XSLT/XML document within a XSLT document XML 4 12-13-2005 02:26 AM
Multiple XSLT Transforms using a Controller XSLT XML 2 10-19-2005 11:00 AM
ANN: New low-cost XML Editor, XSLT Editor, XSLT Debugger, DTD/Schema Editor Stylus Studio Java 0 08-03-2004 03:53 PM
xslt alone or xslt/java for static site? ted XML 1 01-26-2004 10:41 AM
[XSLT]Passing values from Javascript to a XSLT variable Benjamin Hillsley XML 3 09-25-2003 04:50 AM