Claus,

The question I am asking is not one that can be resolved by the FAQ you
pointed to.  I notice this question gets posted a lot and no one seems to be
fully answering it.  Here's my go at it:

The Camel xslt docs mention "Dynamic Stylesheets" by saying the following:
/*Available as of Camel 2.9*
Camel provides the CamelXsltResourceUri header which you can use to define a
stylesheet to use instead of what is configured on the endpoint URI. This
allows you to provide a dynamic stylesheet at runtime./

I wish they could have supported their documentation better and provided an
example.  Hopefully the example below will help others.

{code}
  // register myResolver bean
  SimpleRegistry sr = new SimpleRegistry();
  sr.put("myResolver", new MyResolver());

  from("direct:location")
    .setHeader("CamelXsltResourceUri",
simple("xslt:http://localhost:8080/<path>/<to>/<template>?uriResolver=#myResolver"))
    .to("xslt:placeHolderTemplate.xsl")
{/code}

Then within the myResolver class, fetch a remote resource and pull down the
xml you wish to use.

NOTE:  placeHolderTemplate.xsl is a real file located on the classpath for
compile-time validation.  Once we execute this route and Camel see's the
"CamelXsltResourceUri" property in the headers, it will use the properties
value as an argument into myResolver.

MyResolver looks like the following:
{code}
class MyResolver extends XsltUriResolver {
    public Source resolve(String href, String base) throws
TransformerException {
        if(href.contains("xslt:")){
         // do logic to get resource
        }
   }
}
{/code}

I hope that helps



--
View this message in context: 
http://camel.465427.n5.nabble.com/Dynamic-xsl-with-custom-uri-resolver-tp5736668p5736862.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Reply via email to