- Monday, 7th July 2025
Are you working with multiple S1000D and S1000D-derived outputs?
If you are then I have no doubt that you are making extensive use of the Oxygen XML frameworks but, at the end of the day, an S1000D Data Module is still just an S1000D Data Module.
Frameworks:
Regardless of which framework you’re working in, the S1000D Data Module (DM) still needs to be validated against the relevant DTD/Schema!
Within Docuneering, we have setup a Common S1000D Schema Location and thought we would share the idea with the S1000D Community in an effort to help others simplify the validation process and avoid some of the simple mistakes we made along the way.
Download all, or as many of the different S1000D Issues as you need from the official s1000d.org website:
We downloaded ALL of the different S1000D XML Issues and Patches:
(Click image to enlarge)
If you would like a ZIPPED copy of this folder structure, please...
From within your Oxygen XML framework, you now need to tell it where to look for the XML catalog.xml file
Select: Options > Preferences...
This will open the Preferences dialog...
(Click image to enlarge)
From the lefthand option list, select Document Type Association and in righthand side Document type list, select your framework and click Edit (or simply double click the framework).
Within your framework, select the Catalogs tab...
(Click image to enlarge)
While we could use an absolute path in the framework to point to our Common S1000D Schema Location "catalog.xml" file, we also wanted the option to create a portable version of the framework.
(Click image to enlarge)
This method allows us to use either the Common S1000D Schema Location or a local version stored in the framework to make it fully portable.
Please Note: We do not have duplicate files stored in the Common S1000D Schema Location and the framework folder. We only use the Common S1000D Schema Location within our frameworks but we wanted a method to "allow us" to share the framework.
The catalog file has historically been used to point to the different DTD/schema file(s) but it also tended to include entities and other associated bits.
With S1000D XML, the catalog "rewrite rule" allows us to simply point to local files but, for it to work correctly (or to even work at all), it is important to use the folder structure as provided.
If you UNZIP the different packages from the s1000d.org website and use the as provided folder structure, all of the relative path information contained within the different files will resolve.
It's created as a self-contained package!
Before we proceed onto the catalog.xml rewrite rules we first need to understand how a DM knows which schema to validate against.
When you open a DM, the @xsi:noNamespaceSchemaLocation contains a URI to the XSD schema file.
(Click image to enlarge)
This example S1000D Issue 4.2 DM is pointing to the descript.xsd schema in the S1000D_4-2 folder so we know it's an Issue 4.2 Descriptive doctype.
(Click image to enlarge)
You could continue to use this URI method to validate your DM's but it has the following drawbacks:
It is therefore quicker and more stable to validate against local schema files.
To change the validation to your local files we need to implement some rewrite rules in the catalog.xml file:
(Click image to enlarge)
So ... what are we doing here?
To rewrite the URI to a set of local files we need to define the @systemIdStartString and the @rewritePrefix.
If we focus on the S1000D Issue 4.2 rewrite rule (on line 23 of the previous image) and look at the example DM, it finds a matching @systemIdStartString:
(Click image to enlarge)
So it changes (rewrites) it from:
To:
This new "rewrite" creates a path which is relative to the location of the catalog.xml file
(Click image to enlarge)
This is why it's important (vital even) to use the as provided folder structure.
The S1000D ZIP file folder structure matches the structure of the @xsi:noNamespaceSchemaLocation URI.
The rewrite rule is simply changing the first part of the URL to use a relative local path and then uses the rest of the URL to find the schema file.
(Click image to enlarge)
And that's it ... you are now using local files for fast, stable and uninterrupted S1000D XML validation!