Hi,
I am able to use xslt-saxon in 4.6.0, specifying a transform as
file:src/xslt/test.xslt.
I'm using the configuration a few paragraphs below, in Camel 4.6.0, from
Eclipse.
Given a file uri the xslt takes the incoming XML and, as expected, outputs
<hello3/>.
Given a header of CamelXsltResourceUri set to either
constant("file:src/xslt/test.xslt") or simple("file:src/xslt/test.xslt"),
with or without adding the prefix xslt-saxon, I get the error that follows
the configuration code. I have a similar problem when I put the transform
itself into the header CamelXsltStylesheet.
The docs (for xslt-saxon, despite the use of xslt in the example), say:
When using a header for dynamic stylesheet, then you can either refer to
the stylesheet as a file or classpath with the header CamelXsltResourceUri,
such as:
from("direct:transform")
.setHeader("CamelXsltResourceUri",
simple("file:styles/${header.region}.xsl"))
.to("xslt:template.xsl?allowTemplateFromHeader=true
Configuration:
@Override
public void configure() throws Exception {
// TODO Auto-generated method stub
from("timer:xslttimer?period=20000")
.routeId("xsltRunnerId")
.setBody(constant("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"+"<Test/>"))
.log(LoggingLevel.INFO, "${body}")
// I've tried adding xslt-saxon: prior to file:
// in setHeader, but neither worked
.setHeader(
"CamelXsltResourceUri",
simple("file:src/xslt/test.xslt"))
//.constant("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
// + "<xsl:stylesheet version=\"2.0\" xmlns:xsl=\"
http://www.w3.org/1999/XSL/Transform\">"
// + " <xsl:template match=\"/\">"
// + " <hello3/>"
// + " </xsl:template></xsl:stylesheet>")
// THIS WORKS WHEN UNCOMMENTED
//.to("xslt-saxon:file:src/xslt/test.xslt")
// THIS DOES NOT WORK WHEN UNCOMMENTED
.to("xslt-saxon?allowTemplateFromHeader=true")
.log(LoggingLevel.INFO, "${body}");
}
}
org.apache.camel.FailedToCreateRouteException: Failed to create route
xsltRunnerId at:
>>> To[xslt-saxon?allowTemplateFromHeader=true] <<<
in route: Route(xsltRunnerId)[From[timer:xslttimer?period=20000] ->
[S... because of No endpoint could be found for:
xslt-saxon?allowTemplateFromHeader=true,
please check your classpath contains the needed Camel component jar.
at
org.apache.camel.reifier.RouteReifier.doCreateRoute(RouteReifier.java:234)
~[camel-core-reifier-4.6.0.jar:4.6.0]
at org.apache.camel.reifier.RouteReifier.createRoute(RouteReifier.java:85)
~[camel-core-reifier-4.6.0.jar:4.6.0]
at
org.apache.camel.impl.DefaultModelReifierFactory.createRoute(DefaultModelReifierFactory.java:49)
~[camel-core-engine-4.6.0.jar:4.6.0]
at
org.apache.camel.impl.DefaultCamelContext.startRouteDefinitions(DefaultCamelContext.java:728)
~[camel-core-engine-4.6.0.jar:4.6.0]
at
org.apache.camel.impl.DefaultCamelContext.startRouteDefinitions(DefaultCamelContext.java:594)
~[camel-core-engine-4.6.0.jar:4.6.0]
at
org.apache.camel.impl.engine.AbstractCamelContext.doInit(AbstractCamelContext.java:2391)
~[camel-base-engine-4.6.0.jar:4.6.0]
at org.apache.camel.support.service.BaseService.init(BaseService.java:78)
~[camel-api-4.6.0.jar:4.6.0]
at
org.apache.camel.impl.engine.AbstractCamelContext.init(AbstractCamelContext.java:2027)
~[camel-base-engine-4.6.0.jar:4.6.0]
at org.apache.camel.support.service.BaseService.start(BaseService.java:105)
~[camel-api-4.6.0.jar:4.6.0]
at
org.apache.camel.impl.engine.AbstractCamelContext.start(AbstractCamelContext.java:2046)
~[camel-base-engine-4.6.0.jar:4.6.0]
at
org.apache.camel.impl.DefaultCamelContext.start(DefaultCamelContext.java:212)
~[camel-core-engine-4.6.0.jar:4.6.0]
at
org.apache.camel.spring.SpringCamelContext.start(SpringCamelContext.java:119)
~[camel-spring-4.6.0.jar:4.6.0]
at
org.apache.camel.spring.SpringCamelContext.onApplicationEvent(SpringCamelContext.java:151)
~[camel-spring-4.6.0.jar:4.6.0]
at
org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:185)
~[spring-context-6.1.10.jar:6.1.10]
at
org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:178)
~[spring-context-6.1.10.jar:6.1.10]
at
org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:156)
~[spring-context-6.1.10.jar:6.1.10]
at
org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:451)
~[spring-context-6.1.10.jar:6.1.10]
at
org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:384)
~[spring-context-6.1.10.jar:6.1.10]
at
org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:984)
~[spring-context-6.1.10.jar:6.1.10]
at
org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:627)
~[spring-context-6.1.10.jar:6.1.10]
at
org.springframework.boot.SpringApplication.refresh(SpringApplication.java:754)
~[spring-boot-3.2.7.jar:3.2.7]
at
org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:456)
~[spring-boot-3.2.7.jar:3.2.7]
at
org.springframework.boot.SpringApplication.run(SpringApplication.java:335)
~[spring-boot-3.2.7.jar:3.2.7]
at
org.springframework.boot.SpringApplication.run(SpringApplication.java:1363)
~[spring-boot-3.2.7.jar:3.2.7]
at
org.springframework.boot.SpringApplication.run(SpringApplication.java:1352)
~[spring-boot-3.2.7.jar:3.2.7]
at com.jmc.demo.DemoApplication.main(DemoApplication.java:10) ~[classes/:na]
Caused by: org.apache.camel.NoSuchEndpointException: No endpoint could be
found for: xslt-saxon?allowTemplateFromHeader=true, please check your
classpath contains the needed Camel component jar.
at
org.apache.camel.impl.engine.AbstractCamelContext.doGetEndpoint(AbstractCamelContext.java:785)
~[camel-base-engine-4.6.0.jar:4.6.0]
at
org.apache.camel.impl.engine.AbstractCamelContext.getEndpoint(AbstractCamelContext.java:731)
~[camel-base-engine-4.6.0.jar:4.6.0]
at
org.apache.camel.support.CamelContextHelper.resolveEndpoint(CamelContextHelper.java:128)
~[camel-support-4.6.0.jar:4.6.0]
at
org.apache.camel.reifier.SendReifier.resolveEndpoint(SendReifier.java:47)
~[camel-core-reifier-4.6.0.jar:4.6.0]
at
org.apache.camel.reifier.SendReifier.createProcessor(SendReifier.java:37)
~[camel-core-reifier-4.6.0.jar:4.6.0]
at
org.apache.camel.reifier.ProcessorReifier.makeProcessor(ProcessorReifier.java:882)
~[camel-core-reifier-4.6.0.jar:4.6.0]
at
org.apache.camel.reifier.ProcessorReifier.addRoutes(ProcessorReifier.java:622)
~[camel-core-reifier-4.6.0.jar:4.6.0]
at
org.apache.camel.reifier.RouteReifier.doCreateRoute(RouteReifier.java:230)
~[camel-core-reifier-4.6.0.jar:4.6.0]
... 25 common frames omitted
I've added the file camel-xslt-saxon-4.6.0.jar
<https://repo1.maven.org/maven2/org/apache/camel/camel-xslt-saxon/4.6.0/camel-xslt-saxon-4.6.0.jar>
to
my classpath, fwiw.
Any and all suggestions would be welcom.
Thanks,
Mitch