[jdom-interest] Entity resolving - design problem

Todd O'Bryan toddobryan at mac.com
Thu Sep 25 09:12:03 PDT 2003


There is, in fact, a way to do this. You can subclass a Reader and  
intercept the character stream on the way into the Parser. If you get  
an ampersand followed by one of the entities you don't want to expand,  
you pass it on as &entity;, if not, you just pass them on.

When you write the file back through the Writer you'll have to be sure  
that you intercept again and change &entity; back to &entity; on  
the way out.

All in all, it's about twenty lines of code overwriting read() and  
write() in subclasses of Reader and Writer.

Email me if you need more specifics,
Todd

P.S. Can someone come up with a way to make round trips possible in XML  
already? :-)

On Thursday, September 25, 2003, at 10:16  AM, Bernd Eggink wrote:

> Please regard the follwing situation: A client software reads an XML
> file into a JDOM Document, modifies it via a GUI, saves it back to an
> XML file, and additionally generates HTML files from it. If the client
> is satisfied with the result, he uploads the modified XML file to a
> servlet container. There it is again parsed and transformed into HTML.
>
> The problem is that the XML source may contain <img> tags, whose "src"
> attributes must point to different locations depending on whether the
> files lay on the client or on the server. The name is the same, but
> the directories differ. My first idea was to use an entity for the
> directory, like
>
>     <img src="&gifdir;/blah.gif">
>
> and supply different DTDs for the client and the server, containing
> different values for gifdir. However, this doesn't work because
> the client parser already resolves the entities, so its XML output
> doesn't contain entity references anymore.
>
> My next idea was to treat the <img> tag specially, prefixing its "src"
> attribute with different directory parts on client and server. This
> works, but appears ugly and too specific. For example, JavaScript
> statements like "document.blah.src=another.gif" would again have to be
> treated specially.
>
> The solution I'd like best is to exclude some specified entities from
> expansion. Is this possible? (I guess not). Any other ideas how to
> solve this problem?
>
> Regards,
> Bernd
>
> --  
> Bernd Eggink
> Regionales Rechenzentrum der Uni Hamburg
> Bernd.Eggink at rrz.uni-hamburg.de
> http://www.rrz.uni-hamburg.de/RRZ/B.Eggink/
> _______________________________________________
> To control your jdom-interest membership:
> http://lists.denveronline.net/mailman/options/jdom-interest/ 
> youraddr at yourhost.com




More information about the jdom-interest mailing list