So I created a catalog file for just one DTD and added it to the XML Catalog preferences, and everything worked fine.
However, I need to work with two DTDs (input and output), and I'm having problems. I created a catalog file for each DTD, and put the catalog files into the directories containing the DTD files. Now I get validation errors when I'm parsing an instance of the DTD whose catalog file comes second in the XML Catalog preferences list. (For each DTD, I can validate an instance with no errors if that DTD's catalog file is the only one in the preferences list.)
My two DTDs are slightly customized versions of NLM Journal Publishing 3.0 (input) and JATS 1.0.4 (output), which are fairly similar. One important difference is that, while we use the CALS table markup in each (instead of XHTML), we use the 'oasis' namespace prefix only in the JATS 1.0.4 (output) files, and this seems to be at the root of the problem.
How do I ensure that for each DTD, Oxygen consults only the DTD files in the same directory as the main DTD file?