[jdom-interest] META: Children of a lesser spec

Galluzzo, Eric EGalluzzo at synchrony.net
Mon Oct 2 07:23:26 PDT 2000


> -----Original Message-----
> From: Jason Hunter [mailto:jhunter at collab.net]

Well, I do know a fair bit about XPath, so I figured I had to chime in here.
:)  By the way, I really don't mind what we call the
getChildren()/ChildElements()/Elements() method, just so long as it sticks
around in one form or another.

> Little follow-up on the getChild/getChildElement debate.  :-)

[snip]

> For a final example, let's look at the XPath spec:
> 
>  child::* selects all element children of the context node
>  child::text() selects all text node children of the context node
>  child::node() selects all the children of the context node, whatever
>  their node type
> 
> Pretty clear that child::* returns only *element* children.  You use
> child::node() to return a list of all types.  When XPath says 
> "child" it
> also means element children.

Actually, this isn't true.  "child::node()" selects all children (text
nodes, comment nodes, element nodes, attribute nodes, etc.).  The only
reason "child::*" selects all child element nodes is that "*" refers to "all
element nodes".  Actually, "child" is just a traversal direction -- or, as
XPath calls it, an "axis."  In the same manner, preceding-sibling::* would
select all preceding sibling element nodes, and preceding-sibling::node()
would select all preceding sibling element nodes (attributes, comments,
etc.).  So the fact that "child::*" happens to select all element nodes is a
facet of the "*", not the "child".

Now, we could call the method getAsterisk() if you like.... ;)

    - Eric



More information about the jdom-interest mailing list