Daniel Veillard
> When compiling my modular docbook file I get this xmllint error message.
> What am I doing wrong?
Nothing. It's a problem between DocBook DTD and XInclude. > $ xmllint --xinclude --postvalid IDS5webUGbook.xml > out.xml
> IDS5web/1_Introduction/chapter_all_introduction.xml:3: No declaration for
> attribute base of element chapter .
Since there seems to be some confusion about the exact problem
let me explain a bit what's going on: xmllint --xinclude --postvalid does the following: | 1/ parse the document, load the DTD but does not validate while
parsing | | 2/ apply the XInclude processing which will recursively traverse
the document(s) and include the new informations gathered from
new documents (or text source) | | 3/ validate the resulting in-memory tree with the DTD from the
"main" document. |
So now what's this base attribute, where does it come from, and why: | 1/ it's actually xml:base , an attribute which allows to set the base
for URI-Reference computation done in the subtree of the document.
| | 2/ it is added by XInclude processing to not break references done
from included document. Say that main.xml includes subdir/chapter.xml
and that subdir/chapter.xml references an image img.png .
The rules for references expects the image to be found in subdir/img.png
| | 3/ XInclude has no notion of what in teh included document might
be a reference. So to preserve the linking functionality it mandates
to add an xml:base="subdir/chapter.xml" at the point where the
inclusion occured si that the reference from the resulting document
to the image be preserved.
|
The consequence is: - there is nothing to prevent this from an authoring point of view
except keeping all the included fragment in the same directory
as the main document
- the only solution is to get Docbook XML DTD to allow xml:base as
a #IMPLIED attributes on the elements which are likely to be top of
inserted documents. I though this was agreed upon but didn't checked
the progress, Norm or Paul can probably tell us more about this.
At the moment you can safely ignore any [xml:]base attribute error message
resulting from postvalid after XInclude processing. |