Loading...

dom4j-dev@lists.sourceforge.net

[Prev] Thread [Next]  |  [Prev] Date [Next]

Re: [dom4j-dev] dom4j extensions Mike Skells Thu Nov 06 02:00:50 2008

Hi Mark,
I agree that the implementation does not cope with all of the complexities of 
possible naming patterns that may be employed, but I would be interested to 
understand how you expect to maintain the list of namespaces.

I regularly handle files of 10M to 100Mb, and modify these documents based on 
XPath based rules.

Scanning the document in this case is not an option, and as namespaces may be 
removed, and content shared within the document, maintaining a map of usage is 
not trivial in code, CPU or memory.

I would suggest that any code that determines namespace could use a namespace 
resolution strategy that is appropriate for its needs, and this should be able 
to be defaulted without code.
This is what the DefaultNamespaceContext does, albeit without strategy options, 
but any progreammer can withthe 1.6.1 implementation provide a different 
namespace context, appropriate for their needs, and what you are proposing is 
such an alternative I believe


The code for retrieval  is in 1.6.1
see AbstractElement.getNamespaceForPrefix, and 
DefaultElement.getNamespaceForPrefix

Also NamespaceStack.

The mechanism for retrieveal is I believe linked in with the Jaxen namespace 
resolution techniques, as can be seen by an inspection of 
DefaultNamespaceContext.

Regards
Mike Skells
Chief Solutions Architect
ValidSoft Ltd
F: +44 (0) 20 7033 1965
M: +44 (0) 7740 520 717
[EMAIL PROTECTED]<mailto:[EMAIL PROTECTED]>
<http://www.validsoft.com/>www.validsoft.com<http://www.validsoft.com/>
ValidSoft Ltd is a Private Limited Company.
Registered Address:Castle Buildings, Tara Street, Tullamore, Co. Offaly, 
Ireland.
Registration Number: 377068 Registered in Dublin.
The information in this e-mail is confidential and may be legally privileged. 
It is intended solely for the addressee(s).  Access to this e-mail by anyone 
else is unauthorised. If you are not the intended recipient, any disclosure, 
copying, distribution or any action taken or omitted to be taken in reliance on 
it, is prohibited and may be unlawful. When addressed to our clients any 
opinions or advice contained in this e-mail are subject to the terms and 
conditions expressed in the governing ValidSoft client terms and conditions.



________________________________
From: Marc Pellmann [mailto:[EMAIL PROTECTED]
Sent: 06 November 2008 08:44
To: Mike Skells
Cc: [EMAIL PROTECTED]; [EMAIL PROTECTED]
Subject: Re: [dom4j-dev] dom4j extensions

Hi!

In older version (1.6 etc) a namespace context was created by walking the 
element hierarchy and picking the namespaces that were defined in the element 
that is the context of the xpath statement

I do not see this in 1.6.1 but I think it would not be enough if it is there. 
The xpath expression could be of any complexity and could try to select nodes 
in all other branches of the document and in deeper of the actual with own 
namespace declarations, too. And this branches have other namespace 
declarations and maybe the prefixes would be the same with other URIs or there 
are default namespaces without prefixes, that need to be changed (added with 
prefix).

There is no method to get all namespaces that are defined in the document. So 
this is what I have added. In many cases it would be enough to add namespaces 
unchanged to the xpath expression. But in the situations above it is needed to 
change prefixes of some namespace definitions that should be added to the 
context and this is done, too. The xpath need to use this new prefixes - there 
is no code in the moment to automatically change some pathes, because this 
might be extreme complex. Again the xpath could be of any complexity.

As an example try come xpathes with this xml:

<OOO xmlns="http://zvon.org/xnumber"<http://zvon.org/xnumber> 
xmlns:lower="http://zvon.org/lowercase"<http://zvon.org/lowercase> ooo="222">
  <aaa>
    <lower:BBB 
xmlns:lower="http://zvon.org/uppercase"<http://zvon.org/uppercase>>
      <lower:x111/>
      <sss xmlns:lower="http://zvon.org/xnumber"<http://zvon.org/xnumber>>
        <lower:x111/>
      </sss>
    </lower:BBB>
    <lower:x111/>
  </aaa>
  <aaa xmlns="http://zvon.org/uppercase"<http://zvon.org/uppercase>>
    <BBB xmlns:upper="http://zvon.org/uppercase"<http://zvon.org/uppercase> 
upper:U="A" U="A" lower:U="A"></BBB>
  </aaa>
  <aaa xmlns="http://zvon.org/lowercase"<http://zvon.org/lowercase>>
    <upper:BBB 
xmlns:upper="http://zvon.org/uppercase"<http://zvon.org/uppercase> 
xmlns="http://zvon.org/xnumber"<http://zvon.org/xnumber>>
      <x111/>
    </upper:BBB>
    <x111/>
  </aaa>
</OOO>

--
Viele Grüße / best regards

Marc Pellmann (Software Architect)

inubit - integrating your business and IT
inubit AG
Schöneberger Ufer 89-91
D-10785 Berlin
Fon: +49.30. 72 61 12-132
Fax: +49.30. 72 61 12-100
Freecall: 0800-go inubit
Web: www.inubit.com<http://www.inubit.com>

Vorstand: Dr. Torsten Schmale
Vorsitzender des Aufsichtsrates: Dr. Wolf-Dieter Klemt
Registergericht: AG Charlottenburg
Registernummer: HRB 80154
-------------------------------------------------------------------------
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-dev mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/dom4j-dev