
Hello, Barton Wright wrote:
But if the XML documents have DOCTYPEs (which they do) Oxygen will use those DOCTYPEs when validating so it will not validate them against the DITA DTDs.
Hmm. So by default in this case, Oxygen validates against the DocBook 4 DTD, but otherwise still treats the file as if it were a DITA <reference> file, such as when switching to Author mode. That's a bit of a Frankenstein monster, isn't it?
I have implemented your Doc Type Association workaround, and it works well, but it strikes me as only a workaround. I don't want to break DITA support for us or for other users. A genuine solution would be for Oxygen to honor the DOCTYPE over the top-level element for file type identification as well as for validation, wouldn't it?
It is not a workaround. It is a correction of the reported DITA/DocBook conflict based on a simplification of the definition of Oxygen's DITA framework. All the DITA files will continue to be recognized and validated properly after this fix which we plan to implement in Oxygen.
In order to validate Docbook 4 <reference> files which contain <xi:include> tags using the default Xerces parser the DOCTYPE should include the xi:include module ...
Yes, that's what my note referred to as "the xinclude.mod kludge". For historical and technical reasons, our doc set does not use any entities anywhere in our DocBook source files. (We use Unicode fonts and UTF-8 file encoding instead of character entities, and use XInclude instead of file or fragment entities.) Thus, importing xinclude.mod as a file entity is not available to us.
Unfortunately for the default parser which is Xerces there is no other way of declaring the XInclude elements when a DTD is used for validation and the DTD does not include the declaration of the XInclude elements and attributes. This is why the LibXML parser will be better for you as Radu suggested. Best regards, Sorin http://www.oxygenxml.com