RE: Pollo: Editing XML files which have a DTD

"Scott Willy" <[email protected]> Tue, 13 Aug 2002 21:36:51 +0200
Newsgroups gmane.editors.pollo.devel
Message-ID <[email protected]>
Bruno,

thank for the quick reply. For item 2) I understand the issues as you
outlined. Thanks.

For item 1), I am not sure why Pollo cannot find the DTD? It is not on
classpath. It is on path, but more relavent, it is in the same directory as
the root document (i.e. the document which the DTD applies). For me there is
a problem with the entity resolution process somewhere.

If I have time I will plunge into the code this weekend (but being a F1
Grand Prix weekend time is short).

csw

> -----Original Message-----
> From: Bruno Dumon [mailto:[email protected]]
> Sent: 13 August 2002 20:22
> To: Scott Willy
> Cc: [email protected]
> Subject: Re: Pollo: Editing XML files which have a DTD
>
>
> (I've cc'ed this on the pollo mailing list, hope you don't mind, but I
> thought it might be interesting for others)
>
> On Tue, 2002-08-13 at 08:31, Scott Willy wrote:
> > Bruno,
> >
> > I am trying to using Pollo to edit XML files which have a DTD.
> I have two
> > problems.
> >
> > 1) Cannot open Tree View
> >   When I open the attached XML file (DTD also attached), Pollo
> only shows
> > the Text View. When try to force the Tree View by the combo
> box, I get an
> > exception. I have the same problem if during the open I select
> Generic XML
> > Schema or force the DTD (which from a user's view I should not have to).
> >
> >
> >
> > X:\csw\java\pollo\bin>O:\devtools\java\j2sdk1.4.0\bin\java
> -Djava.endorsed.d
> > irs=
> >   ..\lib\endorsed org.outerj.pollo.Pollo
> >   java.lang.ArrayIndexOutOfBoundsException
> >           at
> > javax.swing.text.AbstractDocument$BranchElement.getElement(AbstractDo
> >   cument.java:2351)
> >           at
> > org.outerj.pollo.texteditor.JEditTextArea.getLineStartOffset(JEditTex
> >   tArea.java:741)
> >           at
> > org.outerj.pollo.texteditor.CheckPanel.showParseException(CheckPanel.
> >   java:52)
> >           at
> > org.outerj.pollo.texteditor.XmlTextEditorPanel.showParseException(Xml
> >   TextEditorPanel.java:36)
> >           at
> > org.outerj.pollo.EditorPanelImpl$1.actionPerformed(EditorPanelImpl.ja
> >   va:591)
> >           at javax.swing.JComboBox.fireActionEvent(JComboBox.java:1196)
> >           at javax.swing.JComboBox.setSelectedItem(JComboBox.java:561)
> >           at javax.swing.JComboBox.setSelectedIndex(JComboBox.java:597)
> >           at
> > javax.swing.plaf.basic.BasicComboPopup$ListMouseHandler.mouseReleased
> >   (BasicComboPopup.java:749)
>
> If the instance document has a doctype reference, xerces will try to
> load it, but can fail for various reasons (e.g. it cannot find the DTD).
> I don't know of a way to tell xerces 1.4 not to load the DTD (though it
> is possible with xerces 2 with a custom parser configuration).
>
> > 2) DTD not completely honored
> >   If remove the DTD reference from the XML file I can open the
> XML file in
> > Pollo and get the Tree View.  During the open I tell Pollo to
> use the DTD.
> > The problem I have is that the DTD specification is not
> completely honored.
> >
> >   Pollo correctly limits the proposed child tags for any
> element, but does
> > not restrict the number or order of the tags.
> >
>
> yep, that's right, Pollo simply doesn't restrict those aspects. Or in
> fact, it does when validating, but doesn't in the element lists. There's
> an "experimental" feature though that does show the allowed content
> model. It is in the menu when you choose schema -> show content model.
>
> This feature works by actually validating the document up to the
> selected element, and then asking the validator what it expects. This
> means that if there are errors in the content before the selected
> element, it will probably not be able to reliably detect the content
> model.
>
> So the advantage of the way it works now, is that even if the document
> is full of errors, you'll still get the list of possible elements.
>
> It's just a hard problem that AFAIK every XML editor has problems with
> (well, in fact, it is not really such a problem for DTD's, but is is for
> schemas, relax-ng, etc. because they don't have a one-to-one mapping
> from element name to content model, since element names can be reused in
> those schemas).
>
> There are multiple ways to deal with it:
>  - integrate dtd-specific functionality in pollo (i.e. not using the msv
> library). Could be done, since the implementation for the schemas is
> already plugable (there is a "pollo schema" and "msv schema"
> implementation). The interfaces might need some refactoring and
> extending though.
>  - bring the afore mentioned "show content model" to a more prominent
> place, i.e. make the element lists on the right switchable between this
> and the current display.
>
> If you considering doing some coding on either of these and need more
> info, let me know. (I don't have a full plan ready though, and can't put
> enough time in it for the moment).
>
>
> >   For example the tag <test>, the DTD specifies that it can have titlex,
> > purpose, testPlatform, and check as child tags. In that order.
> Also there
> > can only be (and must be) one each of the tags titlex, purpose, and
> > testPlatform and zero more or more occurrences of the check tag.
> >
> >   [OT: it would be cool for Pollo to add the required child tags (and
> > attributes) when adding a tag.]
> >
> > Thanks for any hints (if there is some coding to do please
> point me in the
> > right direction esp. for point 2). csw
> >
> >
>
> --
> Bruno
>
>



-------------------------------------------------------
This sf.net email is sponsored by: Dice - The leading online job board
for high-tech professionals. Search and apply for tech jobs today!
http://seeker.dice.com/seeker.epl?rel_code=31