[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: [xml] QName in Node Tests



On Tue, Apr 01, 2003 at 04:01:34PM +0100, Brian Stafford wrote:
> All,
> 
> I've had some unexpected results using the XPath support in libxml2.  I'm 
> unclear about what is supposed to happen even after having pored over the 
> XPath 1.0 spec.  Specifically, given a document fragment
> 
> <top>
>    <xyzzy/>
>    <xyzzy xmlns="http://xyzzy.org/"/>
> </top>
> 
> the node test '//xyzzy' matches only the first of the xyzzy elements rather 
> than both as I expected.

  That normal.

> Having read section "2.3 Node Tests" of XPath 1.0 which states
> 
> A QName in the node test is expanded into an expanded-name using the namespace 
> declarations from the expression context. This is the same way expansion is 
> done for element type names in start and end-tags except that the default 
> namespace declared with xmlns is not used: if the QName does not have a 
> prefix, then the namespace URI is null (this is the same way attribute names 
> are expanded). It is an error if the QName has a prefix for which there is no 
> namespace declaration in the expression context.
> 
> I take the statement "except that the default namespace declared with xmlns is 
> not used" to mean that both xyzzy elements in the example above should have 
> been matched although I am by no means clear that this is what is intended.

  No the second element has an expanded name of 
     {http://xyzzy.org}xyzzy
the first one' is
     {null}xyzzy

  and the node test xyzzy looks for expanded name {null}xyzzy
This is an XPath and XSLT Frequently Asked Question.

> Looking at the code in xpath.c, function xmlXPathNodeCollectAndTest() near 
> line 9122 there is the following code

    which is fine,

Daniel

-- 
Daniel Veillard      | Red Hat Network https://rhn.redhat.com/
veillard redhat com  | libxml GNOME XML XSLT toolkit  http://xmlsoft.org/
http://veillard.com/ | Rpmfind RPM search engine http://rpmfind.net/



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]