DITA and XMetaL Discussion
larrygolding December 29, 2011 at 9:20 pm
"DTD note found" only on 32-bit machinesDecember 29, 2011 at 9:20 pmParticipants 3Replies 4Last Activity 11 years, 1 month ago
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:ProgramDataXMetaLXMConnector_Cache
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,
LarryDerek Read December 31, 2011 at 12:13 pm
Reply to: "DTD note found" only on 32-bit machinesDecember 31, 2011 at 12:13 pm
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.gcrews January 1, 2012 at 6:57 am
Reply to: "DTD note found" only on 32-bit machinesJanuary 1, 2012 at 6:57 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.Derek Read January 2, 2012 at 9:25 am
Reply to: "DTD note found" only on 32-bit machinesJanuary 2, 2012 at 9:25 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.larrygolding January 3, 2012 at 5:33 pm
Reply to: "DTD note found" only on 32-bit machinesJanuary 3, 2012 at 5:33 pm
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.0AuthorDITAXACsmyTypemyType_ditabase.dtd"
(correct), but on a 32-bit machine the lines look like this:
PUBLIC "-//Microsoft//DTD My Custom Type//EN" "XMetaL 6.0AuthorDITAXACsmyTypemyType_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!
- You must be logged in to reply to this topic.