This is the mail archive of the xsl-list@mulberrytech.com mailing list .


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: Re: not simple (or simple? :-) xpath matching


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]