| 
 
Subject: RE: Chapter 14 of the XML Bible now online From: Kay Michael <Michael.Kay@xxxxxxx> Date: Wed, 21 Jul 1999 09:35:08 +0100  | 
>The select attribute uses the same kind of patterns as the match attribute
of the xsl:template element. 
I'd be inclined to be clear that this point that expressions and patterns
are not the same thing though they look very similar.
>If no select attribute is present, all child elements are selected.
No, all child nodes.
>The xsl:value-of element copies the value of a node in the input document
into the output document.
Only if what you give it is a nodeset expression. If you give it, say, a
count() function, it outputs that instead.
>The value of this element is shown below:
  Hydrogen
  H    
  
You're making the assumption here that whitespace nodes aren't being
stripped. 
><xsl:template match="//ATOMIC_NUMBER">
"//" at the beginning of a pattern is noise, it doesn't alter the value of
the pattern. (The same isn't true of an expression, however).
>The test brackets can contain more than simply a child element name. In
fact, they can contain any select expression. 
Actually, any expression. There's no such thing as a select expression any
more, the nearest thing is a nodeset expression. But the predicate is
actually evaluated as either a boolean or an integer.
>One type of pattern testing that proves especially useful is string
equality. An equals sign (=) can test whether the value of a node
identically matches a given string. 
It was limited to that a couple of drafts ago but is now much more powerful.
>A node set is a list of nodes from the input document
Well actually it's a set of nodes! It becomes a list (in document order)
when you process it using xsl:for-each or xsl:apply-templates. Operations
like union treat it as a set, eliminating duplicates.
>The same template rule could be written using the not equal operator !=
instead:
Yes in this case. But when nodesets are involved, x!=y doesn't mean the same
as not(x=y). It means (exists x1 in x, y1 in y : x1 != y1). Also note that
the meaning of "=" has changed in the latest draft: if an attribute ATT is
absent, then @ATT="" was true in the last draft, but is false now; and
@ATT!="" is also false; but not(@ATT="") is true. (Personally, I wish they'd
gone for SQL-style 3-valued logic)
>XSL provides the standard four arithmetic operators:
+ for addition 
- for subtraction 
remember that the - may need a space before it to avoid it being swallowed
into a name, e.g. a-b is a single hyphenated name, not a subtraction!
>Node sets are converted by concatenating the values of the nodes in the
set. 
No, it takes the value of the first node (in document order) and ignores the
others.
>. This is accomplished by using of xsl:element, xsl:attribute, xsl:pi,
xsl:comment, and xsl:text elements
xsl:pi has been renamed.
>you can use any of the string expressions discussed earlier in an attribute
value template
Actually, any expression, not just a string expression.
><xsl:attribute name="HREF">
      <xsl:value-of select="SYMBOL"/>.html
    </xsl:attribute>
    
I'd encourage people to avoid leading and trailing whitespace in attribute
values, it can cause confusion.
>A style sheet in which multiple attribute sets of the same importance
define the same attribute is in error.
I don't think so. Not my reading of the spec anyway.
>Generating Processing Instructions with xsl:pi
xsl:processing-instruction
And it's probably worth mentioning that the xml declaration isn't a PI, even
though Microsoft think otherwise.
>The xsl:number element inserts a formatted integer into the output document
Or a list of integers (level=multiple)
>For example, to start numbering at 5, set format="5". 
An interesting reading of the spec. I read it differently, but I can't
disagree. It basically says the implementation can do what it likes!
>Standard XSL contains no means to insert raw, unescaped < characters that
are not part of a tag into the output. 
Inserting ampersands can also be a problem, e.g. to create URLs.
>The xsl:variable element defines a named string 
Not just a string. Named node-sets can be very useful and are often
overlooked.
(By the way, your font has gone wrong at this point. And I get the
impression you were getting a bit tired by the time you wrote the tail end
of this chapter - can't blame you!).
Do give SAXON a mention!
Mike Kay
I first sent this to Elliotte off-list but it bounced.
 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
| Current Thread | 
|---|
  | 
| <- Previous | Index | Next -> | 
|---|---|---|
| Re: Chapter 14 of the XML Bible now, David Story | Thread | Embedding HTML tags into XML, Hugh Speirs | 
| RE: Building a nodeset by recursion, Kay Michael | Date | Re: Building a nodeset by recursion, David Carlisle | 
| Month |