
Hi Wendell, When you use XInclude and DTDs the validation is performed on each file as it is (with the XInclude elements not expanded). This is how Xerces works - I opened some time ago a discussion about support for post validation, you can find that here: http://mail-archives.apache.org/mod_mbox/xerces-j-dev/200507.mbox/thread see the "Xinclude with XML Schema versus XInclude with DTD" messages If you use XML Schema or Relax NG or Schematron then the validation will be performed on a document with all the XInclude elements replaced with the included content. A possible solution if you need to stay with DTDs is to move the ID/IDREF constraints from DTDs to a Schematron schema. That needs to be applied only on the main document and as I said above the resolved document will be seen by the Schematron validation. Another solution is to use LIBXML for validation - by default we set the --postvalid option on LIBXML that makes the processor perform the DTD validation after the XInclude processing, thus validating the resolved document against the DTD of the main file. Best Regards, George -- George Cristian Bina <oXygen/> XML Editor, Schema Editor and XSLT Editor/Debugger http://www.oxygenxml.com On 7/22/10 7:33 PM, Wendell Piez wrote:
Hi,
This is a classic problem, probably with a simple solution (or workaround), but I can't locate it.
What can I do to get ID/IDREF to work across file boundaries when using XInclude to construct a document with several modules?
I have tried setting up a Validation Scenario naming the master document, and when subordinate modules are validated, this appears to be working, inasmuch as I get validation errors for all modules (including the master) when I validate any of them. But IDREF values in attributes fail validation when their corresponding ID values are in other modules.
I am figuring that this is either a setting I have failed to make correctly (where should I be looking?), or maybe a limitation of some kind, such as that when XInclude is involved, only attributes named @xml:id are respected (this is a wild guess), not just any attribute declared as type ID in the DTD (which is what I have).
Or maybe I will have to consider going back to external parsed entities? I am very reluctant to do this, since the subordinate documents need their own DOCTYPE declarations to pick up entity declarations of their own, and of course these aren't legal in external parsed entities.
I know this is/was a bugaboo in the specification of XInclude, but was figuring that in the time since its inception, solutions have emerged....
Thanks for any tips, as always.
Cheers, Wendell
====================================================================== Wendell Piez mailto:wapiez@mulberrytech.com Mulberry Technologies, Inc. http://www.mulberrytech.com 17 West Jefferson Street Direct Phone: 301/315-9635 Suite 207 Phone: 301/315-9631 Rockville, MD 20850 Fax: 301/315-8285 ---------------------------------------------------------------------- Mulberry Technologies: A Consultancy Specializing in SGML and XML ======================================================================
_______________________________________________ oXygen-user mailing list oXygen-user@oxygenxml.com http://www.oxygenxml.com/mailman/listinfo/oxygen-user