This project is read-only.
1
Vote

Missing Default-Namespace for QName test

description

According to the X-Path 2.0 specification, any unprefixed QName should use the default element/type namespace of the static context.

Unless I read/interpret the spec in the wrong way, or this isn't supposed to be context.NamespaceManager.DefaultNamespace; XPath.y line number 673 is wrong by passing the empty string to QNameParser.Parse.

At least for my samples, this causes //foo not to match
<root xmlns="urn">
   <foo/>
</root>
while it does work for functions (which is a place where I'd even prefer it not to work!).
Every other place where QNameParser.Parse is called with a default namespace; context.NamespaceManager.DefaultNamespace is used.

If I change this to pass context.NamespaceManager.DefaultNamespace aswell, I get a correct match to the foo-Node.


The spec dinstinguishes between "default element/type namespaces" and "default function namespaces". If the library should make this distinction aswell, I'd suggest adding another member DefaultFunctionNamespace to the context which is used in those cases instead of the DefaultNamespace of the NamespaceManager.

Thoughts, ideas, or anything the likes?

~ BhaaL

comments