I am trying to figure out how to construct a set of Schematron files that work together. For example, where an abstract pattern can reside in one Schematron schema and can be invoked by a pattern in another schema. Or where a set of schemas can be processed against an instance document using a single processing instruction in the instance message. I'm sure someone has already thought this out, and I'm hoping someone can point me in the right direction. I've considered the following possibilities:
My first thought was just to put multiple processing instructions in the instance messages, but it turns out that we can't do that.
My second thought was to simply invoke one schema from another using a namespace, ala "import" statements in XML Schema, but Schematron doesn't seem to be set up for that.
My third thought was to use include statements to pull content into a schema from external files. The problem is that whatever an include statement brings in has to fit into the Schematron hierarchy at the point of insertion. So from a schema you can include a pattern, but you can't include a schema. Supposedly you can set up include statements to include a specific entity in a file, and not the whole file, but I get error messages telling me I can't do that when I try it.
My fourth thought was to extend Schematron to create a layer between schema and pattern, phase, etc., which would facilitate "including" the entire contents of a schema without including the schema itself. I don't know how to do this.
So at this point I'm contemplating a setup where every pattern and abstract pattern "lives" in a separate file which gets included in a single schematron file. This could be workable but presents major complexity and management issues, obviously. I have the feeling that there must be a straight-forward way to do this.
Any pointers you can toss my way would be much appreciated.