- From: Dominic Chambers <dominic.chambers@bigfoot.com>
- Date: Wed, 6 Nov 2002 10:35:19 +0100
- To: "WWW DOM" <www-dom@w3.org>
This is a repost since the original mail apperars to have slipped through unoticed. But I think this issue could be serious, so I am reposting. > The DOM Level 3 XPath module allows single nodes to be selected, > where the returned node can be either the first node in document > order, or any node from the result set. The ability to select > the first node in document order is certainly useful, but the > second definition is definately not. > > The reason for this is that when a single node is selected > from a node set, there is almost always a particular node in > mind. If the node returned varies depending on the particular > implementation used, then the method becomes worthless for > implementation agnostic code. > > XPath itself does not specify how single nodes should be > returned, since it does not cater for single node selections. > XSLT and MSXML, however, both allow single node selections, and > both provide them in a consistent manner. > > The node returned is always the first node in evaluation order. > For example (in msxml), if I wanted to find the owner table of an > arbitrary HTML element, I could query: > > ancestor::table > > And this would give me the first ancestor element that was of > type table. Similarly, if I wanted to find the next table row > group in an HTML table, I could query: > > following-sibling::tbody > > The XSLT spec defines this behaviour for it's xsl:value-of > element <http://www.w3.org/TR/xslt#value-of>, but does not > use the term 'evaluation order' specifically. It says: > > The following [example] precedes each procedure element with > a paragraph containing the security level of the procedure. > It assumes that the security level that applies to a > procedure is determined by a security attribute on the > procedure element or on an ancestor element of the procedure. > It also assumes that if more than one such element has a > security attribute then the security level is determined by > the element that is closest to the procedure. > > <xsl:template match="procedure"> > <fo:block> > <xsl:value-of > select="ancestor-or-self::*[@security][1]/@security"/> > </fo:block> > <xsl:apply-templates/> > </xsl:template> > > > Thanks, Dominic. >
Received on Wednesday, 6 November 2002 15:06:23 UTC