Subject: Re: Pattern for attribute matching From: "Paul W. Abrahams" <abrahams@xxxxxxxxxxx> Date: Sat, 31 Jul 1999 15:08:02 -0400 |
> The XSL-List Digest Saturday, July 31 1999 Volume 02 : Number 234 > > > Date: Fri, 30 Jul 1999 16:16:11 -0400 > From: "Paul W. Abrahams" <abrahams@xxxxxxxxxxx> > Subject: Pattern for attribute matching > > If I want to construct a template that matches a `foo' element with a > `bar' attribute, the appropriate `match' attribute is: > > match="foo[@bar]" > > Moreover, if I want to match any `bar' attribute at all, the appropriate > `match' attribute is > > match="@bar" > > But suppose I want to match a `bar' attribute that's attached to a `foo' > element. My first guess would be > > match="foo/@bar" > > But that doesn't seem entirely right because attributes are not children > of element nodes, but rather associated with element nodes. So if that > isn't correct, what would be correct? > > This question relates to a larger unresolved (apparently) issue in > XPath: whether attribute nodes are really part of the document tree > described by XPath, or related in some other way. Sec. 5 (Data Model) > says: > > ``XPath operates on a XML document as a tree. This section descripe > how XPath models an XML document as a tree.'' > > But in Sec. 5.3 (Attribute Nodes) it says: > > ``Each element node has an associated set of attribute nodes.'' > > So where does reality lie? > > Paul Abrahams > abrahams@xxxxxxx > > ------------------------------ > > Date: Fri, 30 Jul 1999 22:24:03 +0100 (BST) > From: David Carlisle <davidc@xxxxxxxxx> > Subject: Re: Pattern for attribute matching > > match="foo/@bar" > > But that doesn't seem entirely right because attributes are not children > > it is right. / does not mean `children' it means `next step' and at each > step you can change axis along which to travel, here you have @ which is > short for attribute::, and no specified axis is short for child:: so the > above is really > > child::foo/attribute::bar > > which means get bar attributes of foo children. > > David > > ------------------------ > > ------------------------------ > > Date: Fri, 30 Jul 1999 23:41:12 +0100 (BST) > From: David Carlisle <davidc@xxxxxxxxx> > Subject: Re: Pattern for attribute matching > > > The first match finds foo elements that have a bar attribute. > > The third match finds children of foo elements that have a bar attribute. > > No. > > the first finds foo elements that have are children of the current > node, and have a bar attribute > the second finds bar attributes of foo children of the current node. > > if this is in an apply-templates, then the current node in the matching > template will be the foo element in the first case but an _attribute > node_ in the second. > > David > My intent in the third pattern is to match certain `bar' attributes, namely, all those in the document that are associated with `foo' elements. I guess that the pattern foo/@bar really does that (except for the possible case of the root node being a `foo'). But the other question remains: is an attribute node a child of its element node or merely associated with it? And if it's merely associated, how can it be part of the document tree? Paul Abrahams XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Sorting Problem with XSL, Anupam Gupta | Thread | XSL problem, McKisson, Shawn |
RE: Someone bashing XSL, Jonathan Borden | Date | Re: Someone bashing XSL, David Carlisle |
Month |