RE: [xml] Loading the DTD external subset

Hello, Peter,

The problem is that the SYSTEM declaration when it begins with a '/' is going to reference the DTD
(or any other similar external entity call) as an absolute path on the machine where the parsing is
occurring.  SYSTEM declarations not beginning with '/', http:, ftp:, etc. are given the same context
as the calling document, i.e.

There are three ways to get around this:

1) reference the dtd with a relative path
<!DOCTYPE default SYSTEM "en/i18n.dtd"> (assuming that the dtd is in the en subdirectory of
directory where the xml document exists).

2) Spell out the full http address.
<!DOCTYPE default SYSTEM "";>

3) Define and write an entity loader to dereference a public ID:
<!DOCTYPE default PUBLIC "-//foo//EN" "en/i18n.dtd">
And then use your entity loader to map the "-//foo//EN" reference to the DTD on the fly.

If you care to look at the W3C XML 1.0 specs on this:
(in the specifications, a DTD is accessed in the same way as an external entity)

-----Original Message-----
From: xml-admin gnome org [mailto:xml-admin gnome org]On Behalf Of Peter
Sent: Wednesday, April 04, 2001 8:08 AM
To: xml gnome org
Subject: [xml] Loading the DTD external subset

Dear Daniel, All,

I'm more than a bit tired, so my problems may originate between my
ears, but...

I have a simple xml file to load over http:

<?xml version="1.0"?>
<!DOCTYPE default SYSTEM "/en/i18n.dtd">
<button ID='back' img='back.png' tooltip='&BACK.TT;'
<button ID='forward' img='forward.png' tooltip='&FORWARD.TT;'

At "/en/i18n.dtd" on the same server resides the DTD, which defines the
entities seen above.

Using the SAX parser of libxml2 2.2.11, the DTD will not be loaded, giving
the message that "/en/i18n.dtd" cannot be opened.

So it, seems the parser fails to build an absolute URL from the original
URL and "/en/i18n.dtd".

Am I missing something? What should I do to make this work?

Peter Jacobi

xml mailing list
xml gnome org

[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]