[cc: Thierry Michel]

Murray Altheim wrote:
shane nuessler wrote:

Hi Kevin, Murry.

Thankyou very much for your help.

We are currently trying to store SMIL files for a project we are undertaking at the moment. The SMIL file has the DTD specified at the top to declare that SMIL version 2 is being used. But when we store and then retrieve the document, the comments of the DTD are included in the retrieved SMIL file, it really knocks RealOne player about! We just need the SMIL file out, the same as it went in.

Shane,

Well, I thought I'd take a look at the SMIL 2.0 DTD since I know one
or two guys on that working group and was curious -- a bit flattered
in that they modularized it in a similar way to the way I did XHTML,
right down to the modules and comment style, etc.

Anyway, I normalized the modules to one DTD file using James Clark's
spam, ending up with a 68K file. This included expanding all marked
sections and removing their delimiter syntax. Then I manually removed
all the excess whitespace and comments, save the first one (since one
must leave the copyright notice). The result is about 38K.

Note that there is no issue (so far as I know) in modifying or
redistributing the SMIL DTD so long as the copyright notices are
maintained, and the file is not misrepresented. This version should
be functionally identical to the SMIL 2.0 DTD, though it is provided
to you with no expressed or implied warrantee. Don't redistribute
the DTD without that initial comment.

I've attached the file as a zip, since perhaps others can use this.
If the zip doesn't come through the listserver, send me a message
and I'll forward a copy privately (this goes for anyone else as well).

Murray

We downloaded the CVS of Xindice (1.1b2) which I believe uses Xerces.

Murray Altheim from the Knowledge Media Institute suggested-
make a JAXP call:
  javax.xml.parsers.DocumentBuilderFactory.setIgnoringCommments(false);

Which we will try (Murry, i'm not sure which file though, since I've never programmed in Java!)
(I think it is xml-xindice/java/src/org/apache/xindice/xml/jaxp/DocumentBuilderImpl.java ?)

Well, I'm not entirely sure, but in the Xindice code there's only two places where you find DocumentBuilderFactory.newInstance(), which is where you create a new factory from which you get a new DocumentBuilder (which is the actual XML processor).

The first is in org/apache/xindice/client/xmldb/xmlrpc/CollectionImpl.java,
the second in org/apache/xindice/core/Database.java. Since it sounds like
it's your client that is having the problem, I'd suggest the former.
Where you see the line

   dbf.setNamespaceAware(true);

you'd add:

   dbf.setIgnoringComments(true);

and I *think* that should do the trick. If not, try Database.java. There's
no reason to keep the comments AFAIK. I think I figured this one out a
year or so ago when digging in the Xerces code to see what was happening;
I had the same problem as you.

The stupid approach I suggested previously would also work: remove all
the comments from the SMIL DTD and you solve this problem without having
to muck with Xindice code. But this is probably a problem that needs
solving anyway.

Murray

........................................................................... Murray Altheim http://kmi.open.ac.uk/people/murray/ Knowledge Media Institute The Open University, Milton Keynes, Bucks, MK7 6AA, UK .

   "Shhh. Be vewy, vewy quiet. We're hunting wabbits." -- Elmer Fudd

   "I don't know how close we are, closer than we were yesterday,
    I guess. All I know is we're on the hunt." -- George W. Bush
    BBC News: http://news.bbc.co.uk/1/hi/world/americas/3110615.stm

<<attachment: SMIL20-compact.zip>>



Reply via email to