No SchemaFactory that implements the schema
does not necessarily mean that the Uri was wrong (yours it outdated though, see lexicore's answer).
SchemaFactoy
is an abstract
class and hides the fact that there needs to be a schema specific subclass that understands the schema. There are implementations for the standard Uris / schemas but there seems to be none for schematron's included in a default Java installation.
You can find "instructions" how to provide an implementation of your own in the documentation of the newInstance
method
To find a SchemaFactory object for a given schema language, this method looks the following places in the following order[...]
- [..] system property "javax.xml.validation.SchemaFactory:schemaLanguage" [..]
- $java.home/lib/jaxp.properties [..]
- service provider [..] matching javax.xml.validation.SchemaFactory in the resource directory META-INF/services.
The last of the three is probably the most interesting one. http://docs.oracle.com/javase/tutorial/ext/basics/spi.html explains the service provider pattern in java a bit more if you're interested.
But I guess you don't want to implement your own schematron validator, you just want to use one. Try if anything of those two work for you. They came up when using the google to search for ServiceFactory schematron
There might be more out there and there seem to be several other approaches that don't seem use this ServiceFactory
path. See Where can I find a Java implementation of an ISO Schematron validator?