@PostConstruct
 protected void init() {
   transformerFactory.setURIResolver(
       new URIResolver() {
         @Override
         public Source resolve(String href, String base) throws TransformerException {
           try {
             return new StreamSource(new ClassPathResource("transform/" + href).getInputStream());
           } catch (IOException e) {
             throw new TransformerException("Failed to resolve uri: " + href, e);
           }
         }
       });
 }
  static {
    try {
      // Try to load Saxon implementation before defaulting to default implementation.
      transformerFactory =
          (TransformerFactoryImpl)
              Class.forName("net.sf.saxon.TransformerFactoryImpl").getConstructor().newInstance();
      logger.info("Using Saxon transformer.");
    } catch (Exception e) {
      transformerFactory = TransformerFactory.newInstance();
      logger.info("Using default transformer.");
    }

    transformerFactory.setURIResolver(
        new URIResolver() {
          @Override
          public Source resolve(String href, String base) throws TransformerException {
            return !"".equals(base)
                ? null
                : new StreamSource(
                    getClass()
                        .getResourceAsStream(String.format("/iso-schematron-xslt2/%s", href)));
          }
        });
  }