DTD syntax checking
We've recently been alerted to an issue in our (mostly constrained) DTDs. If I set the catalog in Oxygen 20.1 to use the directory where I'm storing a working set, it will trip errors when I attempt to create certain topics (path scrubbed):
Could not resolve PublicID: [null] SystemID: [file:/.../com.dtd.test/dtd/technicalContent/dtd/ourReference.dtd] I've been all through the catalogs and ent/mod files. I corrected a couple of issues, and that reduced but didn't eliminate the errors. Is there anything in Oxygen that can provide a more specific pointer to the problem? The "ourReference.dtd" is defined in the catalog, for example, so I don't know why it can't resolve the public ID. Interestingly enough, the error occurs when creating a topic from templates we stored in Oxygen. BUT, if I save the created topic file and re-open it, no errors.
|
|
Radu Coravu
Hi Larry, If you can provide us (support@...) with a sample XML document, DTD specialization plugin and steps to reproduce the problem I can try to look more into this. Because right now I do not know how the DTD is mapped through the
XML catalog, I do not know how the XML document refers to the DTD
and what precise error you get when you attempt to validate the
newly created XML document before saving it. Radu Radu Coravu Oxygen XML Editor On 6/11/20 12:10 AM, Larry Kollar
wrote:
We've recently been alerted to an issue in our (mostly constrained) DTDs. If I set the catalog in Oxygen 20.1 to use the directory where I'm storing a working set, it will trip errors when I attempt to create certain topics (path scrubbed):
|
|
Bill Burns
Hi, Larry. I seem to recall seeing this happen if I'm not using a project ion Oxygen and on initial creation of topics with a custom DTD. The error would go away once the topic is saved. --
On Wed, Jun 10, 2020 at 10:07 PM Radu Coravu <radu_coravu@...> wrote:
|
|
George Cristian Bina
Hi,
toggle quoted messageShow quoted text
From this message: *** Could not resolve PublicID: [null] SystemID: [file:/.../com.dtd.test/dtd/technicalContent/dtd/ourReference.dtd] *** It looks like your document specifies a DTD using a SYSTEM identified and without a PUBLIC identifier. This means that the catalog resolution is done on the SYSTEM identifier. If that SYSTEM identifier is a relative location (not an absolute URI) then that is very sensible to both finding the DTD location and mapping it thought the catalog, because it is made absolute before going to the catalog to be resolved. As Bill also mentioned, if the file is not saved then the base URL for resolving relative references will be considered the oXygen working directory, and that may also create issues. To get to the point, please check if you are using relative references and if that is the case then this is probably the reason for the issue. There are a few solutions: - resolve the references using resoveSuffix entries in the catalog, thus you basically ignore the variable part of the absolute URL that will be used for catalog resolution - use absolute URLs instead, you resolve them anyway through the catalog - use also PUBLIC identifiers and prefer them for catalog resolution Hope this helps! Best Regards, George -- George Cristian Bina <oXygen/> XML Editor, Schema Editor and XSLT Editor/Debugger http://www.oxygenxml.com
On 6/11/20 5:11 PM, Bill Burns wrote:
Hi, Larry.
|
|
Hi Radu,
I'll check to see if the employer is OK with sending those. I think I solved the problem, but I'll give as much detail as possible in hopes of better troubleshooting techniques in the future.
|
|