Hi,

thanks a lot for studying my problem, and the suggestion of how to solve the 
problem. 

I will try to solve it your way.

Can't think of any other product, with such efforts to give individual support.
Hussein, you are great!

/christoph

-----Urspr?ngliche Nachricht-----
Von: Hussein Shafie [mailto:hussein at pixware.fr] 
Gesendet: Montag, 14. M?rz 2005 11:38
An: Klocker Christoph
Cc: xmleditor-support at xmlmind.com
Betreff: Re: AW: [XXE] feature request

Klocker Christoph wrote:
> Please find attached a part of my xml file and the stylesheet.
> 
> The xpath expression I was talking about.
> Can't define the values at forehand, as the author will add constantly new 
> values for g_kuerzel.
> 
> content:              attr(idref) combo-box(values, 
> xpath("join(/steuerindex/teil/kapitel/gesetz/g_kuerzel, '\A')"));

We've studied your problem. It is not easy to solve. And we don't see 
how it can be solved by enhancing our product. That is, you need to 
implement a custom, efficient, solution for your specific problem.

Here's what I would do to solve it:

[1] Create a DocumentHook for my type of documents.
See 
http://www.xmlmind.com/xmleditor/_distrib/docs/api/com/xmlmind/xmleditapp/dochook/DocumentHook.html

The only thing that this DocumentHook does is to register a 
DocumentListener with the newly created or newly opened document.
See
http://www.xmlmind.com/xmleditor/_distrib/docs/dev/ar01s09.html
See 
http://www.xmlmind.com/xmleditor/_distrib/docs/api/com/xmlmind/xmledit/doc/DocumentListener.html



[2] This DocumentListener observes all element insertions and deletions 
(ElementStructureEvent).
See 
http://www.xmlmind.com/xmleditor/_distrib/docs/api/com/xmlmind/xmledit/doc/ElementStructureEvent.html

The goal this DocumentListener is to update a list of g_kuerzel 
character data.

This list is initialized when the DocumentListener is created and after 
that, it is updated incrementally.

This list is stored as a property of the Document using method 
putProperty().
See
http://www.xmlmind.com/xmleditor/_distrib/docs/dev/ar01s04.html#treeproperties
See 
http://www.xmlmind.com/xmleditor/_distrib/docs/api/com/xmlmind/xmledit/doc/Document.html#putProperty(java.lang.Object,%20java.lang.Object)



[3] Write a Java class (example: com.acme.Util) with static method 
called makeList().
See http://www.xmlmind.com/xmleditor/_distrib/docs/commands/ch07s02.html

makeList() has a single argument: a 
com.xmlmind.xmledit.xpath.NodeIterator (See 
http://www.xmlmind.com/xmleditor/_distrib/docs/api/com/xmlmind/xmledit/xpath/NodeIterator.html
 
)
which gives access to the element of the Document. This allows to fetch 
the custom property containing the list.



[4] Replace:

xpath("join(/steuerindex/teil/kapitel/gesetz/g_kuerzel, '\A')")

by:

xpath("util:makeList(.)")
where xmlns:util="java:com.acme.Util"

Yes, this is complex but this is also:
* feasible without asking XMLmind to change anything in XXE,
* easy to maintain (completely separated from XXE core, only uses 
public, stable, APIs),
* cannot be faster (because it works incrementally).



Reply via email to