Pages: 1
Print
Author Topic: "DTD note found" only on 32-bit machines  (Read 3994 times)
larrygolding
Member

Posts: 15


« on: December 29, 2011, 03:20:39 PM »

We are using XMetaL(R) Author Enterprise 6.0 Service Pack 1, SP Edition.

I have written a set of XMetaL customizations consisting of three custom topic types, each derived from the DITA Concept topic type. When I install these customizations on a 64-bit machine, they work fine: I can do File, New, select my custom topic types, and create a new topic according to my template. But on a 32-bit machine, XMetaL displays the "DTD not found" dialog ("c:\ProgramData\XMetaL\XMConnector_Cache\<username>\<filename> could not be opened because a DTD could not be found.")

I have seen this work on three different 64-bit machines, and fail on three different 32-bit machines.

This is a big problem for us because all the contractors creating our content have 32-bit machines!

Thanks for your help,
Larry
Logged
Derek Read
Program Manager (XMetaL)
Administrator
Member

Posts: 2621



WWW
« Reply #1 on: December 31, 2011, 06:13:02 AM »

Sounds like a pathing problem in one of the catalog files used to locate the DTD.
Check in the Rules subfolder for files with *.soc extension and confirm that one of them has an entry that maps your PUBLIC id to the DTD XMetaL should be using.
Logged
gcrews
Member

Posts: 265


« Reply #2 on: January 01, 2012, 12:57:22 AM »

Sounds more like the template was created  on a 64bit machine and the absolute path was used. The Error path also contains ...XMConnector... is it part of the Xmetal connector your using supposed to get the dtds from a cms?

In ether case it should not be looking in \ProgramData\ on a 32 bit machine.
Logged
Derek Read
Program Manager (XMetaL)
Administrator
Member

Posts: 2621



WWW
« Reply #3 on: January 02, 2012, 03:25:50 AM »

I remembered this other post you made (http://forums.xmetal.com/index.php/topic,1654.0.html) mentioning that you wish to use only SYSTEM ID. So, my assumption that bad catalog entries would not come into play (as gcrews suggests).

You might wish to look into using a PUBLIC id (with appropriate catalog file entry). This will allow you to move your XML documents around to any location and let XMetaL find your DTD (provided you install it to the same location on each machine).

Not sure if your connector does anything with paths. There are APIs that allow you to override both SYSTEM and PUBLIC ID values if you wish to code that into your connector. I would recommend use of a PUBLIC id though, as that would also be useful for other XML parsers, those that support catalog lookup anyway. The DITA Open Toolkit uses its own catalog lookup for example.
« Last Edit: January 02, 2012, 03:32:33 AM by Derek Read » Logged
larrygolding
Member

Posts: 15


« Reply #4 on: January 03, 2012, 11:33:06 AM »

Thanks Derek. The problem is as you said in your first reply: my dita_specialized.soc files had lines like this on a 64-bit machine:

PUBLIC "-//Microsoft//DTD My Custom Type//EN" "c:\Program Files (x86)\XMetaL 6.0\Author\DITA\XACs\myType\myType_ditabase.dtd"

(correct), but on a 32-bit machine the lines look like this:

PUBLIC "-//Microsoft//DTD My Custom Type//EN" "\XMetaL 6.0\Author\DITA\XACs\myType\myType_ditabase.dtd"

This is a bug in my installer. Adding c:\Program Files to the start of the path (on 32-bit machines) solves the problem. Thanks as always for the help!

Larry
Logged
Pages: 1
Print
Jump to: