Jon Ison wrote:
> 
> I attach the master document (AdmC1.xml) for you to look at.  It is indeed 
> DocBook 5 / RELAX-NG, and references 3
> files  (Entities.xml, EntitiesApps.xml and EntitiesLibs.xml) with the entity 
> definitions (also attached).  You'll see
> what I mean when you have a look.
> 
> You were right by the way ... I tried saving out in v3.8 and converting the 
> output, but it failed with a similar message.
> 

Due to the fact that XMLmind XML Editor always passes to the XSLT engine
a flat copy of the XML document which is generated in a temporary
working directory (e.g. /tmp/xxe53772/__doc.xml), a master document
containing this kind of DTD subset cannot work:

---
<!DOCTYPE chapter [
<!ENTITY % Entities SYSTEM "../../Entities.xml"> %Entities;
<!ENTITY % EntitiesApps SYSTEM "../../EntitiesApps.xml"> %EntitiesApps;
<!ENTITY % EntitiesLibs SYSTEM "../../EntitiesLibs.xml"> %EntitiesLibs;
]>
---

* If, just in the DTD subset, you replace the relative paths with
absolute paths, it should work:

---
<!DOCTYPE chapter [
<!ENTITY % Entities SYSTEM "file:/foo/bar/Entities.xml"> %Entities;
<!ENTITY % EntitiesApps SYSTEM "file:/foo/bar/EntitiesApps.xml">
%EntitiesApps;
<!ENTITY % EntitiesLibs SYSTEM "file:/foo/bar/EntitiesLibs.xml">
%EntitiesLibs;
]>
---

* OR If you directly declare the external entities in the DTD subset
(using relative paths), it should work too:

---
<!DOCTYPE chapter [
<!ENTITY UsersManual         SYSTEM "../../xml/master/UsersManual.xml">
<!ENTITY UseTOC              SYSTEM "../../xml/master/UseTOC.xml">
<!ENTITY UseTOCFigures       SYSTEM "../../xml/master/UseTOCFigures.xml">

...DOZENS OF OTHER DECLARATIONS IN YOUR CASE...

]>
---

Note that XMLmind XML Editor does not try to be good at dealing with
such modular documents. We strongly recommend to give up using the macro
facilities which are part of the DTD standard (in our opinion, they are
hard to manage and hard to document) and to switch to structured
inclusion mechanisms such as XInclude or DITA conref.



---
PS: Note that, strictly speaking, your DTD subset

<!DOCTYPE chapter [
...
]>
<chapter xmlns="http://docbook.org/ns/docbook";
...
>

is not valid, given the fact that the document element of AdmC1.xml is a
{http://docbook.org/ns/docbook}chapter and not a {}chapter.

A picky validating XML processor could reject your file just for this
reason.

In our opinion, this means that it is not a good idea to use a DTD
subset in a DocBook 5 document.


Reply via email to