xsl-list
[Top] [All Lists]

RE: Answers to review questions in "Beginning XSLT": Chapter 5

2003-03-12 10:53:09
Jeni Tennison wrote:

Sent: Wednesday, March 12, 2003 7:09 AM

For now I'm omitting the questions themselves, since I don't yet
have explicit permission to copy them. (Jeni, would that be OK?)

Yes, I'm sure that would be fine. It would also mean that people who
don't have the book are able to understand what you're answering.

Thanks.  That will be helpful!

1. No nodes match the select pattern, so no templates get applied,
   so there is no output for that apply-templates.

That's correct, though it would be more accurate to say that "no nodes
get selected by the select expression". Remember that the select
attribute (on <xsl:apply-templates>, and elsewhere) is for *selecting*
things with an *expression* and the match attribute (on <xsl:template>
and elsewhere) is for *matching* things with a *pattern*.

Thanks.  I have to admit the difference between the two is less than
crystal-clear in my mind.  Kay p. 430 and 433 are helpful.

The wrapping <xsl:if> is actually superfluous. @flag = 'favorite' and
@flag = 'interesting' obviously cannot be true if there is not flag
attribute, but it is also the case that @flag != 'favorite' cannot be
true if there is no flag attribute.

Oh yeah.  :-)  Haven't gotten used to that mental shift yet... that we
are actually making a query on a nodeset, rather than comparing a value
to a value.

Perhaps you included the <xsl:if>
so that all the instructions are ignored if the flag attribute doesn't
exist.

Well, that was part of it too (efficiency in the case of no flag
attribute).

10. ...

You've answered a lot of this yourself in your follow-up mail. I don't
think that there's a right answer to this question: it's more a prompt
to get you to explore the properties of NaN, number(), boolean(),
string() and comparison operators.

It worked!

Personally, I usually use:

  string(number()) != 'NaN'

because it makes it clear what I'm actually testing:

Good point.

Thanks for the pointers!  This has been helpful.

Lars


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list