This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
Re: Re: not simple (or simple? :-) xpath matching
- To: Daniel Bauke <bonkey at sokrates dot mimuw dot edu dot pl>
- Subject: Re: [xsl] Re: not simple (or simple? :-) xpath matching
- From: Jeni Tennison <mail at jenitennison dot com>
- Date: Thu, 7 Jun 2001 21:03:35 +0100
- CC: xsl-list at lists dot mulberrytech dot com
- Organization: Jeni Tennison Consulting Ltd
- References: <20010607205601.B11836@sokrates.mimuw.edu.pl>
- Reply-To: xsl-list at lists dot mulberrytech dot com
Hi Daniel,
> now, i want to have a default chapter, if given is incorrect and
> print a short information, that one asked for non-existent.
Sure. In that case finding the chapter that's been requested is very
similar to before, using @name rather than @id - you want the part
whose @name is equal to the $part parameter and, within that, the
chapter whose @name is equal to the $chapter parameter:
part[@name = $part]/chapter[@name = $chapter]
If you store the result of that expression in a variable, then you
have a variable that has an empty node set if there is no such
chapter:
<xsl:variable name="part-element" select="part[@name = $part]" />
<xsl:variable name="chapter-element"
select="$part-element/chapter[@name = $chapter]" />
You can then use xsl:choose/xsl:when to test whether there is such a
chapter, and if it isn't then give a bit of explanatory text:
<xsl:choose>
<xsl:when test="$chapter-element">
<xsl:apply-templates select="$chapter-element" />
</xsl:when>
<xsl:otherwise>
Sorry, you asked for rather impossible chapter.
Here's the first chapter in
'<xsl:value-of select="$part" />':
<xsl:apply-templates select="$part-element/chapter[1]" />
</xsl:otherwise>
</xsl:choose>
I hope that helps,
Jeni
---
Jeni Tennison
http://www.jenitennison.com/
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list