Hi William,
I think it is not possible to use namespace with non-null URI with
empty prefix. There is notice "In XPath 1.0, all unprefixed names are
unqualified." in Jaxen FAQ (Jaxen is XPath engine used by dom4j). I
skim throught the Jaxen sources -- it seems everytime Jaxen see empty
Xpath namespace prefix it skips prefix-to-uri namespace mappings. I'm
sorry but I think the notice mentioned above is right and you cannot
use unprefixed name with non-empty namespace URI.

Best regards,

Filip

2008/9/29 William Pietri <[EMAIL PROTECTED]>:
>
> Hi! I'm using dom4j's great XPath processing to do extensive unit
> testing of XHTML. Changing the pages to be explicitly XHTML broke all my
> XPaths, and I'm wondering how to fix that. Ideally, I'd like the default
> namespace in my documents to be the default namespace in my XPaths.
>
>
> For starters, let me explain the situation. Consider this simple document:
>
>    <html><head><title>Hi!</title></head><body><p>Hello</p></body></html>
>
> You could test for the presence of the paragraph like this:
>
>        assertThat(document.selectNodes("//p").size(),is(1));
>
> However, suppose I add the proper doctype:
>
>    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
> "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd";>
>
> And then start the document like this:
>
>    <html xmlns="http://www.w3.org/1999/xhtml"; xml:lang="en" lang="en">
>
> Suddenly, my test fails! The XPath no longer matches.
>
>
> This has been discussed in the archives before. The solution mentioned
> is to set it up so that the XPaths have an explicit namespace, and then
> to set a namespace map in the DocumentFactory. But for me, that would
> require changing hundreds of test assertions, and in a way that would
> make them harder to read.
>
> Is there some way I can fix this without changing my tests? I tried
> explicitly telling the DocumentFactory that "" should map to the XHTML
> namespace, and in the debugger it looks like the Document object has
> that right. But I still can't do a selectNodes call and have it return
> anything.
>
> Any help is appreciated.
>
> Thanks,
>
> William

-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
dom4j-user mailing list
dom4j-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/dom4j-user

Reply via email to