Reply to: RLX File locationNovember 12, 2014 at 7:47 pm
The RLX file is a compiled version of the DTD, similar to the model that it creates in memory when it reads in a DTD file. Originally when computers were slower this was important since it could take a long time to create the model. The software still does this because it has always done so and was designed this way.
As for reading in PUBLIC id values and SYSTEM id values, the software can be configured to load DTDs from anywhere you like but for DITA you do not want it to do that because if you do XMetaL Author will not load the DITA DTDs we include together with the customization (the rest of the functionality for editing DITA) that we have designed.
When XMetaL Author Enterprise sees a DOCTYPE like the one you have in your message it does read in the SYSTEM id portion. In your case this is “concept.dtd”. The path is relative in this case, so it does look in the same folder as the XML file for the DTD — under normal circumstances. This is actually not something you want to have happen for DITA though, because the rest of the customization that drives all of the special DITA authoring functionality will not be loaded and the benefits of purchasing XMetaL Author Enterprise for its DITA authoring capability will be wasted. You will be editing your DITA XML files with the most rudimentary “edit as XML” functionality the software provides. Under normal circumstances, if the file is found in that folder it is loaded, and if you have put customization files in that folder they are also loaded. However, if it is not found in the same folder then the PUBLIC id is read in and XMetaL Author looks through all the catalog files it has loaded for a matching PUBLIC id. If one is found then it loads the DTD from the associated SYSTEM id value.
For DITA authoring – specifically DITA – this is overridden (via script) since you will always want the DITA authoring customization to be loaded. This also allows the software to be easily configured to work with DITA specializations.
XMetaL Author can be thought of as having three levels of support for XML editing:
1) You provide the DTD and the software provides basic editing support for that DTD. At the very basic level two files are still required: CSS (for display of the XML) and CTM (which includes some display settings and sets various editing behaviours as well). These settings will be auto-generated in this case and the guesses the software makes may provide some good results for working with elements and attributes but in some cases they may not be as good as if a human designed them. We don't recommend this as you might as well use a less capable editing tool and save your money because a lot of the functionality the software is capable of will not be available. For temporary, or one-off cases this is still useful however. This is not XMetaL Author's strength though, #2 is its real strength.
2) You (or a partner or other 3rd party) provide the DTD and design a “customization”. This includes at minimum carefully designed CSS and CTM files, but it may also include additional forms or dialogs, changes to the user interface including toolbars and menus, and other UI changes specific to editing this particular document or to the application as a whole (implemented mostly via macros inside MCR files). The customization adds whatever functionality you need to make it easy for your authors to work with a specific DTD by hiding complex functionality. For example: instead of typing in the full path to reference an image or other file as an attribute value (which might be necessary for #1 above) the customization can display a “browse for file” dialog.
3) We provide the entire authoring experience. Currently this is limited to DITA authoring (though some people take the DocBook and other samples we include and use those as they are or build on them to create their own customization). For DITA everything works out of the box and clients do not need to provide the DITA DTDs or the customization files or the integration with the DITA Open Toolkit. Everything just works.