Reply to: XMetaL Customization – DeploymentFebruary 21, 2018 at 7:58 pm
You can put multiple macros into one MCR file or you can build multiple MCR files. If installing to a single machine the result is basically going to be the same, though loading order of macros may differ depending on the filename of the MCR files.
To XMetaL, each schema (DTD or XSD) is the basis for a single document-level customization. It loads the XML file, finds the DTD or XSD file (see the document I referenced previously for a very detailed description of how a DTD or XSD is found) then all other files needed to render the display of the XML file and provide UI interaction are loaded (this includes CSS, CTM, MCR and possibly other files). The minimum is CSS and CTM but there are over 1000 APIs you can use to customize how users interact with the XML and the main UI of the application, and what happens for many many events.
You can either add your entries to the catalog file or add your own catalog file(s) and reference them from the XMetaL catalog file. The software needs to start looking somewhere and it uses its own catalog file to do that.
However, there are many other ways to find your schema (see the document I referenced previously for a very detailed description). Some options:
1. Place your DTD/XSD any other files in the same folder as your XML file or nearby, perhaps in a subfolder, sibling folder, etc, then in the XML file's DOCTYPE declaration or SchemaLocation point to the DTD/XSD using a relative path.
2. Place your DTD/XSD file in the Rules folder. This is where XMetaL looks for schemas when it can't find them using any other method. This is by far the simplest solution as it means you can have literally any random value in the XML for DOCTYPE or SchemaLocation and if XMetaL can't find the file there it looks in the Rules folder and loads everything from there.
3. Add catalog entries for each of your DTDs, then set a unique PUBLICID value in each of your XML files XMetaL Author can use to find them based on the catalog entries.
3. Some CMS systems have the capability to manage and deploy customization files for XMetaL Author. The vendor can tell you if this is the case and how to configure that.
4. Create a macro that overrides all of the above, parses the XML file (using some external process) and then tells XMetaL Author where to look for the DTD by overriding the SYSTEMID value. This gives you absolute control but is overkill 99.9% of the time.