This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch xslt
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 08cb948472d39ab9c39f1fb2a6afcf4ad8593596
Author: Claus Ibsen <[email protected]>
AuthorDate: Wed Sep 20 15:16:04 2023 +0200

    CAMEL-19889: camel-xslt - Add option allowTemplateFromHeader
---
 .../camel/catalog/components/xslt-saxon.json       | 61 ++++++++--------
 .../org/apache/camel/catalog/components/xslt.json  | 47 ++++++------
 .../xslt/saxon/XsltSaxonEndpointUriFactory.java    |  3 +-
 .../camel/component/xslt/saxon/xslt-saxon.json     | 61 ++++++++--------
 .../component/xslt/XsltComponentConfigurer.java    |  6 ++
 .../component/xslt/XsltEndpointConfigurer.java     |  6 ++
 .../component/xslt/XsltEndpointUriFactory.java     |  3 +-
 .../org/apache/camel/component/xslt/xslt.json      | 47 ++++++------
 .../apache/camel/component/xslt/XsltComponent.java | 17 +++++
 .../apache/camel/component/xslt/XsltConstants.java |  4 +-
 .../apache/camel/component/xslt/XsltEndpoint.java  | 29 ++++++++
 .../XsltFromHeaderOverrideEndpointUriTest.java     | 83 ++++++++++++++++++++++
 .../component/dsl/XsltComponentBuilderFactory.java | 21 ++++++
 .../dsl/XsltSaxonComponentBuilderFactory.java      | 21 ++++++
 .../dsl/ServletEndpointBuilderFactory.java         | 64 ++++++++---------
 .../endpoint/dsl/XsltEndpointBuilderFactory.java   | 55 ++++++++++++++
 .../dsl/XsltSaxonEndpointBuilderFactory.java       | 55 ++++++++++++++
 17 files changed, 446 insertions(+), 137 deletions(-)

diff --git 
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/xslt-saxon.json
 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/xslt-saxon.json
index 9d5e585c3b2..2fd30414965 100644
--- 
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/xslt-saxon.json
+++ 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/xslt-saxon.json
@@ -22,40 +22,43 @@
     "lenientProperties": false
   },
   "componentProperties": {
-    "contentCache": { "index": 0, "kind": "property", "displayName": "Content 
Cache", "group": "producer", "label": "", "required": false, "type": "boolean", 
"javaType": "boolean", "deprecated": false, "autowired": false, "secret": 
false, "defaultValue": true, "description": "Cache for the resource content 
(the stylesheet file) when it is loaded. If set to false Camel will reload the 
stylesheet file on each message processing. This is good for development. A 
cached stylesheet can be forc [...]
-    "lazyStartProducer": { "index": 1, "kind": "property", "displayName": 
"Lazy Start Producer", "group": "producer", "label": "producer", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": false, "description": 
"Whether the producer should be started lazy (on the first message). By 
starting lazy you can use this to allow CamelContext and routes to startup in 
situations where a producer may otherwise fail [...]
-    "autowiredEnabled": { "index": 2, "kind": "property", "displayName": 
"Autowired Enabled", "group": "advanced", "label": "advanced", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": true, "description": 
"Whether autowiring is enabled. This is used for automatic autowiring options 
(the option must be marked as autowired) by looking up in the registry to find 
if there is a single instance of matching t [...]
-    "saxonConfiguration": { "index": 3, "kind": "property", "displayName": 
"Saxon Configuration", "group": "advanced", "label": "advanced", "required": 
false, "type": "object", "javaType": "net.sf.saxon.Configuration", 
"deprecated": false, "autowired": false, "secret": false, "description": "To 
use a custom Saxon configuration" },
-    "saxonConfigurationProperties": { "index": 4, "kind": "property", 
"displayName": "Saxon Configuration Properties", "group": "advanced", "label": 
"advanced", "required": false, "type": "object", "javaType": 
"java.util.Map<java.lang.String, java.lang.Object>", "deprecated": false, 
"autowired": false, "secret": false, "description": "To set custom Saxon 
configuration properties" },
-    "saxonExtensionFunctions": { "index": 5, "kind": "property", 
"displayName": "Saxon Extension Functions", "group": "advanced", "label": 
"advanced", "required": false, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "autowired": false, "secret": false, 
"description": "Allows you to use a custom 
net.sf.saxon.lib.ExtensionFunctionDefinition. You would need to add camel-saxon 
to the classpath. The function is looked up in the registry, where you can use 
commas to se [...]
-    "secureProcessing": { "index": 6, "kind": "property", "displayName": 
"Secure Processing", "group": "advanced", "label": "advanced", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": true, "description": 
"Feature for XML secure processing (see javax.xml.XMLConstants). This is 
enabled by default. However, when using Saxon Professional you may need to turn 
this off to allow Saxon to be able to use Java  [...]
-    "transformerFactoryClass": { "index": 7, "kind": "property", 
"displayName": "Transformer Factory Class", "group": "advanced", "label": 
"advanced", "required": false, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "autowired": false, "secret": false, 
"description": "To use a custom XSLT transformer factory, specified as a FQN 
class name" },
-    "transformerFactoryConfigurationStrategy": { "index": 8, "kind": 
"property", "displayName": "Transformer Factory Configuration Strategy", 
"group": "advanced", "label": "advanced", "required": false, "type": "object", 
"javaType": 
"org.apache.camel.component.xslt.TransformerFactoryConfigurationStrategy", 
"deprecated": false, "autowired": false, "secret": false, "description": "A 
configuration strategy to apply on freshly created instances of 
TransformerFactory." },
-    "uriResolver": { "index": 9, "kind": "property", "displayName": "Uri 
Resolver", "group": "advanced", "label": "advanced", "required": false, "type": 
"object", "javaType": "javax.xml.transform.URIResolver", "deprecated": false, 
"autowired": false, "secret": false, "description": "To use a custom 
UriResolver. Should not be used together with the option 'uriResolverFactory'." 
},
-    "uriResolverFactory": { "index": 10, "kind": "property", "displayName": 
"Uri Resolver Factory", "group": "advanced", "label": "advanced", "required": 
false, "type": "object", "javaType": 
"org.apache.camel.component.xslt.XsltUriResolverFactory", "deprecated": false, 
"autowired": false, "secret": false, "description": "To use a custom 
UriResolver which depends on a dynamic endpoint resource URI. Should not be 
used together with the option 'uriResolver'." }
+    "allowTemplateFromHeader": { "index": 0, "kind": "property", 
"displayName": "Allow Template From Header", "group": "producer", "label": "", 
"required": false, "type": "boolean", "javaType": "boolean", "deprecated": 
false, "autowired": false, "secret": false, "defaultValue": false, 
"description": "Whether to allow to use resource template from header or not 
(default false). Enabling this allows to specify dynamic templates via message 
header. However this can be seen as a potential se [...]
+    "contentCache": { "index": 1, "kind": "property", "displayName": "Content 
Cache", "group": "producer", "label": "", "required": false, "type": "boolean", 
"javaType": "boolean", "deprecated": false, "autowired": false, "secret": 
false, "defaultValue": true, "description": "Cache for the resource content 
(the stylesheet file) when it is loaded. If set to false Camel will reload the 
stylesheet file on each message processing. This is good for development. A 
cached stylesheet can be forc [...]
+    "lazyStartProducer": { "index": 2, "kind": "property", "displayName": 
"Lazy Start Producer", "group": "producer", "label": "producer", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": false, "description": 
"Whether the producer should be started lazy (on the first message). By 
starting lazy you can use this to allow CamelContext and routes to startup in 
situations where a producer may otherwise fail [...]
+    "autowiredEnabled": { "index": 3, "kind": "property", "displayName": 
"Autowired Enabled", "group": "advanced", "label": "advanced", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": true, "description": 
"Whether autowiring is enabled. This is used for automatic autowiring options 
(the option must be marked as autowired) by looking up in the registry to find 
if there is a single instance of matching t [...]
+    "saxonConfiguration": { "index": 4, "kind": "property", "displayName": 
"Saxon Configuration", "group": "advanced", "label": "advanced", "required": 
false, "type": "object", "javaType": "net.sf.saxon.Configuration", 
"deprecated": false, "autowired": false, "secret": false, "description": "To 
use a custom Saxon configuration" },
+    "saxonConfigurationProperties": { "index": 5, "kind": "property", 
"displayName": "Saxon Configuration Properties", "group": "advanced", "label": 
"advanced", "required": false, "type": "object", "javaType": 
"java.util.Map<java.lang.String, java.lang.Object>", "deprecated": false, 
"autowired": false, "secret": false, "description": "To set custom Saxon 
configuration properties" },
+    "saxonExtensionFunctions": { "index": 6, "kind": "property", 
"displayName": "Saxon Extension Functions", "group": "advanced", "label": 
"advanced", "required": false, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "autowired": false, "secret": false, 
"description": "Allows you to use a custom 
net.sf.saxon.lib.ExtensionFunctionDefinition. You would need to add camel-saxon 
to the classpath. The function is looked up in the registry, where you can use 
commas to se [...]
+    "secureProcessing": { "index": 7, "kind": "property", "displayName": 
"Secure Processing", "group": "advanced", "label": "advanced", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": true, "description": 
"Feature for XML secure processing (see javax.xml.XMLConstants). This is 
enabled by default. However, when using Saxon Professional you may need to turn 
this off to allow Saxon to be able to use Java  [...]
+    "transformerFactoryClass": { "index": 8, "kind": "property", 
"displayName": "Transformer Factory Class", "group": "advanced", "label": 
"advanced", "required": false, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "autowired": false, "secret": false, 
"description": "To use a custom XSLT transformer factory, specified as a FQN 
class name" },
+    "transformerFactoryConfigurationStrategy": { "index": 9, "kind": 
"property", "displayName": "Transformer Factory Configuration Strategy", 
"group": "advanced", "label": "advanced", "required": false, "type": "object", 
"javaType": 
"org.apache.camel.component.xslt.TransformerFactoryConfigurationStrategy", 
"deprecated": false, "autowired": false, "secret": false, "description": "A 
configuration strategy to apply on freshly created instances of 
TransformerFactory." },
+    "uriResolver": { "index": 10, "kind": "property", "displayName": "Uri 
Resolver", "group": "advanced", "label": "advanced", "required": false, "type": 
"object", "javaType": "javax.xml.transform.URIResolver", "deprecated": false, 
"autowired": false, "secret": false, "description": "To use a custom 
UriResolver. Should not be used together with the option 'uriResolverFactory'." 
},
+    "uriResolverFactory": { "index": 11, "kind": "property", "displayName": 
"Uri Resolver Factory", "group": "advanced", "label": "advanced", "required": 
false, "type": "object", "javaType": 
"org.apache.camel.component.xslt.XsltUriResolverFactory", "deprecated": false, 
"autowired": false, "secret": false, "description": "To use a custom 
UriResolver which depends on a dynamic endpoint resource URI. Should not be 
used together with the option 'uriResolver'." }
   },
   "headers": {
-    "CamelXsltFileName": { "index": 0, "kind": "header", "displayName": "", 
"group": "producer", "label": "", "required": false, "javaType": "String", 
"deprecated": false, "deprecationNote": "", "autowired": false, "secret": 
false, "description": "The XSLT file name", "constantName": 
"org.apache.camel.component.xslt.XsltConstants#XSLT_FILE_NAME" }
+    "CamelXsltResourceUri": { "index": 0, "kind": "header", "displayName": "", 
"group": "producer", "label": "", "required": false, "javaType": "String", 
"deprecated": false, "deprecationNote": "", "autowired": false, "secret": 
false, "description": "A URI for the template resource to use instead of the 
endpoint configured.", "constantName": 
"org.apache.camel.component.xslt.XsltConstants#XSLT_RESOURCE_URI" },
+    "CamelXsltFileName": { "index": 1, "kind": "header", "displayName": "", 
"group": "producer", "label": "", "required": false, "javaType": "String", 
"deprecated": false, "deprecationNote": "", "autowired": false, "secret": 
false, "description": "The XSLT file name", "constantName": 
"org.apache.camel.component.xslt.XsltConstants#XSLT_FILE_NAME" }
   },
   "properties": {
     "resourceUri": { "index": 0, "kind": "path", "displayName": "Resource 
Uri", "group": "producer", "label": "", "required": true, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", 
"autowired": false, "secret": false, "description": "Path to the template. The 
following is supported by the default URIResolver. You can prefix with: 
classpath, file, http, ref, or bean. classpath, file and http loads the 
resource using these protocols (classpath i [...]
     "allowStAX": { "index": 1, "kind": "parameter", "displayName": "Allow 
StAX", "group": "producer", "label": "", "required": false, "type": "boolean", 
"javaType": "boolean", "deprecated": false, "autowired": false, "secret": 
false, "defaultValue": true, "description": "Whether to allow using StAX as the 
javax.xml.transform.Source. You can enable this if the XSLT library supports 
StAX such as the Saxon library (camel-saxon). The Xalan library (default in 
JVM) does not support StAXSource." },
-    "contentCache": { "index": 2, "kind": "parameter", "displayName": "Content 
Cache", "group": "producer", "label": "", "required": false, "type": "boolean", 
"javaType": "boolean", "deprecated": false, "autowired": false, "secret": 
false, "defaultValue": true, "description": "Cache for the resource content 
(the stylesheet file) when it is loaded. If set to false Camel will reload the 
stylesheet file on each message processing. This is good for development. A 
cached stylesheet can be for [...]
-    "deleteOutputFile": { "index": 3, "kind": "parameter", "displayName": 
"Delete Output File", "group": "producer", "label": "", "required": false, 
"type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": 
false, "secret": false, "defaultValue": false, "description": "If you have 
output=file then this option dictates whether or not the output file should be 
deleted when the Exchange is done processing. For example suppose the output 
file is a temporary file, then it ca [...]
-    "failOnNullBody": { "index": 4, "kind": "parameter", "displayName": "Fail 
On Null Body", "group": "producer", "label": "", "required": false, "type": 
"boolean", "javaType": "boolean", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": true, "description": "Whether or not to throw 
an exception if the input body is null." },
-    "output": { "index": 5, "kind": "parameter", "displayName": "Output", 
"group": "producer", "label": "", "required": false, "type": "object", 
"javaType": "org.apache.camel.component.xslt.XsltOutput", "enum": [ "string", 
"bytes", "DOM", "file" ], "deprecated": false, "autowired": false, "secret": 
false, "defaultValue": "string", "description": "Option to specify which output 
type to use. Possible values are: string, bytes, DOM, file. The first three 
options are all in memory based, whe [...]
-    "transformerCacheSize": { "index": 6, "kind": "parameter", "displayName": 
"Transformer Cache Size", "group": "producer", "label": "", "required": false, 
"type": "integer", "javaType": "int", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": 0, "description": "The number of 
javax.xml.transform.Transformer object that are cached for reuse to avoid calls 
to Template.newTransformer()." },
-    "lazyStartProducer": { "index": 7, "kind": "parameter", "displayName": 
"Lazy Start Producer", "group": "producer (advanced)", "label": 
"producer,advanced", "required": false, "type": "boolean", "javaType": 
"boolean", "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": false, "description": "Whether the producer should be started 
lazy (on the first message). By starting lazy you can use this to allow 
CamelContext and routes to startup in situations where a produc [...]
-    "entityResolver": { "index": 8, "kind": "parameter", "displayName": 
"Entity Resolver", "group": "advanced", "label": "advanced", "required": false, 
"type": "object", "javaType": "org.xml.sax.EntityResolver", "deprecated": 
false, "autowired": false, "secret": false, "description": "To use a custom 
org.xml.sax.EntityResolver with javax.xml.transform.sax.SAXSource." },
-    "errorListener": { "index": 9, "kind": "parameter", "displayName": "Error 
Listener", "group": "advanced", "label": "advanced", "required": false, "type": 
"object", "javaType": "javax.xml.transform.ErrorListener", "deprecated": false, 
"autowired": false, "secret": false, "description": "Allows to configure to use 
a custom javax.xml.transform.ErrorListener. Beware when doing this then the 
default error listener which captures any errors or fatal errors and store 
information on the Exch [...]
-    "resultHandlerFactory": { "index": 10, "kind": "parameter", "displayName": 
"Result Handler Factory", "group": "advanced", "label": "advanced", "required": 
false, "type": "object", "javaType": 
"org.apache.camel.component.xslt.ResultHandlerFactory", "deprecated": false, 
"autowired": false, "secret": false, "description": "Allows you to use a custom 
org.apache.camel.builder.xml.ResultHandlerFactory which is capable of using 
custom org.apache.camel.builder.xml.ResultHandler types." },
-    "saxonConfiguration": { "index": 11, "kind": "parameter", "displayName": 
"Saxon Configuration", "group": "advanced", "label": "advanced", "required": 
false, "type": "object", "javaType": "net.sf.saxon.Configuration", 
"deprecated": false, "autowired": false, "secret": false, "description": "To 
use a custom Saxon configuration" },
-    "saxonExtensionFunctions": { "index": 12, "kind": "parameter", 
"displayName": "Saxon Extension Functions", "group": "advanced", "label": 
"advanced", "required": false, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "autowired": false, "secret": false, 
"description": "Allows you to use a custom 
net.sf.saxon.lib.ExtensionFunctionDefinition. You would need to add camel-saxon 
to the classpath. The function is looked up in the registry, where you can 
comma to separ [...]
-    "secureProcessing": { "index": 13, "kind": "parameter", "displayName": 
"Secure Processing", "group": "advanced", "label": "advanced", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": true, "description": 
"Feature for XML secure processing (see javax.xml.XMLConstants). This is 
enabled by default. However, when using Saxon Professional you may need to turn 
this off to allow Saxon to be able to use Jav [...]
-    "transformerFactory": { "index": 14, "kind": "parameter", "displayName": 
"Transformer Factory", "group": "advanced", "label": "advanced", "required": 
false, "type": "object", "javaType": "javax.xml.transform.TransformerFactory", 
"deprecated": false, "autowired": false, "secret": false, "description": "To 
use a custom XSLT transformer factory" },
-    "transformerFactoryClass": { "index": 15, "kind": "parameter", 
"displayName": "Transformer Factory Class", "group": "advanced", "label": 
"advanced", "required": false, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "autowired": false, "secret": false, 
"description": "To use a custom XSLT transformer factory, specified as a FQN 
class name" },
-    "transformerFactoryConfigurationStrategy": { "index": 16, "kind": 
"parameter", "displayName": "Transformer Factory Configuration Strategy", 
"group": "advanced", "label": "advanced", "required": false, "type": "object", 
"javaType": 
"org.apache.camel.component.xslt.TransformerFactoryConfigurationStrategy", 
"deprecated": false, "autowired": false, "secret": false, "description": "A 
configuration strategy to apply on freshly created instances of 
TransformerFactory." },
-    "uriResolver": { "index": 17, "kind": "parameter", "displayName": "Uri 
Resolver", "group": "advanced", "label": "advanced", "required": false, "type": 
"object", "javaType": "javax.xml.transform.URIResolver", "deprecated": false, 
"autowired": false, "secret": false, "description": "To use a custom 
javax.xml.transform.URIResolver" },
-    "xsltMessageLogger": { "index": 18, "kind": "parameter", "displayName": 
"Xslt Message Logger", "group": "advanced", "label": "advanced", "required": 
false, "type": "object", "javaType": 
"org.apache.camel.component.xslt.XsltMessageLogger", "deprecated": false, 
"autowired": false, "secret": false, "description": "A consumer to messages 
generated during XSLT transformations." }
+    "allowTemplateFromHeader": { "index": 2, "kind": "parameter", 
"displayName": "Allow Template From Header", "group": "producer", "label": "", 
"required": false, "type": "boolean", "javaType": "boolean", "deprecated": 
false, "autowired": false, "secret": false, "defaultValue": false, 
"description": "Whether to allow to use resource template from header or not 
(default false). Enabling this allows to specify dynamic templates via message 
header. However this can be seen as a potential s [...]
+    "contentCache": { "index": 3, "kind": "parameter", "displayName": "Content 
Cache", "group": "producer", "label": "", "required": false, "type": "boolean", 
"javaType": "boolean", "deprecated": false, "autowired": false, "secret": 
false, "defaultValue": true, "description": "Cache for the resource content 
(the stylesheet file) when it is loaded. If set to false Camel will reload the 
stylesheet file on each message processing. This is good for development. A 
cached stylesheet can be for [...]
+    "deleteOutputFile": { "index": 4, "kind": "parameter", "displayName": 
"Delete Output File", "group": "producer", "label": "", "required": false, 
"type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": 
false, "secret": false, "defaultValue": false, "description": "If you have 
output=file then this option dictates whether or not the output file should be 
deleted when the Exchange is done processing. For example suppose the output 
file is a temporary file, then it ca [...]
+    "failOnNullBody": { "index": 5, "kind": "parameter", "displayName": "Fail 
On Null Body", "group": "producer", "label": "", "required": false, "type": 
"boolean", "javaType": "boolean", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": true, "description": "Whether or not to throw 
an exception if the input body is null." },
+    "output": { "index": 6, "kind": "parameter", "displayName": "Output", 
"group": "producer", "label": "", "required": false, "type": "object", 
"javaType": "org.apache.camel.component.xslt.XsltOutput", "enum": [ "string", 
"bytes", "DOM", "file" ], "deprecated": false, "autowired": false, "secret": 
false, "defaultValue": "string", "description": "Option to specify which output 
type to use. Possible values are: string, bytes, DOM, file. The first three 
options are all in memory based, whe [...]
+    "transformerCacheSize": { "index": 7, "kind": "parameter", "displayName": 
"Transformer Cache Size", "group": "producer", "label": "", "required": false, 
"type": "integer", "javaType": "int", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": 0, "description": "The number of 
javax.xml.transform.Transformer object that are cached for reuse to avoid calls 
to Template.newTransformer()." },
+    "lazyStartProducer": { "index": 8, "kind": "parameter", "displayName": 
"Lazy Start Producer", "group": "producer (advanced)", "label": 
"producer,advanced", "required": false, "type": "boolean", "javaType": 
"boolean", "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": false, "description": "Whether the producer should be started 
lazy (on the first message). By starting lazy you can use this to allow 
CamelContext and routes to startup in situations where a produc [...]
+    "entityResolver": { "index": 9, "kind": "parameter", "displayName": 
"Entity Resolver", "group": "advanced", "label": "advanced", "required": false, 
"type": "object", "javaType": "org.xml.sax.EntityResolver", "deprecated": 
false, "autowired": false, "secret": false, "description": "To use a custom 
org.xml.sax.EntityResolver with javax.xml.transform.sax.SAXSource." },
+    "errorListener": { "index": 10, "kind": "parameter", "displayName": "Error 
Listener", "group": "advanced", "label": "advanced", "required": false, "type": 
"object", "javaType": "javax.xml.transform.ErrorListener", "deprecated": false, 
"autowired": false, "secret": false, "description": "Allows to configure to use 
a custom javax.xml.transform.ErrorListener. Beware when doing this then the 
default error listener which captures any errors or fatal errors and store 
information on the Exc [...]
+    "resultHandlerFactory": { "index": 11, "kind": "parameter", "displayName": 
"Result Handler Factory", "group": "advanced", "label": "advanced", "required": 
false, "type": "object", "javaType": 
"org.apache.camel.component.xslt.ResultHandlerFactory", "deprecated": false, 
"autowired": false, "secret": false, "description": "Allows you to use a custom 
org.apache.camel.builder.xml.ResultHandlerFactory which is capable of using 
custom org.apache.camel.builder.xml.ResultHandler types." },
+    "saxonConfiguration": { "index": 12, "kind": "parameter", "displayName": 
"Saxon Configuration", "group": "advanced", "label": "advanced", "required": 
false, "type": "object", "javaType": "net.sf.saxon.Configuration", 
"deprecated": false, "autowired": false, "secret": false, "description": "To 
use a custom Saxon configuration" },
+    "saxonExtensionFunctions": { "index": 13, "kind": "parameter", 
"displayName": "Saxon Extension Functions", "group": "advanced", "label": 
"advanced", "required": false, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "autowired": false, "secret": false, 
"description": "Allows you to use a custom 
net.sf.saxon.lib.ExtensionFunctionDefinition. You would need to add camel-saxon 
to the classpath. The function is looked up in the registry, where you can 
comma to separ [...]
+    "secureProcessing": { "index": 14, "kind": "parameter", "displayName": 
"Secure Processing", "group": "advanced", "label": "advanced", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": true, "description": 
"Feature for XML secure processing (see javax.xml.XMLConstants). This is 
enabled by default. However, when using Saxon Professional you may need to turn 
this off to allow Saxon to be able to use Jav [...]
+    "transformerFactory": { "index": 15, "kind": "parameter", "displayName": 
"Transformer Factory", "group": "advanced", "label": "advanced", "required": 
false, "type": "object", "javaType": "javax.xml.transform.TransformerFactory", 
"deprecated": false, "autowired": false, "secret": false, "description": "To 
use a custom XSLT transformer factory" },
+    "transformerFactoryClass": { "index": 16, "kind": "parameter", 
"displayName": "Transformer Factory Class", "group": "advanced", "label": 
"advanced", "required": false, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "autowired": false, "secret": false, 
"description": "To use a custom XSLT transformer factory, specified as a FQN 
class name" },
+    "transformerFactoryConfigurationStrategy": { "index": 17, "kind": 
"parameter", "displayName": "Transformer Factory Configuration Strategy", 
"group": "advanced", "label": "advanced", "required": false, "type": "object", 
"javaType": 
"org.apache.camel.component.xslt.TransformerFactoryConfigurationStrategy", 
"deprecated": false, "autowired": false, "secret": false, "description": "A 
configuration strategy to apply on freshly created instances of 
TransformerFactory." },
+    "uriResolver": { "index": 18, "kind": "parameter", "displayName": "Uri 
Resolver", "group": "advanced", "label": "advanced", "required": false, "type": 
"object", "javaType": "javax.xml.transform.URIResolver", "deprecated": false, 
"autowired": false, "secret": false, "description": "To use a custom 
javax.xml.transform.URIResolver" },
+    "xsltMessageLogger": { "index": 19, "kind": "parameter", "displayName": 
"Xslt Message Logger", "group": "advanced", "label": "advanced", "required": 
false, "type": "object", "javaType": 
"org.apache.camel.component.xslt.XsltMessageLogger", "deprecated": false, 
"autowired": false, "secret": false, "description": "A consumer to messages 
generated during XSLT transformations." }
   }
 }
diff --git 
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/xslt.json
 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/xslt.json
index 16626455d4a..0481baed38b 100644
--- 
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/xslt.json
+++ 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/xslt.json
@@ -22,32 +22,35 @@
     "lenientProperties": false
   },
   "componentProperties": {
-    "contentCache": { "index": 0, "kind": "property", "displayName": "Content 
Cache", "group": "producer", "label": "", "required": false, "type": "boolean", 
"javaType": "boolean", "deprecated": false, "autowired": false, "secret": 
false, "defaultValue": true, "description": "Cache for the resource content 
(the stylesheet file) when it is loaded. If set to false Camel will reload the 
stylesheet file on each message processing. This is good for development. A 
cached stylesheet can be forc [...]
-    "lazyStartProducer": { "index": 1, "kind": "property", "displayName": 
"Lazy Start Producer", "group": "producer", "label": "producer", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": false, "description": 
"Whether the producer should be started lazy (on the first message). By 
starting lazy you can use this to allow CamelContext and routes to startup in 
situations where a producer may otherwise fail [...]
-    "autowiredEnabled": { "index": 2, "kind": "property", "displayName": 
"Autowired Enabled", "group": "advanced", "label": "advanced", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": true, "description": 
"Whether autowiring is enabled. This is used for automatic autowiring options 
(the option must be marked as autowired) by looking up in the registry to find 
if there is a single instance of matching t [...]
-    "transformerFactoryClass": { "index": 3, "kind": "property", 
"displayName": "Transformer Factory Class", "group": "advanced", "label": 
"advanced", "required": false, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "autowired": false, "secret": false, 
"description": "To use a custom XSLT transformer factory, specified as a FQN 
class name" },
-    "transformerFactoryConfigurationStrategy": { "index": 4, "kind": 
"property", "displayName": "Transformer Factory Configuration Strategy", 
"group": "advanced", "label": "advanced", "required": false, "type": "object", 
"javaType": 
"org.apache.camel.component.xslt.TransformerFactoryConfigurationStrategy", 
"deprecated": false, "autowired": false, "secret": false, "description": "A 
configuration strategy to apply on freshly created instances of 
TransformerFactory." },
-    "uriResolver": { "index": 5, "kind": "property", "displayName": "Uri 
Resolver", "group": "advanced", "label": "advanced", "required": false, "type": 
"object", "javaType": "javax.xml.transform.URIResolver", "deprecated": false, 
"autowired": false, "secret": false, "description": "To use a custom 
UriResolver. Should not be used together with the option 'uriResolverFactory'." 
},
-    "uriResolverFactory": { "index": 6, "kind": "property", "displayName": 
"Uri Resolver Factory", "group": "advanced", "label": "advanced", "required": 
false, "type": "object", "javaType": 
"org.apache.camel.component.xslt.XsltUriResolverFactory", "deprecated": false, 
"autowired": false, "secret": false, "description": "To use a custom 
UriResolver which depends on a dynamic endpoint resource URI. Should not be 
used together with the option 'uriResolver'." }
+    "allowTemplateFromHeader": { "index": 0, "kind": "property", 
"displayName": "Allow Template From Header", "group": "producer", "label": "", 
"required": false, "type": "boolean", "javaType": "boolean", "deprecated": 
false, "autowired": false, "secret": false, "defaultValue": false, 
"description": "Whether to allow to use resource template from header or not 
(default false). Enabling this allows to specify dynamic templates via message 
header. However this can be seen as a potential se [...]
+    "contentCache": { "index": 1, "kind": "property", "displayName": "Content 
Cache", "group": "producer", "label": "", "required": false, "type": "boolean", 
"javaType": "boolean", "deprecated": false, "autowired": false, "secret": 
false, "defaultValue": true, "description": "Cache for the resource content 
(the stylesheet file) when it is loaded. If set to false Camel will reload the 
stylesheet file on each message processing. This is good for development. A 
cached stylesheet can be forc [...]
+    "lazyStartProducer": { "index": 2, "kind": "property", "displayName": 
"Lazy Start Producer", "group": "producer", "label": "producer", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": false, "description": 
"Whether the producer should be started lazy (on the first message). By 
starting lazy you can use this to allow CamelContext and routes to startup in 
situations where a producer may otherwise fail [...]
+    "autowiredEnabled": { "index": 3, "kind": "property", "displayName": 
"Autowired Enabled", "group": "advanced", "label": "advanced", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": true, "description": 
"Whether autowiring is enabled. This is used for automatic autowiring options 
(the option must be marked as autowired) by looking up in the registry to find 
if there is a single instance of matching t [...]
+    "transformerFactoryClass": { "index": 4, "kind": "property", 
"displayName": "Transformer Factory Class", "group": "advanced", "label": 
"advanced", "required": false, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "autowired": false, "secret": false, 
"description": "To use a custom XSLT transformer factory, specified as a FQN 
class name" },
+    "transformerFactoryConfigurationStrategy": { "index": 5, "kind": 
"property", "displayName": "Transformer Factory Configuration Strategy", 
"group": "advanced", "label": "advanced", "required": false, "type": "object", 
"javaType": 
"org.apache.camel.component.xslt.TransformerFactoryConfigurationStrategy", 
"deprecated": false, "autowired": false, "secret": false, "description": "A 
configuration strategy to apply on freshly created instances of 
TransformerFactory." },
+    "uriResolver": { "index": 6, "kind": "property", "displayName": "Uri 
Resolver", "group": "advanced", "label": "advanced", "required": false, "type": 
"object", "javaType": "javax.xml.transform.URIResolver", "deprecated": false, 
"autowired": false, "secret": false, "description": "To use a custom 
UriResolver. Should not be used together with the option 'uriResolverFactory'." 
},
+    "uriResolverFactory": { "index": 7, "kind": "property", "displayName": 
"Uri Resolver Factory", "group": "advanced", "label": "advanced", "required": 
false, "type": "object", "javaType": 
"org.apache.camel.component.xslt.XsltUriResolverFactory", "deprecated": false, 
"autowired": false, "secret": false, "description": "To use a custom 
UriResolver which depends on a dynamic endpoint resource URI. Should not be 
used together with the option 'uriResolver'." }
   },
   "headers": {
-    "CamelXsltFileName": { "index": 0, "kind": "header", "displayName": "", 
"group": "producer", "label": "", "required": false, "javaType": "String", 
"deprecated": false, "deprecationNote": "", "autowired": false, "secret": 
false, "description": "The XSLT file name", "constantName": 
"org.apache.camel.component.xslt.XsltConstants#XSLT_FILE_NAME" }
+    "CamelXsltResourceUri": { "index": 0, "kind": "header", "displayName": "", 
"group": "producer", "label": "", "required": false, "javaType": "String", 
"deprecated": false, "deprecationNote": "", "autowired": false, "secret": 
false, "description": "A URI for the template resource to use instead of the 
endpoint configured.", "constantName": 
"org.apache.camel.component.xslt.XsltConstants#XSLT_RESOURCE_URI" },
+    "CamelXsltFileName": { "index": 1, "kind": "header", "displayName": "", 
"group": "producer", "label": "", "required": false, "javaType": "String", 
"deprecated": false, "deprecationNote": "", "autowired": false, "secret": 
false, "description": "The XSLT file name", "constantName": 
"org.apache.camel.component.xslt.XsltConstants#XSLT_FILE_NAME" }
   },
   "properties": {
     "resourceUri": { "index": 0, "kind": "path", "displayName": "Resource 
Uri", "group": "producer", "label": "", "required": true, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", 
"autowired": false, "secret": false, "description": "Path to the template. The 
following is supported by the default URIResolver. You can prefix with: 
classpath, file, http, ref, or bean. classpath, file and http loads the 
resource using these protocols (classpath i [...]
-    "contentCache": { "index": 1, "kind": "parameter", "displayName": "Content 
Cache", "group": "producer", "label": "", "required": false, "type": "boolean", 
"javaType": "boolean", "deprecated": false, "autowired": false, "secret": 
false, "defaultValue": true, "description": "Cache for the resource content 
(the stylesheet file) when it is loaded. If set to false Camel will reload the 
stylesheet file on each message processing. This is good for development. A 
cached stylesheet can be for [...]
-    "deleteOutputFile": { "index": 2, "kind": "parameter", "displayName": 
"Delete Output File", "group": "producer", "label": "", "required": false, 
"type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": 
false, "secret": false, "defaultValue": false, "description": "If you have 
output=file then this option dictates whether or not the output file should be 
deleted when the Exchange is done processing. For example suppose the output 
file is a temporary file, then it ca [...]
-    "failOnNullBody": { "index": 3, "kind": "parameter", "displayName": "Fail 
On Null Body", "group": "producer", "label": "", "required": false, "type": 
"boolean", "javaType": "boolean", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": true, "description": "Whether or not to throw 
an exception if the input body is null." },
-    "output": { "index": 4, "kind": "parameter", "displayName": "Output", 
"group": "producer", "label": "", "required": false, "type": "object", 
"javaType": "org.apache.camel.component.xslt.XsltOutput", "enum": [ "string", 
"bytes", "DOM", "file" ], "deprecated": false, "autowired": false, "secret": 
false, "defaultValue": "string", "description": "Option to specify which output 
type to use. Possible values are: string, bytes, DOM, file. The first three 
options are all in memory based, whe [...]
-    "transformerCacheSize": { "index": 5, "kind": "parameter", "displayName": 
"Transformer Cache Size", "group": "producer", "label": "", "required": false, 
"type": "integer", "javaType": "int", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": 0, "description": "The number of 
javax.xml.transform.Transformer object that are cached for reuse to avoid calls 
to Template.newTransformer()." },
-    "lazyStartProducer": { "index": 6, "kind": "parameter", "displayName": 
"Lazy Start Producer", "group": "producer (advanced)", "label": 
"producer,advanced", "required": false, "type": "boolean", "javaType": 
"boolean", "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": false, "description": "Whether the producer should be started 
lazy (on the first message). By starting lazy you can use this to allow 
CamelContext and routes to startup in situations where a produc [...]
-    "entityResolver": { "index": 7, "kind": "parameter", "displayName": 
"Entity Resolver", "group": "advanced", "label": "advanced", "required": false, 
"type": "object", "javaType": "org.xml.sax.EntityResolver", "deprecated": 
false, "autowired": false, "secret": false, "description": "To use a custom 
org.xml.sax.EntityResolver with javax.xml.transform.sax.SAXSource." },
-    "errorListener": { "index": 8, "kind": "parameter", "displayName": "Error 
Listener", "group": "advanced", "label": "advanced", "required": false, "type": 
"object", "javaType": "javax.xml.transform.ErrorListener", "deprecated": false, 
"autowired": false, "secret": false, "description": "Allows to configure to use 
a custom javax.xml.transform.ErrorListener. Beware when doing this then the 
default error listener which captures any errors or fatal errors and store 
information on the Exch [...]
-    "resultHandlerFactory": { "index": 9, "kind": "parameter", "displayName": 
"Result Handler Factory", "group": "advanced", "label": "advanced", "required": 
false, "type": "object", "javaType": 
"org.apache.camel.component.xslt.ResultHandlerFactory", "deprecated": false, 
"autowired": false, "secret": false, "description": "Allows you to use a custom 
org.apache.camel.builder.xml.ResultHandlerFactory which is capable of using 
custom org.apache.camel.builder.xml.ResultHandler types." },
-    "transformerFactory": { "index": 10, "kind": "parameter", "displayName": 
"Transformer Factory", "group": "advanced", "label": "advanced", "required": 
false, "type": "object", "javaType": "javax.xml.transform.TransformerFactory", 
"deprecated": false, "autowired": false, "secret": false, "description": "To 
use a custom XSLT transformer factory" },
-    "transformerFactoryClass": { "index": 11, "kind": "parameter", 
"displayName": "Transformer Factory Class", "group": "advanced", "label": 
"advanced", "required": false, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "autowired": false, "secret": false, 
"description": "To use a custom XSLT transformer factory, specified as a FQN 
class name" },
-    "transformerFactoryConfigurationStrategy": { "index": 12, "kind": 
"parameter", "displayName": "Transformer Factory Configuration Strategy", 
"group": "advanced", "label": "advanced", "required": false, "type": "object", 
"javaType": 
"org.apache.camel.component.xslt.TransformerFactoryConfigurationStrategy", 
"deprecated": false, "autowired": false, "secret": false, "description": "A 
configuration strategy to apply on freshly created instances of 
TransformerFactory." },
-    "uriResolver": { "index": 13, "kind": "parameter", "displayName": "Uri 
Resolver", "group": "advanced", "label": "advanced", "required": false, "type": 
"object", "javaType": "javax.xml.transform.URIResolver", "deprecated": false, 
"autowired": false, "secret": false, "description": "To use a custom 
javax.xml.transform.URIResolver" },
-    "xsltMessageLogger": { "index": 14, "kind": "parameter", "displayName": 
"Xslt Message Logger", "group": "advanced", "label": "advanced", "required": 
false, "type": "object", "javaType": 
"org.apache.camel.component.xslt.XsltMessageLogger", "deprecated": false, 
"autowired": false, "secret": false, "description": "A consumer to messages 
generated during XSLT transformations." }
+    "allowTemplateFromHeader": { "index": 1, "kind": "parameter", 
"displayName": "Allow Template From Header", "group": "producer", "label": "", 
"required": false, "type": "boolean", "javaType": "boolean", "deprecated": 
false, "autowired": false, "secret": false, "defaultValue": false, 
"description": "Whether to allow to use resource template from header or not 
(default false). Enabling this allows to specify dynamic templates via message 
header. However this can be seen as a potential s [...]
+    "contentCache": { "index": 2, "kind": "parameter", "displayName": "Content 
Cache", "group": "producer", "label": "", "required": false, "type": "boolean", 
"javaType": "boolean", "deprecated": false, "autowired": false, "secret": 
false, "defaultValue": true, "description": "Cache for the resource content 
(the stylesheet file) when it is loaded. If set to false Camel will reload the 
stylesheet file on each message processing. This is good for development. A 
cached stylesheet can be for [...]
+    "deleteOutputFile": { "index": 3, "kind": "parameter", "displayName": 
"Delete Output File", "group": "producer", "label": "", "required": false, 
"type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": 
false, "secret": false, "defaultValue": false, "description": "If you have 
output=file then this option dictates whether or not the output file should be 
deleted when the Exchange is done processing. For example suppose the output 
file is a temporary file, then it ca [...]
+    "failOnNullBody": { "index": 4, "kind": "parameter", "displayName": "Fail 
On Null Body", "group": "producer", "label": "", "required": false, "type": 
"boolean", "javaType": "boolean", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": true, "description": "Whether or not to throw 
an exception if the input body is null." },
+    "output": { "index": 5, "kind": "parameter", "displayName": "Output", 
"group": "producer", "label": "", "required": false, "type": "object", 
"javaType": "org.apache.camel.component.xslt.XsltOutput", "enum": [ "string", 
"bytes", "DOM", "file" ], "deprecated": false, "autowired": false, "secret": 
false, "defaultValue": "string", "description": "Option to specify which output 
type to use. Possible values are: string, bytes, DOM, file. The first three 
options are all in memory based, whe [...]
+    "transformerCacheSize": { "index": 6, "kind": "parameter", "displayName": 
"Transformer Cache Size", "group": "producer", "label": "", "required": false, 
"type": "integer", "javaType": "int", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": 0, "description": "The number of 
javax.xml.transform.Transformer object that are cached for reuse to avoid calls 
to Template.newTransformer()." },
+    "lazyStartProducer": { "index": 7, "kind": "parameter", "displayName": 
"Lazy Start Producer", "group": "producer (advanced)", "label": 
"producer,advanced", "required": false, "type": "boolean", "javaType": 
"boolean", "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": false, "description": "Whether the producer should be started 
lazy (on the first message). By starting lazy you can use this to allow 
CamelContext and routes to startup in situations where a produc [...]
+    "entityResolver": { "index": 8, "kind": "parameter", "displayName": 
"Entity Resolver", "group": "advanced", "label": "advanced", "required": false, 
"type": "object", "javaType": "org.xml.sax.EntityResolver", "deprecated": 
false, "autowired": false, "secret": false, "description": "To use a custom 
org.xml.sax.EntityResolver with javax.xml.transform.sax.SAXSource." },
+    "errorListener": { "index": 9, "kind": "parameter", "displayName": "Error 
Listener", "group": "advanced", "label": "advanced", "required": false, "type": 
"object", "javaType": "javax.xml.transform.ErrorListener", "deprecated": false, 
"autowired": false, "secret": false, "description": "Allows to configure to use 
a custom javax.xml.transform.ErrorListener. Beware when doing this then the 
default error listener which captures any errors or fatal errors and store 
information on the Exch [...]
+    "resultHandlerFactory": { "index": 10, "kind": "parameter", "displayName": 
"Result Handler Factory", "group": "advanced", "label": "advanced", "required": 
false, "type": "object", "javaType": 
"org.apache.camel.component.xslt.ResultHandlerFactory", "deprecated": false, 
"autowired": false, "secret": false, "description": "Allows you to use a custom 
org.apache.camel.builder.xml.ResultHandlerFactory which is capable of using 
custom org.apache.camel.builder.xml.ResultHandler types." },
+    "transformerFactory": { "index": 11, "kind": "parameter", "displayName": 
"Transformer Factory", "group": "advanced", "label": "advanced", "required": 
false, "type": "object", "javaType": "javax.xml.transform.TransformerFactory", 
"deprecated": false, "autowired": false, "secret": false, "description": "To 
use a custom XSLT transformer factory" },
+    "transformerFactoryClass": { "index": 12, "kind": "parameter", 
"displayName": "Transformer Factory Class", "group": "advanced", "label": 
"advanced", "required": false, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "autowired": false, "secret": false, 
"description": "To use a custom XSLT transformer factory, specified as a FQN 
class name" },
+    "transformerFactoryConfigurationStrategy": { "index": 13, "kind": 
"parameter", "displayName": "Transformer Factory Configuration Strategy", 
"group": "advanced", "label": "advanced", "required": false, "type": "object", 
"javaType": 
"org.apache.camel.component.xslt.TransformerFactoryConfigurationStrategy", 
"deprecated": false, "autowired": false, "secret": false, "description": "A 
configuration strategy to apply on freshly created instances of 
TransformerFactory." },
+    "uriResolver": { "index": 14, "kind": "parameter", "displayName": "Uri 
Resolver", "group": "advanced", "label": "advanced", "required": false, "type": 
"object", "javaType": "javax.xml.transform.URIResolver", "deprecated": false, 
"autowired": false, "secret": false, "description": "To use a custom 
javax.xml.transform.URIResolver" },
+    "xsltMessageLogger": { "index": 15, "kind": "parameter", "displayName": 
"Xslt Message Logger", "group": "advanced", "label": "advanced", "required": 
false, "type": "object", "javaType": 
"org.apache.camel.component.xslt.XsltMessageLogger", "deprecated": false, 
"autowired": false, "secret": false, "description": "A consumer to messages 
generated during XSLT transformations." }
   }
 }
diff --git 
a/components/camel-xslt-saxon/src/generated/java/org/apache/camel/component/xslt/saxon/XsltSaxonEndpointUriFactory.java
 
b/components/camel-xslt-saxon/src/generated/java/org/apache/camel/component/xslt/saxon/XsltSaxonEndpointUriFactory.java
index fdd68788457..4fd25b41462 100644
--- 
a/components/camel-xslt-saxon/src/generated/java/org/apache/camel/component/xslt/saxon/XsltSaxonEndpointUriFactory.java
+++ 
b/components/camel-xslt-saxon/src/generated/java/org/apache/camel/component/xslt/saxon/XsltSaxonEndpointUriFactory.java
@@ -21,8 +21,9 @@ public class XsltSaxonEndpointUriFactory extends 
org.apache.camel.support.compon
     private static final Set<String> SECRET_PROPERTY_NAMES;
     private static final Set<String> MULTI_VALUE_PREFIXES;
     static {
-        Set<String> props = new HashSet<>(19);
+        Set<String> props = new HashSet<>(20);
         props.add("allowStAX");
+        props.add("allowTemplateFromHeader");
         props.add("contentCache");
         props.add("deleteOutputFile");
         props.add("entityResolver");
diff --git 
a/components/camel-xslt-saxon/src/generated/resources/org/apache/camel/component/xslt/saxon/xslt-saxon.json
 
b/components/camel-xslt-saxon/src/generated/resources/org/apache/camel/component/xslt/saxon/xslt-saxon.json
index 9d5e585c3b2..2fd30414965 100644
--- 
a/components/camel-xslt-saxon/src/generated/resources/org/apache/camel/component/xslt/saxon/xslt-saxon.json
+++ 
b/components/camel-xslt-saxon/src/generated/resources/org/apache/camel/component/xslt/saxon/xslt-saxon.json
@@ -22,40 +22,43 @@
     "lenientProperties": false
   },
   "componentProperties": {
-    "contentCache": { "index": 0, "kind": "property", "displayName": "Content 
Cache", "group": "producer", "label": "", "required": false, "type": "boolean", 
"javaType": "boolean", "deprecated": false, "autowired": false, "secret": 
false, "defaultValue": true, "description": "Cache for the resource content 
(the stylesheet file) when it is loaded. If set to false Camel will reload the 
stylesheet file on each message processing. This is good for development. A 
cached stylesheet can be forc [...]
-    "lazyStartProducer": { "index": 1, "kind": "property", "displayName": 
"Lazy Start Producer", "group": "producer", "label": "producer", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": false, "description": 
"Whether the producer should be started lazy (on the first message). By 
starting lazy you can use this to allow CamelContext and routes to startup in 
situations where a producer may otherwise fail [...]
-    "autowiredEnabled": { "index": 2, "kind": "property", "displayName": 
"Autowired Enabled", "group": "advanced", "label": "advanced", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": true, "description": 
"Whether autowiring is enabled. This is used for automatic autowiring options 
(the option must be marked as autowired) by looking up in the registry to find 
if there is a single instance of matching t [...]
-    "saxonConfiguration": { "index": 3, "kind": "property", "displayName": 
"Saxon Configuration", "group": "advanced", "label": "advanced", "required": 
false, "type": "object", "javaType": "net.sf.saxon.Configuration", 
"deprecated": false, "autowired": false, "secret": false, "description": "To 
use a custom Saxon configuration" },
-    "saxonConfigurationProperties": { "index": 4, "kind": "property", 
"displayName": "Saxon Configuration Properties", "group": "advanced", "label": 
"advanced", "required": false, "type": "object", "javaType": 
"java.util.Map<java.lang.String, java.lang.Object>", "deprecated": false, 
"autowired": false, "secret": false, "description": "To set custom Saxon 
configuration properties" },
-    "saxonExtensionFunctions": { "index": 5, "kind": "property", 
"displayName": "Saxon Extension Functions", "group": "advanced", "label": 
"advanced", "required": false, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "autowired": false, "secret": false, 
"description": "Allows you to use a custom 
net.sf.saxon.lib.ExtensionFunctionDefinition. You would need to add camel-saxon 
to the classpath. The function is looked up in the registry, where you can use 
commas to se [...]
-    "secureProcessing": { "index": 6, "kind": "property", "displayName": 
"Secure Processing", "group": "advanced", "label": "advanced", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": true, "description": 
"Feature for XML secure processing (see javax.xml.XMLConstants). This is 
enabled by default. However, when using Saxon Professional you may need to turn 
this off to allow Saxon to be able to use Java  [...]
-    "transformerFactoryClass": { "index": 7, "kind": "property", 
"displayName": "Transformer Factory Class", "group": "advanced", "label": 
"advanced", "required": false, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "autowired": false, "secret": false, 
"description": "To use a custom XSLT transformer factory, specified as a FQN 
class name" },
-    "transformerFactoryConfigurationStrategy": { "index": 8, "kind": 
"property", "displayName": "Transformer Factory Configuration Strategy", 
"group": "advanced", "label": "advanced", "required": false, "type": "object", 
"javaType": 
"org.apache.camel.component.xslt.TransformerFactoryConfigurationStrategy", 
"deprecated": false, "autowired": false, "secret": false, "description": "A 
configuration strategy to apply on freshly created instances of 
TransformerFactory." },
-    "uriResolver": { "index": 9, "kind": "property", "displayName": "Uri 
Resolver", "group": "advanced", "label": "advanced", "required": false, "type": 
"object", "javaType": "javax.xml.transform.URIResolver", "deprecated": false, 
"autowired": false, "secret": false, "description": "To use a custom 
UriResolver. Should not be used together with the option 'uriResolverFactory'." 
},
-    "uriResolverFactory": { "index": 10, "kind": "property", "displayName": 
"Uri Resolver Factory", "group": "advanced", "label": "advanced", "required": 
false, "type": "object", "javaType": 
"org.apache.camel.component.xslt.XsltUriResolverFactory", "deprecated": false, 
"autowired": false, "secret": false, "description": "To use a custom 
UriResolver which depends on a dynamic endpoint resource URI. Should not be 
used together with the option 'uriResolver'." }
+    "allowTemplateFromHeader": { "index": 0, "kind": "property", 
"displayName": "Allow Template From Header", "group": "producer", "label": "", 
"required": false, "type": "boolean", "javaType": "boolean", "deprecated": 
false, "autowired": false, "secret": false, "defaultValue": false, 
"description": "Whether to allow to use resource template from header or not 
(default false). Enabling this allows to specify dynamic templates via message 
header. However this can be seen as a potential se [...]
+    "contentCache": { "index": 1, "kind": "property", "displayName": "Content 
Cache", "group": "producer", "label": "", "required": false, "type": "boolean", 
"javaType": "boolean", "deprecated": false, "autowired": false, "secret": 
false, "defaultValue": true, "description": "Cache for the resource content 
(the stylesheet file) when it is loaded. If set to false Camel will reload the 
stylesheet file on each message processing. This is good for development. A 
cached stylesheet can be forc [...]
+    "lazyStartProducer": { "index": 2, "kind": "property", "displayName": 
"Lazy Start Producer", "group": "producer", "label": "producer", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": false, "description": 
"Whether the producer should be started lazy (on the first message). By 
starting lazy you can use this to allow CamelContext and routes to startup in 
situations where a producer may otherwise fail [...]
+    "autowiredEnabled": { "index": 3, "kind": "property", "displayName": 
"Autowired Enabled", "group": "advanced", "label": "advanced", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": true, "description": 
"Whether autowiring is enabled. This is used for automatic autowiring options 
(the option must be marked as autowired) by looking up in the registry to find 
if there is a single instance of matching t [...]
+    "saxonConfiguration": { "index": 4, "kind": "property", "displayName": 
"Saxon Configuration", "group": "advanced", "label": "advanced", "required": 
false, "type": "object", "javaType": "net.sf.saxon.Configuration", 
"deprecated": false, "autowired": false, "secret": false, "description": "To 
use a custom Saxon configuration" },
+    "saxonConfigurationProperties": { "index": 5, "kind": "property", 
"displayName": "Saxon Configuration Properties", "group": "advanced", "label": 
"advanced", "required": false, "type": "object", "javaType": 
"java.util.Map<java.lang.String, java.lang.Object>", "deprecated": false, 
"autowired": false, "secret": false, "description": "To set custom Saxon 
configuration properties" },
+    "saxonExtensionFunctions": { "index": 6, "kind": "property", 
"displayName": "Saxon Extension Functions", "group": "advanced", "label": 
"advanced", "required": false, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "autowired": false, "secret": false, 
"description": "Allows you to use a custom 
net.sf.saxon.lib.ExtensionFunctionDefinition. You would need to add camel-saxon 
to the classpath. The function is looked up in the registry, where you can use 
commas to se [...]
+    "secureProcessing": { "index": 7, "kind": "property", "displayName": 
"Secure Processing", "group": "advanced", "label": "advanced", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": true, "description": 
"Feature for XML secure processing (see javax.xml.XMLConstants). This is 
enabled by default. However, when using Saxon Professional you may need to turn 
this off to allow Saxon to be able to use Java  [...]
+    "transformerFactoryClass": { "index": 8, "kind": "property", 
"displayName": "Transformer Factory Class", "group": "advanced", "label": 
"advanced", "required": false, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "autowired": false, "secret": false, 
"description": "To use a custom XSLT transformer factory, specified as a FQN 
class name" },
+    "transformerFactoryConfigurationStrategy": { "index": 9, "kind": 
"property", "displayName": "Transformer Factory Configuration Strategy", 
"group": "advanced", "label": "advanced", "required": false, "type": "object", 
"javaType": 
"org.apache.camel.component.xslt.TransformerFactoryConfigurationStrategy", 
"deprecated": false, "autowired": false, "secret": false, "description": "A 
configuration strategy to apply on freshly created instances of 
TransformerFactory." },
+    "uriResolver": { "index": 10, "kind": "property", "displayName": "Uri 
Resolver", "group": "advanced", "label": "advanced", "required": false, "type": 
"object", "javaType": "javax.xml.transform.URIResolver", "deprecated": false, 
"autowired": false, "secret": false, "description": "To use a custom 
UriResolver. Should not be used together with the option 'uriResolverFactory'." 
},
+    "uriResolverFactory": { "index": 11, "kind": "property", "displayName": 
"Uri Resolver Factory", "group": "advanced", "label": "advanced", "required": 
false, "type": "object", "javaType": 
"org.apache.camel.component.xslt.XsltUriResolverFactory", "deprecated": false, 
"autowired": false, "secret": false, "description": "To use a custom 
UriResolver which depends on a dynamic endpoint resource URI. Should not be 
used together with the option 'uriResolver'." }
   },
   "headers": {
-    "CamelXsltFileName": { "index": 0, "kind": "header", "displayName": "", 
"group": "producer", "label": "", "required": false, "javaType": "String", 
"deprecated": false, "deprecationNote": "", "autowired": false, "secret": 
false, "description": "The XSLT file name", "constantName": 
"org.apache.camel.component.xslt.XsltConstants#XSLT_FILE_NAME" }
+    "CamelXsltResourceUri": { "index": 0, "kind": "header", "displayName": "", 
"group": "producer", "label": "", "required": false, "javaType": "String", 
"deprecated": false, "deprecationNote": "", "autowired": false, "secret": 
false, "description": "A URI for the template resource to use instead of the 
endpoint configured.", "constantName": 
"org.apache.camel.component.xslt.XsltConstants#XSLT_RESOURCE_URI" },
+    "CamelXsltFileName": { "index": 1, "kind": "header", "displayName": "", 
"group": "producer", "label": "", "required": false, "javaType": "String", 
"deprecated": false, "deprecationNote": "", "autowired": false, "secret": 
false, "description": "The XSLT file name", "constantName": 
"org.apache.camel.component.xslt.XsltConstants#XSLT_FILE_NAME" }
   },
   "properties": {
     "resourceUri": { "index": 0, "kind": "path", "displayName": "Resource 
Uri", "group": "producer", "label": "", "required": true, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", 
"autowired": false, "secret": false, "description": "Path to the template. The 
following is supported by the default URIResolver. You can prefix with: 
classpath, file, http, ref, or bean. classpath, file and http loads the 
resource using these protocols (classpath i [...]
     "allowStAX": { "index": 1, "kind": "parameter", "displayName": "Allow 
StAX", "group": "producer", "label": "", "required": false, "type": "boolean", 
"javaType": "boolean", "deprecated": false, "autowired": false, "secret": 
false, "defaultValue": true, "description": "Whether to allow using StAX as the 
javax.xml.transform.Source. You can enable this if the XSLT library supports 
StAX such as the Saxon library (camel-saxon). The Xalan library (default in 
JVM) does not support StAXSource." },
-    "contentCache": { "index": 2, "kind": "parameter", "displayName": "Content 
Cache", "group": "producer", "label": "", "required": false, "type": "boolean", 
"javaType": "boolean", "deprecated": false, "autowired": false, "secret": 
false, "defaultValue": true, "description": "Cache for the resource content 
(the stylesheet file) when it is loaded. If set to false Camel will reload the 
stylesheet file on each message processing. This is good for development. A 
cached stylesheet can be for [...]
-    "deleteOutputFile": { "index": 3, "kind": "parameter", "displayName": 
"Delete Output File", "group": "producer", "label": "", "required": false, 
"type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": 
false, "secret": false, "defaultValue": false, "description": "If you have 
output=file then this option dictates whether or not the output file should be 
deleted when the Exchange is done processing. For example suppose the output 
file is a temporary file, then it ca [...]
-    "failOnNullBody": { "index": 4, "kind": "parameter", "displayName": "Fail 
On Null Body", "group": "producer", "label": "", "required": false, "type": 
"boolean", "javaType": "boolean", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": true, "description": "Whether or not to throw 
an exception if the input body is null." },
-    "output": { "index": 5, "kind": "parameter", "displayName": "Output", 
"group": "producer", "label": "", "required": false, "type": "object", 
"javaType": "org.apache.camel.component.xslt.XsltOutput", "enum": [ "string", 
"bytes", "DOM", "file" ], "deprecated": false, "autowired": false, "secret": 
false, "defaultValue": "string", "description": "Option to specify which output 
type to use. Possible values are: string, bytes, DOM, file. The first three 
options are all in memory based, whe [...]
-    "transformerCacheSize": { "index": 6, "kind": "parameter", "displayName": 
"Transformer Cache Size", "group": "producer", "label": "", "required": false, 
"type": "integer", "javaType": "int", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": 0, "description": "The number of 
javax.xml.transform.Transformer object that are cached for reuse to avoid calls 
to Template.newTransformer()." },
-    "lazyStartProducer": { "index": 7, "kind": "parameter", "displayName": 
"Lazy Start Producer", "group": "producer (advanced)", "label": 
"producer,advanced", "required": false, "type": "boolean", "javaType": 
"boolean", "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": false, "description": "Whether the producer should be started 
lazy (on the first message). By starting lazy you can use this to allow 
CamelContext and routes to startup in situations where a produc [...]
-    "entityResolver": { "index": 8, "kind": "parameter", "displayName": 
"Entity Resolver", "group": "advanced", "label": "advanced", "required": false, 
"type": "object", "javaType": "org.xml.sax.EntityResolver", "deprecated": 
false, "autowired": false, "secret": false, "description": "To use a custom 
org.xml.sax.EntityResolver with javax.xml.transform.sax.SAXSource." },
-    "errorListener": { "index": 9, "kind": "parameter", "displayName": "Error 
Listener", "group": "advanced", "label": "advanced", "required": false, "type": 
"object", "javaType": "javax.xml.transform.ErrorListener", "deprecated": false, 
"autowired": false, "secret": false, "description": "Allows to configure to use 
a custom javax.xml.transform.ErrorListener. Beware when doing this then the 
default error listener which captures any errors or fatal errors and store 
information on the Exch [...]
-    "resultHandlerFactory": { "index": 10, "kind": "parameter", "displayName": 
"Result Handler Factory", "group": "advanced", "label": "advanced", "required": 
false, "type": "object", "javaType": 
"org.apache.camel.component.xslt.ResultHandlerFactory", "deprecated": false, 
"autowired": false, "secret": false, "description": "Allows you to use a custom 
org.apache.camel.builder.xml.ResultHandlerFactory which is capable of using 
custom org.apache.camel.builder.xml.ResultHandler types." },
-    "saxonConfiguration": { "index": 11, "kind": "parameter", "displayName": 
"Saxon Configuration", "group": "advanced", "label": "advanced", "required": 
false, "type": "object", "javaType": "net.sf.saxon.Configuration", 
"deprecated": false, "autowired": false, "secret": false, "description": "To 
use a custom Saxon configuration" },
-    "saxonExtensionFunctions": { "index": 12, "kind": "parameter", 
"displayName": "Saxon Extension Functions", "group": "advanced", "label": 
"advanced", "required": false, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "autowired": false, "secret": false, 
"description": "Allows you to use a custom 
net.sf.saxon.lib.ExtensionFunctionDefinition. You would need to add camel-saxon 
to the classpath. The function is looked up in the registry, where you can 
comma to separ [...]
-    "secureProcessing": { "index": 13, "kind": "parameter", "displayName": 
"Secure Processing", "group": "advanced", "label": "advanced", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": true, "description": 
"Feature for XML secure processing (see javax.xml.XMLConstants). This is 
enabled by default. However, when using Saxon Professional you may need to turn 
this off to allow Saxon to be able to use Jav [...]
-    "transformerFactory": { "index": 14, "kind": "parameter", "displayName": 
"Transformer Factory", "group": "advanced", "label": "advanced", "required": 
false, "type": "object", "javaType": "javax.xml.transform.TransformerFactory", 
"deprecated": false, "autowired": false, "secret": false, "description": "To 
use a custom XSLT transformer factory" },
-    "transformerFactoryClass": { "index": 15, "kind": "parameter", 
"displayName": "Transformer Factory Class", "group": "advanced", "label": 
"advanced", "required": false, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "autowired": false, "secret": false, 
"description": "To use a custom XSLT transformer factory, specified as a FQN 
class name" },
-    "transformerFactoryConfigurationStrategy": { "index": 16, "kind": 
"parameter", "displayName": "Transformer Factory Configuration Strategy", 
"group": "advanced", "label": "advanced", "required": false, "type": "object", 
"javaType": 
"org.apache.camel.component.xslt.TransformerFactoryConfigurationStrategy", 
"deprecated": false, "autowired": false, "secret": false, "description": "A 
configuration strategy to apply on freshly created instances of 
TransformerFactory." },
-    "uriResolver": { "index": 17, "kind": "parameter", "displayName": "Uri 
Resolver", "group": "advanced", "label": "advanced", "required": false, "type": 
"object", "javaType": "javax.xml.transform.URIResolver", "deprecated": false, 
"autowired": false, "secret": false, "description": "To use a custom 
javax.xml.transform.URIResolver" },
-    "xsltMessageLogger": { "index": 18, "kind": "parameter", "displayName": 
"Xslt Message Logger", "group": "advanced", "label": "advanced", "required": 
false, "type": "object", "javaType": 
"org.apache.camel.component.xslt.XsltMessageLogger", "deprecated": false, 
"autowired": false, "secret": false, "description": "A consumer to messages 
generated during XSLT transformations." }
+    "allowTemplateFromHeader": { "index": 2, "kind": "parameter", 
"displayName": "Allow Template From Header", "group": "producer", "label": "", 
"required": false, "type": "boolean", "javaType": "boolean", "deprecated": 
false, "autowired": false, "secret": false, "defaultValue": false, 
"description": "Whether to allow to use resource template from header or not 
(default false). Enabling this allows to specify dynamic templates via message 
header. However this can be seen as a potential s [...]
+    "contentCache": { "index": 3, "kind": "parameter", "displayName": "Content 
Cache", "group": "producer", "label": "", "required": false, "type": "boolean", 
"javaType": "boolean", "deprecated": false, "autowired": false, "secret": 
false, "defaultValue": true, "description": "Cache for the resource content 
(the stylesheet file) when it is loaded. If set to false Camel will reload the 
stylesheet file on each message processing. This is good for development. A 
cached stylesheet can be for [...]
+    "deleteOutputFile": { "index": 4, "kind": "parameter", "displayName": 
"Delete Output File", "group": "producer", "label": "", "required": false, 
"type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": 
false, "secret": false, "defaultValue": false, "description": "If you have 
output=file then this option dictates whether or not the output file should be 
deleted when the Exchange is done processing. For example suppose the output 
file is a temporary file, then it ca [...]
+    "failOnNullBody": { "index": 5, "kind": "parameter", "displayName": "Fail 
On Null Body", "group": "producer", "label": "", "required": false, "type": 
"boolean", "javaType": "boolean", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": true, "description": "Whether or not to throw 
an exception if the input body is null." },
+    "output": { "index": 6, "kind": "parameter", "displayName": "Output", 
"group": "producer", "label": "", "required": false, "type": "object", 
"javaType": "org.apache.camel.component.xslt.XsltOutput", "enum": [ "string", 
"bytes", "DOM", "file" ], "deprecated": false, "autowired": false, "secret": 
false, "defaultValue": "string", "description": "Option to specify which output 
type to use. Possible values are: string, bytes, DOM, file. The first three 
options are all in memory based, whe [...]
+    "transformerCacheSize": { "index": 7, "kind": "parameter", "displayName": 
"Transformer Cache Size", "group": "producer", "label": "", "required": false, 
"type": "integer", "javaType": "int", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": 0, "description": "The number of 
javax.xml.transform.Transformer object that are cached for reuse to avoid calls 
to Template.newTransformer()." },
+    "lazyStartProducer": { "index": 8, "kind": "parameter", "displayName": 
"Lazy Start Producer", "group": "producer (advanced)", "label": 
"producer,advanced", "required": false, "type": "boolean", "javaType": 
"boolean", "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": false, "description": "Whether the producer should be started 
lazy (on the first message). By starting lazy you can use this to allow 
CamelContext and routes to startup in situations where a produc [...]
+    "entityResolver": { "index": 9, "kind": "parameter", "displayName": 
"Entity Resolver", "group": "advanced", "label": "advanced", "required": false, 
"type": "object", "javaType": "org.xml.sax.EntityResolver", "deprecated": 
false, "autowired": false, "secret": false, "description": "To use a custom 
org.xml.sax.EntityResolver with javax.xml.transform.sax.SAXSource." },
+    "errorListener": { "index": 10, "kind": "parameter", "displayName": "Error 
Listener", "group": "advanced", "label": "advanced", "required": false, "type": 
"object", "javaType": "javax.xml.transform.ErrorListener", "deprecated": false, 
"autowired": false, "secret": false, "description": "Allows to configure to use 
a custom javax.xml.transform.ErrorListener. Beware when doing this then the 
default error listener which captures any errors or fatal errors and store 
information on the Exc [...]
+    "resultHandlerFactory": { "index": 11, "kind": "parameter", "displayName": 
"Result Handler Factory", "group": "advanced", "label": "advanced", "required": 
false, "type": "object", "javaType": 
"org.apache.camel.component.xslt.ResultHandlerFactory", "deprecated": false, 
"autowired": false, "secret": false, "description": "Allows you to use a custom 
org.apache.camel.builder.xml.ResultHandlerFactory which is capable of using 
custom org.apache.camel.builder.xml.ResultHandler types." },
+    "saxonConfiguration": { "index": 12, "kind": "parameter", "displayName": 
"Saxon Configuration", "group": "advanced", "label": "advanced", "required": 
false, "type": "object", "javaType": "net.sf.saxon.Configuration", 
"deprecated": false, "autowired": false, "secret": false, "description": "To 
use a custom Saxon configuration" },
+    "saxonExtensionFunctions": { "index": 13, "kind": "parameter", 
"displayName": "Saxon Extension Functions", "group": "advanced", "label": 
"advanced", "required": false, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "autowired": false, "secret": false, 
"description": "Allows you to use a custom 
net.sf.saxon.lib.ExtensionFunctionDefinition. You would need to add camel-saxon 
to the classpath. The function is looked up in the registry, where you can 
comma to separ [...]
+    "secureProcessing": { "index": 14, "kind": "parameter", "displayName": 
"Secure Processing", "group": "advanced", "label": "advanced", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": true, "description": 
"Feature for XML secure processing (see javax.xml.XMLConstants). This is 
enabled by default. However, when using Saxon Professional you may need to turn 
this off to allow Saxon to be able to use Jav [...]
+    "transformerFactory": { "index": 15, "kind": "parameter", "displayName": 
"Transformer Factory", "group": "advanced", "label": "advanced", "required": 
false, "type": "object", "javaType": "javax.xml.transform.TransformerFactory", 
"deprecated": false, "autowired": false, "secret": false, "description": "To 
use a custom XSLT transformer factory" },
+    "transformerFactoryClass": { "index": 16, "kind": "parameter", 
"displayName": "Transformer Factory Class", "group": "advanced", "label": 
"advanced", "required": false, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "autowired": false, "secret": false, 
"description": "To use a custom XSLT transformer factory, specified as a FQN 
class name" },
+    "transformerFactoryConfigurationStrategy": { "index": 17, "kind": 
"parameter", "displayName": "Transformer Factory Configuration Strategy", 
"group": "advanced", "label": "advanced", "required": false, "type": "object", 
"javaType": 
"org.apache.camel.component.xslt.TransformerFactoryConfigurationStrategy", 
"deprecated": false, "autowired": false, "secret": false, "description": "A 
configuration strategy to apply on freshly created instances of 
TransformerFactory." },
+    "uriResolver": { "index": 18, "kind": "parameter", "displayName": "Uri 
Resolver", "group": "advanced", "label": "advanced", "required": false, "type": 
"object", "javaType": "javax.xml.transform.URIResolver", "deprecated": false, 
"autowired": false, "secret": false, "description": "To use a custom 
javax.xml.transform.URIResolver" },
+    "xsltMessageLogger": { "index": 19, "kind": "parameter", "displayName": 
"Xslt Message Logger", "group": "advanced", "label": "advanced", "required": 
false, "type": "object", "javaType": 
"org.apache.camel.component.xslt.XsltMessageLogger", "deprecated": false, 
"autowired": false, "secret": false, "description": "A consumer to messages 
generated during XSLT transformations." }
   }
 }
diff --git 
a/components/camel-xslt/src/generated/java/org/apache/camel/component/xslt/XsltComponentConfigurer.java
 
b/components/camel-xslt/src/generated/java/org/apache/camel/component/xslt/XsltComponentConfigurer.java
index 51179d3a0ed..4f026a39ac8 100644
--- 
a/components/camel-xslt/src/generated/java/org/apache/camel/component/xslt/XsltComponentConfigurer.java
+++ 
b/components/camel-xslt/src/generated/java/org/apache/camel/component/xslt/XsltComponentConfigurer.java
@@ -21,6 +21,8 @@ public class XsltComponentConfigurer extends 
PropertyConfigurerSupport implement
     public boolean configure(CamelContext camelContext, Object obj, String 
name, Object value, boolean ignoreCase) {
         XsltComponent target = (XsltComponent) obj;
         switch (ignoreCase ? name.toLowerCase() : name) {
+        case "allowtemplatefromheader":
+        case "allowTemplateFromHeader": 
target.setAllowTemplateFromHeader(property(camelContext, boolean.class, 
value)); return true;
         case "autowiredenabled":
         case "autowiredEnabled": 
target.setAutowiredEnabled(property(camelContext, boolean.class, value)); 
return true;
         case "contentcache":
@@ -42,6 +44,8 @@ public class XsltComponentConfigurer extends 
PropertyConfigurerSupport implement
     @Override
     public Class<?> getOptionType(String name, boolean ignoreCase) {
         switch (ignoreCase ? name.toLowerCase() : name) {
+        case "allowtemplatefromheader":
+        case "allowTemplateFromHeader": return boolean.class;
         case "autowiredenabled":
         case "autowiredEnabled": return boolean.class;
         case "contentcache":
@@ -64,6 +68,8 @@ public class XsltComponentConfigurer extends 
PropertyConfigurerSupport implement
     public Object getOptionValue(Object obj, String name, boolean ignoreCase) {
         XsltComponent target = (XsltComponent) obj;
         switch (ignoreCase ? name.toLowerCase() : name) {
+        case "allowtemplatefromheader":
+        case "allowTemplateFromHeader": return 
target.isAllowTemplateFromHeader();
         case "autowiredenabled":
         case "autowiredEnabled": return target.isAutowiredEnabled();
         case "contentcache":
diff --git 
a/components/camel-xslt/src/generated/java/org/apache/camel/component/xslt/XsltEndpointConfigurer.java
 
b/components/camel-xslt/src/generated/java/org/apache/camel/component/xslt/XsltEndpointConfigurer.java
index 0b868858f3e..6fcc4177992 100644
--- 
a/components/camel-xslt/src/generated/java/org/apache/camel/component/xslt/XsltEndpointConfigurer.java
+++ 
b/components/camel-xslt/src/generated/java/org/apache/camel/component/xslt/XsltEndpointConfigurer.java
@@ -21,6 +21,8 @@ public class XsltEndpointConfigurer extends 
PropertyConfigurerSupport implements
     public boolean configure(CamelContext camelContext, Object obj, String 
name, Object value, boolean ignoreCase) {
         XsltEndpoint target = (XsltEndpoint) obj;
         switch (ignoreCase ? name.toLowerCase() : name) {
+        case "allowtemplatefromheader":
+        case "allowTemplateFromHeader": 
target.setAllowTemplateFromHeader(property(camelContext, boolean.class, 
value)); return true;
         case "contentcache":
         case "contentCache": target.setContentCache(property(camelContext, 
boolean.class, value)); return true;
         case "deleteoutputfile":
@@ -55,6 +57,8 @@ public class XsltEndpointConfigurer extends 
PropertyConfigurerSupport implements
     @Override
     public Class<?> getOptionType(String name, boolean ignoreCase) {
         switch (ignoreCase ? name.toLowerCase() : name) {
+        case "allowtemplatefromheader":
+        case "allowTemplateFromHeader": return boolean.class;
         case "contentcache":
         case "contentCache": return boolean.class;
         case "deleteoutputfile":
@@ -90,6 +94,8 @@ public class XsltEndpointConfigurer extends 
PropertyConfigurerSupport implements
     public Object getOptionValue(Object obj, String name, boolean ignoreCase) {
         XsltEndpoint target = (XsltEndpoint) obj;
         switch (ignoreCase ? name.toLowerCase() : name) {
+        case "allowtemplatefromheader":
+        case "allowTemplateFromHeader": return 
target.isAllowTemplateFromHeader();
         case "contentcache":
         case "contentCache": return target.isContentCache();
         case "deleteoutputfile":
diff --git 
a/components/camel-xslt/src/generated/java/org/apache/camel/component/xslt/XsltEndpointUriFactory.java
 
b/components/camel-xslt/src/generated/java/org/apache/camel/component/xslt/XsltEndpointUriFactory.java
index 3e8506e877b..8ca1e8801cc 100644
--- 
a/components/camel-xslt/src/generated/java/org/apache/camel/component/xslt/XsltEndpointUriFactory.java
+++ 
b/components/camel-xslt/src/generated/java/org/apache/camel/component/xslt/XsltEndpointUriFactory.java
@@ -21,7 +21,8 @@ public class XsltEndpointUriFactory extends 
org.apache.camel.support.component.E
     private static final Set<String> SECRET_PROPERTY_NAMES;
     private static final Set<String> MULTI_VALUE_PREFIXES;
     static {
-        Set<String> props = new HashSet<>(15);
+        Set<String> props = new HashSet<>(16);
+        props.add("allowTemplateFromHeader");
         props.add("contentCache");
         props.add("deleteOutputFile");
         props.add("entityResolver");
diff --git 
a/components/camel-xslt/src/generated/resources/org/apache/camel/component/xslt/xslt.json
 
b/components/camel-xslt/src/generated/resources/org/apache/camel/component/xslt/xslt.json
index 16626455d4a..0481baed38b 100644
--- 
a/components/camel-xslt/src/generated/resources/org/apache/camel/component/xslt/xslt.json
+++ 
b/components/camel-xslt/src/generated/resources/org/apache/camel/component/xslt/xslt.json
@@ -22,32 +22,35 @@
     "lenientProperties": false
   },
   "componentProperties": {
-    "contentCache": { "index": 0, "kind": "property", "displayName": "Content 
Cache", "group": "producer", "label": "", "required": false, "type": "boolean", 
"javaType": "boolean", "deprecated": false, "autowired": false, "secret": 
false, "defaultValue": true, "description": "Cache for the resource content 
(the stylesheet file) when it is loaded. If set to false Camel will reload the 
stylesheet file on each message processing. This is good for development. A 
cached stylesheet can be forc [...]
-    "lazyStartProducer": { "index": 1, "kind": "property", "displayName": 
"Lazy Start Producer", "group": "producer", "label": "producer", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": false, "description": 
"Whether the producer should be started lazy (on the first message). By 
starting lazy you can use this to allow CamelContext and routes to startup in 
situations where a producer may otherwise fail [...]
-    "autowiredEnabled": { "index": 2, "kind": "property", "displayName": 
"Autowired Enabled", "group": "advanced", "label": "advanced", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": true, "description": 
"Whether autowiring is enabled. This is used for automatic autowiring options 
(the option must be marked as autowired) by looking up in the registry to find 
if there is a single instance of matching t [...]
-    "transformerFactoryClass": { "index": 3, "kind": "property", 
"displayName": "Transformer Factory Class", "group": "advanced", "label": 
"advanced", "required": false, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "autowired": false, "secret": false, 
"description": "To use a custom XSLT transformer factory, specified as a FQN 
class name" },
-    "transformerFactoryConfigurationStrategy": { "index": 4, "kind": 
"property", "displayName": "Transformer Factory Configuration Strategy", 
"group": "advanced", "label": "advanced", "required": false, "type": "object", 
"javaType": 
"org.apache.camel.component.xslt.TransformerFactoryConfigurationStrategy", 
"deprecated": false, "autowired": false, "secret": false, "description": "A 
configuration strategy to apply on freshly created instances of 
TransformerFactory." },
-    "uriResolver": { "index": 5, "kind": "property", "displayName": "Uri 
Resolver", "group": "advanced", "label": "advanced", "required": false, "type": 
"object", "javaType": "javax.xml.transform.URIResolver", "deprecated": false, 
"autowired": false, "secret": false, "description": "To use a custom 
UriResolver. Should not be used together with the option 'uriResolverFactory'." 
},
-    "uriResolverFactory": { "index": 6, "kind": "property", "displayName": 
"Uri Resolver Factory", "group": "advanced", "label": "advanced", "required": 
false, "type": "object", "javaType": 
"org.apache.camel.component.xslt.XsltUriResolverFactory", "deprecated": false, 
"autowired": false, "secret": false, "description": "To use a custom 
UriResolver which depends on a dynamic endpoint resource URI. Should not be 
used together with the option 'uriResolver'." }
+    "allowTemplateFromHeader": { "index": 0, "kind": "property", 
"displayName": "Allow Template From Header", "group": "producer", "label": "", 
"required": false, "type": "boolean", "javaType": "boolean", "deprecated": 
false, "autowired": false, "secret": false, "defaultValue": false, 
"description": "Whether to allow to use resource template from header or not 
(default false). Enabling this allows to specify dynamic templates via message 
header. However this can be seen as a potential se [...]
+    "contentCache": { "index": 1, "kind": "property", "displayName": "Content 
Cache", "group": "producer", "label": "", "required": false, "type": "boolean", 
"javaType": "boolean", "deprecated": false, "autowired": false, "secret": 
false, "defaultValue": true, "description": "Cache for the resource content 
(the stylesheet file) when it is loaded. If set to false Camel will reload the 
stylesheet file on each message processing. This is good for development. A 
cached stylesheet can be forc [...]
+    "lazyStartProducer": { "index": 2, "kind": "property", "displayName": 
"Lazy Start Producer", "group": "producer", "label": "producer", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": false, "description": 
"Whether the producer should be started lazy (on the first message). By 
starting lazy you can use this to allow CamelContext and routes to startup in 
situations where a producer may otherwise fail [...]
+    "autowiredEnabled": { "index": 3, "kind": "property", "displayName": 
"Autowired Enabled", "group": "advanced", "label": "advanced", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": true, "description": 
"Whether autowiring is enabled. This is used for automatic autowiring options 
(the option must be marked as autowired) by looking up in the registry to find 
if there is a single instance of matching t [...]
+    "transformerFactoryClass": { "index": 4, "kind": "property", 
"displayName": "Transformer Factory Class", "group": "advanced", "label": 
"advanced", "required": false, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "autowired": false, "secret": false, 
"description": "To use a custom XSLT transformer factory, specified as a FQN 
class name" },
+    "transformerFactoryConfigurationStrategy": { "index": 5, "kind": 
"property", "displayName": "Transformer Factory Configuration Strategy", 
"group": "advanced", "label": "advanced", "required": false, "type": "object", 
"javaType": 
"org.apache.camel.component.xslt.TransformerFactoryConfigurationStrategy", 
"deprecated": false, "autowired": false, "secret": false, "description": "A 
configuration strategy to apply on freshly created instances of 
TransformerFactory." },
+    "uriResolver": { "index": 6, "kind": "property", "displayName": "Uri 
Resolver", "group": "advanced", "label": "advanced", "required": false, "type": 
"object", "javaType": "javax.xml.transform.URIResolver", "deprecated": false, 
"autowired": false, "secret": false, "description": "To use a custom 
UriResolver. Should not be used together with the option 'uriResolverFactory'." 
},
+    "uriResolverFactory": { "index": 7, "kind": "property", "displayName": 
"Uri Resolver Factory", "group": "advanced", "label": "advanced", "required": 
false, "type": "object", "javaType": 
"org.apache.camel.component.xslt.XsltUriResolverFactory", "deprecated": false, 
"autowired": false, "secret": false, "description": "To use a custom 
UriResolver which depends on a dynamic endpoint resource URI. Should not be 
used together with the option 'uriResolver'." }
   },
   "headers": {
-    "CamelXsltFileName": { "index": 0, "kind": "header", "displayName": "", 
"group": "producer", "label": "", "required": false, "javaType": "String", 
"deprecated": false, "deprecationNote": "", "autowired": false, "secret": 
false, "description": "The XSLT file name", "constantName": 
"org.apache.camel.component.xslt.XsltConstants#XSLT_FILE_NAME" }
+    "CamelXsltResourceUri": { "index": 0, "kind": "header", "displayName": "", 
"group": "producer", "label": "", "required": false, "javaType": "String", 
"deprecated": false, "deprecationNote": "", "autowired": false, "secret": 
false, "description": "A URI for the template resource to use instead of the 
endpoint configured.", "constantName": 
"org.apache.camel.component.xslt.XsltConstants#XSLT_RESOURCE_URI" },
+    "CamelXsltFileName": { "index": 1, "kind": "header", "displayName": "", 
"group": "producer", "label": "", "required": false, "javaType": "String", 
"deprecated": false, "deprecationNote": "", "autowired": false, "secret": 
false, "description": "The XSLT file name", "constantName": 
"org.apache.camel.component.xslt.XsltConstants#XSLT_FILE_NAME" }
   },
   "properties": {
     "resourceUri": { "index": 0, "kind": "path", "displayName": "Resource 
Uri", "group": "producer", "label": "", "required": true, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", 
"autowired": false, "secret": false, "description": "Path to the template. The 
following is supported by the default URIResolver. You can prefix with: 
classpath, file, http, ref, or bean. classpath, file and http loads the 
resource using these protocols (classpath i [...]
-    "contentCache": { "index": 1, "kind": "parameter", "displayName": "Content 
Cache", "group": "producer", "label": "", "required": false, "type": "boolean", 
"javaType": "boolean", "deprecated": false, "autowired": false, "secret": 
false, "defaultValue": true, "description": "Cache for the resource content 
(the stylesheet file) when it is loaded. If set to false Camel will reload the 
stylesheet file on each message processing. This is good for development. A 
cached stylesheet can be for [...]
-    "deleteOutputFile": { "index": 2, "kind": "parameter", "displayName": 
"Delete Output File", "group": "producer", "label": "", "required": false, 
"type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": 
false, "secret": false, "defaultValue": false, "description": "If you have 
output=file then this option dictates whether or not the output file should be 
deleted when the Exchange is done processing. For example suppose the output 
file is a temporary file, then it ca [...]
-    "failOnNullBody": { "index": 3, "kind": "parameter", "displayName": "Fail 
On Null Body", "group": "producer", "label": "", "required": false, "type": 
"boolean", "javaType": "boolean", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": true, "description": "Whether or not to throw 
an exception if the input body is null." },
-    "output": { "index": 4, "kind": "parameter", "displayName": "Output", 
"group": "producer", "label": "", "required": false, "type": "object", 
"javaType": "org.apache.camel.component.xslt.XsltOutput", "enum": [ "string", 
"bytes", "DOM", "file" ], "deprecated": false, "autowired": false, "secret": 
false, "defaultValue": "string", "description": "Option to specify which output 
type to use. Possible values are: string, bytes, DOM, file. The first three 
options are all in memory based, whe [...]
-    "transformerCacheSize": { "index": 5, "kind": "parameter", "displayName": 
"Transformer Cache Size", "group": "producer", "label": "", "required": false, 
"type": "integer", "javaType": "int", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": 0, "description": "The number of 
javax.xml.transform.Transformer object that are cached for reuse to avoid calls 
to Template.newTransformer()." },
-    "lazyStartProducer": { "index": 6, "kind": "parameter", "displayName": 
"Lazy Start Producer", "group": "producer (advanced)", "label": 
"producer,advanced", "required": false, "type": "boolean", "javaType": 
"boolean", "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": false, "description": "Whether the producer should be started 
lazy (on the first message). By starting lazy you can use this to allow 
CamelContext and routes to startup in situations where a produc [...]
-    "entityResolver": { "index": 7, "kind": "parameter", "displayName": 
"Entity Resolver", "group": "advanced", "label": "advanced", "required": false, 
"type": "object", "javaType": "org.xml.sax.EntityResolver", "deprecated": 
false, "autowired": false, "secret": false, "description": "To use a custom 
org.xml.sax.EntityResolver with javax.xml.transform.sax.SAXSource." },
-    "errorListener": { "index": 8, "kind": "parameter", "displayName": "Error 
Listener", "group": "advanced", "label": "advanced", "required": false, "type": 
"object", "javaType": "javax.xml.transform.ErrorListener", "deprecated": false, 
"autowired": false, "secret": false, "description": "Allows to configure to use 
a custom javax.xml.transform.ErrorListener. Beware when doing this then the 
default error listener which captures any errors or fatal errors and store 
information on the Exch [...]
-    "resultHandlerFactory": { "index": 9, "kind": "parameter", "displayName": 
"Result Handler Factory", "group": "advanced", "label": "advanced", "required": 
false, "type": "object", "javaType": 
"org.apache.camel.component.xslt.ResultHandlerFactory", "deprecated": false, 
"autowired": false, "secret": false, "description": "Allows you to use a custom 
org.apache.camel.builder.xml.ResultHandlerFactory which is capable of using 
custom org.apache.camel.builder.xml.ResultHandler types." },
-    "transformerFactory": { "index": 10, "kind": "parameter", "displayName": 
"Transformer Factory", "group": "advanced", "label": "advanced", "required": 
false, "type": "object", "javaType": "javax.xml.transform.TransformerFactory", 
"deprecated": false, "autowired": false, "secret": false, "description": "To 
use a custom XSLT transformer factory" },
-    "transformerFactoryClass": { "index": 11, "kind": "parameter", 
"displayName": "Transformer Factory Class", "group": "advanced", "label": 
"advanced", "required": false, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "autowired": false, "secret": false, 
"description": "To use a custom XSLT transformer factory, specified as a FQN 
class name" },
-    "transformerFactoryConfigurationStrategy": { "index": 12, "kind": 
"parameter", "displayName": "Transformer Factory Configuration Strategy", 
"group": "advanced", "label": "advanced", "required": false, "type": "object", 
"javaType": 
"org.apache.camel.component.xslt.TransformerFactoryConfigurationStrategy", 
"deprecated": false, "autowired": false, "secret": false, "description": "A 
configuration strategy to apply on freshly created instances of 
TransformerFactory." },
-    "uriResolver": { "index": 13, "kind": "parameter", "displayName": "Uri 
Resolver", "group": "advanced", "label": "advanced", "required": false, "type": 
"object", "javaType": "javax.xml.transform.URIResolver", "deprecated": false, 
"autowired": false, "secret": false, "description": "To use a custom 
javax.xml.transform.URIResolver" },
-    "xsltMessageLogger": { "index": 14, "kind": "parameter", "displayName": 
"Xslt Message Logger", "group": "advanced", "label": "advanced", "required": 
false, "type": "object", "javaType": 
"org.apache.camel.component.xslt.XsltMessageLogger", "deprecated": false, 
"autowired": false, "secret": false, "description": "A consumer to messages 
generated during XSLT transformations." }
+    "allowTemplateFromHeader": { "index": 1, "kind": "parameter", 
"displayName": "Allow Template From Header", "group": "producer", "label": "", 
"required": false, "type": "boolean", "javaType": "boolean", "deprecated": 
false, "autowired": false, "secret": false, "defaultValue": false, 
"description": "Whether to allow to use resource template from header or not 
(default false). Enabling this allows to specify dynamic templates via message 
header. However this can be seen as a potential s [...]
+    "contentCache": { "index": 2, "kind": "parameter", "displayName": "Content 
Cache", "group": "producer", "label": "", "required": false, "type": "boolean", 
"javaType": "boolean", "deprecated": false, "autowired": false, "secret": 
false, "defaultValue": true, "description": "Cache for the resource content 
(the stylesheet file) when it is loaded. If set to false Camel will reload the 
stylesheet file on each message processing. This is good for development. A 
cached stylesheet can be for [...]
+    "deleteOutputFile": { "index": 3, "kind": "parameter", "displayName": 
"Delete Output File", "group": "producer", "label": "", "required": false, 
"type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": 
false, "secret": false, "defaultValue": false, "description": "If you have 
output=file then this option dictates whether or not the output file should be 
deleted when the Exchange is done processing. For example suppose the output 
file is a temporary file, then it ca [...]
+    "failOnNullBody": { "index": 4, "kind": "parameter", "displayName": "Fail 
On Null Body", "group": "producer", "label": "", "required": false, "type": 
"boolean", "javaType": "boolean", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": true, "description": "Whether or not to throw 
an exception if the input body is null." },
+    "output": { "index": 5, "kind": "parameter", "displayName": "Output", 
"group": "producer", "label": "", "required": false, "type": "object", 
"javaType": "org.apache.camel.component.xslt.XsltOutput", "enum": [ "string", 
"bytes", "DOM", "file" ], "deprecated": false, "autowired": false, "secret": 
false, "defaultValue": "string", "description": "Option to specify which output 
type to use. Possible values are: string, bytes, DOM, file. The first three 
options are all in memory based, whe [...]
+    "transformerCacheSize": { "index": 6, "kind": "parameter", "displayName": 
"Transformer Cache Size", "group": "producer", "label": "", "required": false, 
"type": "integer", "javaType": "int", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": 0, "description": "The number of 
javax.xml.transform.Transformer object that are cached for reuse to avoid calls 
to Template.newTransformer()." },
+    "lazyStartProducer": { "index": 7, "kind": "parameter", "displayName": 
"Lazy Start Producer", "group": "producer (advanced)", "label": 
"producer,advanced", "required": false, "type": "boolean", "javaType": 
"boolean", "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": false, "description": "Whether the producer should be started 
lazy (on the first message). By starting lazy you can use this to allow 
CamelContext and routes to startup in situations where a produc [...]
+    "entityResolver": { "index": 8, "kind": "parameter", "displayName": 
"Entity Resolver", "group": "advanced", "label": "advanced", "required": false, 
"type": "object", "javaType": "org.xml.sax.EntityResolver", "deprecated": 
false, "autowired": false, "secret": false, "description": "To use a custom 
org.xml.sax.EntityResolver with javax.xml.transform.sax.SAXSource." },
+    "errorListener": { "index": 9, "kind": "parameter", "displayName": "Error 
Listener", "group": "advanced", "label": "advanced", "required": false, "type": 
"object", "javaType": "javax.xml.transform.ErrorListener", "deprecated": false, 
"autowired": false, "secret": false, "description": "Allows to configure to use 
a custom javax.xml.transform.ErrorListener. Beware when doing this then the 
default error listener which captures any errors or fatal errors and store 
information on the Exch [...]
+    "resultHandlerFactory": { "index": 10, "kind": "parameter", "displayName": 
"Result Handler Factory", "group": "advanced", "label": "advanced", "required": 
false, "type": "object", "javaType": 
"org.apache.camel.component.xslt.ResultHandlerFactory", "deprecated": false, 
"autowired": false, "secret": false, "description": "Allows you to use a custom 
org.apache.camel.builder.xml.ResultHandlerFactory which is capable of using 
custom org.apache.camel.builder.xml.ResultHandler types." },
+    "transformerFactory": { "index": 11, "kind": "parameter", "displayName": 
"Transformer Factory", "group": "advanced", "label": "advanced", "required": 
false, "type": "object", "javaType": "javax.xml.transform.TransformerFactory", 
"deprecated": false, "autowired": false, "secret": false, "description": "To 
use a custom XSLT transformer factory" },
+    "transformerFactoryClass": { "index": 12, "kind": "parameter", 
"displayName": "Transformer Factory Class", "group": "advanced", "label": 
"advanced", "required": false, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "autowired": false, "secret": false, 
"description": "To use a custom XSLT transformer factory, specified as a FQN 
class name" },
+    "transformerFactoryConfigurationStrategy": { "index": 13, "kind": 
"parameter", "displayName": "Transformer Factory Configuration Strategy", 
"group": "advanced", "label": "advanced", "required": false, "type": "object", 
"javaType": 
"org.apache.camel.component.xslt.TransformerFactoryConfigurationStrategy", 
"deprecated": false, "autowired": false, "secret": false, "description": "A 
configuration strategy to apply on freshly created instances of 
TransformerFactory." },
+    "uriResolver": { "index": 14, "kind": "parameter", "displayName": "Uri 
Resolver", "group": "advanced", "label": "advanced", "required": false, "type": 
"object", "javaType": "javax.xml.transform.URIResolver", "deprecated": false, 
"autowired": false, "secret": false, "description": "To use a custom 
javax.xml.transform.URIResolver" },
+    "xsltMessageLogger": { "index": 15, "kind": "parameter", "displayName": 
"Xslt Message Logger", "group": "advanced", "label": "advanced", "required": 
false, "type": "object", "javaType": 
"org.apache.camel.component.xslt.XsltMessageLogger", "deprecated": false, 
"autowired": false, "secret": false, "description": "A consumer to messages 
generated during XSLT transformations." }
   }
 }
diff --git 
a/components/camel-xslt/src/main/java/org/apache/camel/component/xslt/XsltComponent.java
 
b/components/camel-xslt/src/main/java/org/apache/camel/component/xslt/XsltComponent.java
index 8a2fbcb0ae4..385800353a7 100644
--- 
a/components/camel-xslt/src/main/java/org/apache/camel/component/xslt/XsltComponent.java
+++ 
b/components/camel-xslt/src/main/java/org/apache/camel/component/xslt/XsltComponent.java
@@ -40,6 +40,8 @@ public class XsltComponent extends DefaultComponent {
     private URIResolver uriResolver;
     @Metadata(label = "advanced")
     private XsltUriResolverFactory uriResolverFactory;
+    @Metadata
+    private boolean allowTemplateFromHeader;
     @Metadata(defaultValue = "true")
     private boolean contentCache = true;
     @Metadata(label = "advanced")
@@ -73,6 +75,20 @@ public class XsltComponent extends DefaultComponent {
         this.uriResolver = uriResolver;
     }
 
+    public boolean isAllowTemplateFromHeader() {
+        return allowTemplateFromHeader;
+    }
+
+    /**
+     * Whether to allow to use resource template from header or not (default 
false).
+     *
+     * Enabling this allows to specify dynamic templates via message header. 
However this can be seen as a potential
+     * security vulnerability if the header is coming from a malicious user, 
so use this with care.
+     */
+    public void setAllowTemplateFromHeader(boolean allowTemplateFromHeader) {
+        this.allowTemplateFromHeader = allowTemplateFromHeader;
+    }
+
     public boolean isContentCache() {
         return contentCache;
     }
@@ -125,6 +141,7 @@ public class XsltComponent extends DefaultComponent {
             throws Exception {
         XsltEndpoint xslt = (XsltEndpoint) endpoint;
         xslt.setContentCache(isContentCache());
+        xslt.setAllowTemplateFromHeader(isAllowTemplateFromHeader());
 
         // lookup custom resolver to use
         URIResolver resolver = resolveAndRemoveReferenceParameter(parameters, 
"uriResolver", URIResolver.class);
diff --git 
a/components/camel-xslt/src/main/java/org/apache/camel/component/xslt/XsltConstants.java
 
b/components/camel-xslt/src/main/java/org/apache/camel/component/xslt/XsltConstants.java
index 9d92ad6db83..fd99a048460 100644
--- 
a/components/camel-xslt/src/main/java/org/apache/camel/component/xslt/XsltConstants.java
+++ 
b/components/camel-xslt/src/main/java/org/apache/camel/component/xslt/XsltConstants.java
@@ -21,10 +21,12 @@ import org.apache.camel.spi.Metadata;
 
 public final class XsltConstants {
 
+    @Metadata(description = "A URI for the template resource to use instead of 
the endpoint configured.", javaType = "String")
+    public static final String XSLT_RESOURCE_URI = "CamelXsltResourceUri";
     @Metadata(description = "The XSLT file name", javaType = "String")
     public static final String XSLT_FILE_NAME = Exchange.XSLT_FILE_NAME;
 
     private XsltConstants() {
-
     }
+
 }
diff --git 
a/components/camel-xslt/src/main/java/org/apache/camel/component/xslt/XsltEndpoint.java
 
b/components/camel-xslt/src/main/java/org/apache/camel/component/xslt/XsltEndpoint.java
index 8ebaf38954d..98c8e81cc22 100644
--- 
a/components/camel-xslt/src/main/java/org/apache/camel/component/xslt/XsltEndpoint.java
+++ 
b/components/camel-xslt/src/main/java/org/apache/camel/component/xslt/XsltEndpoint.java
@@ -65,6 +65,8 @@ public class XsltEndpoint extends ProcessorEndpoint {
     @UriPath
     @Metadata(required = true)
     private String resourceUri;
+    @UriParam
+    private boolean allowTemplateFromHeader;
     @UriParam(defaultValue = "true")
     private boolean contentCache = true;
     @UriParam(label = "advanced")
@@ -114,12 +116,39 @@ public class XsltEndpoint extends ProcessorEndpoint {
 
     @Override
     protected void onExchange(Exchange exchange) throws Exception {
+        if (allowTemplateFromHeader) {
+            String newResourceUri = 
exchange.getIn().getHeader(XsltConstants.XSLT_RESOURCE_URI, String.class);
+            if (newResourceUri != null) {
+                exchange.getIn().removeHeader(XsltConstants.XSLT_RESOURCE_URI);
+
+                LOG.trace("{} set to {} creating new endpoint to handle 
exchange", XsltConstants.XSLT_RESOURCE_URI,
+                        newResourceUri);
+                XsltEndpoint newEndpoint = 
findOrCreateEndpoint(getEndpointUri(), newResourceUri);
+                newEndpoint.onExchange(exchange);
+                return;
+            }
+        }
         if (!contentCache || cacheCleared) {
             loadResource(resourceUri, xslt);
         }
         super.onExchange(exchange);
     }
 
+    @ManagedAttribute(description = "Whether to allow to use resource template 
from header or not (default false).")
+    public boolean isAllowTemplateFromHeader() {
+        return allowTemplateFromHeader;
+    }
+
+    /**
+     * Whether to allow to use resource template from header or not (default 
false).
+     *
+     * Enabling this allows to specify dynamic templates via message header. 
However this can be seen as a potential
+     * security vulnerability if the header is coming from a malicious user, 
so use this with care.
+     */
+    public void setAllowTemplateFromHeader(boolean allowTemplateFromHeader) {
+        this.allowTemplateFromHeader = allowTemplateFromHeader;
+    }
+
     public boolean isCacheCleared() {
         return cacheCleared;
     }
diff --git 
a/core/camel-core/src/test/java/org/apache/camel/component/xslt/XsltFromHeaderOverrideEndpointUriTest.java
 
b/core/camel-core/src/test/java/org/apache/camel/component/xslt/XsltFromHeaderOverrideEndpointUriTest.java
new file mode 100644
index 00000000000..7e3de39c351
--- /dev/null
+++ 
b/core/camel-core/src/test/java/org/apache/camel/component/xslt/XsltFromHeaderOverrideEndpointUriTest.java
@@ -0,0 +1,83 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.xslt;
+
+import java.util.List;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.ContextTestSupport;
+import org.apache.camel.Exchange;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.mock.MockEndpoint;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+public class XsltFromHeaderOverrideEndpointUriTest extends ContextTestSupport {
+
+    @Test
+    public void testSendMessageAndHaveItTransformed() throws Exception {
+        MockEndpoint endpoint = getMockEndpoint("mock:result");
+        endpoint.expectedMessageCount(1);
+
+        template.sendBodyAndHeader("direct:start",
+                "<mail><subject>Hey</subject><body>Hello world!</body></mail>",
+                XsltConstants.XSLT_RESOURCE_URI, 
"org/apache/camel/component/xslt/transform_to_foo.xsl");
+
+        assertMockEndpointsSatisfied();
+
+        List<Exchange> list = endpoint.getReceivedExchanges();
+        Exchange exchange = list.get(0);
+        String xml = exchange.getIn().getBody(String.class);
+
+        assertNotNull("The transformed XML should not be null", xml);
+        assertTrue(xml.contains("transformed"));
+        // the foo tag is in the transform_to_foo.xsl which is what we want. 
If this didn't
+        // work then transform.xsl would be used and we'd have a cheese element
+        assertTrue(xml.contains("foo"));
+        assertTrue(xml.contains("<subject>Hey</subject>"));
+        assertTrue(xml.contains("<body>Hello world!</body>"));
+
+        TestBean bean = context.getRegistry().lookupByNameAndType("testBean", 
TestBean.class);
+        assertNotNull(bean);
+        assertEquals("Hey", bean.getSubject());
+    }
+
+    @Override
+    protected RouteBuilder createRouteBuilder() throws Exception {
+        return new RouteBuilder() {
+            @Override
+            public void configure() throws Exception {
+                from("direct:start")
+                    
.to("xslt:org/apache/camel/component/xslt/transform.xsl?allowTemplateFromHeader=true")
+                    .multicast()
+                        .bean("testBean")
+                        .to("mock:result");
+            }
+        };
+    }
+
+    @Override
+    protected CamelContext createCamelContext() throws Exception {
+        CamelContext context = super.createCamelContext();
+        context.getRegistry().bind("testBean", new TestBean());
+        return context;
+    }
+
+}
\ No newline at end of file
diff --git 
a/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/XsltComponentBuilderFactory.java
 
b/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/XsltComponentBuilderFactory.java
index 48169a94e3e..4860dc16ac2 100644
--- 
a/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/XsltComponentBuilderFactory.java
+++ 
b/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/XsltComponentBuilderFactory.java
@@ -48,6 +48,26 @@ public interface XsltComponentBuilderFactory {
      * Builder for the XSLT component.
      */
     interface XsltComponentBuilder extends ComponentBuilder<XsltComponent> {
+        /**
+         * Whether to allow to use resource template from header or not 
(default
+         * false). Enabling this allows to specify dynamic templates via 
message
+         * header. However this can be seen as a potential security
+         * vulnerability if the header is coming from a malicious user, so use
+         * this with care.
+         * 
+         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
+         * 
+         * Default: false
+         * Group: producer
+         * 
+         * @param allowTemplateFromHeader the value to set
+         * @return the dsl builder
+         */
+        default XsltComponentBuilder allowTemplateFromHeader(
+                boolean allowTemplateFromHeader) {
+            doSetProperty("allowTemplateFromHeader", allowTemplateFromHeader);
+            return this;
+        }
         /**
          * Cache for the resource content (the stylesheet file) when it is
          * loaded. If set to false Camel will reload the stylesheet file on 
each
@@ -195,6 +215,7 @@ public interface XsltComponentBuilderFactory {
                 String name,
                 Object value) {
             switch (name) {
+            case "allowTemplateFromHeader": ((XsltComponent) 
component).setAllowTemplateFromHeader((boolean) value); return true;
             case "contentCache": ((XsltComponent) 
component).setContentCache((boolean) value); return true;
             case "lazyStartProducer": ((XsltComponent) 
component).setLazyStartProducer((boolean) value); return true;
             case "autowiredEnabled": ((XsltComponent) 
component).setAutowiredEnabled((boolean) value); return true;
diff --git 
a/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/XsltSaxonComponentBuilderFactory.java
 
b/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/XsltSaxonComponentBuilderFactory.java
index 8691e8b2540..55da0ef4179 100644
--- 
a/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/XsltSaxonComponentBuilderFactory.java
+++ 
b/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/XsltSaxonComponentBuilderFactory.java
@@ -50,6 +50,26 @@ public interface XsltSaxonComponentBuilderFactory {
     interface XsltSaxonComponentBuilder
             extends
                 ComponentBuilder<XsltSaxonComponent> {
+        /**
+         * Whether to allow to use resource template from header or not 
(default
+         * false). Enabling this allows to specify dynamic templates via 
message
+         * header. However this can be seen as a potential security
+         * vulnerability if the header is coming from a malicious user, so use
+         * this with care.
+         * 
+         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
+         * 
+         * Default: false
+         * Group: producer
+         * 
+         * @param allowTemplateFromHeader the value to set
+         * @return the dsl builder
+         */
+        default XsltSaxonComponentBuilder allowTemplateFromHeader(
+                boolean allowTemplateFromHeader) {
+            doSetProperty("allowTemplateFromHeader", allowTemplateFromHeader);
+            return this;
+        }
         /**
          * Cache for the resource content (the stylesheet file) when it is
          * loaded. If set to false Camel will reload the stylesheet file on 
each
@@ -269,6 +289,7 @@ public interface XsltSaxonComponentBuilderFactory {
                 String name,
                 Object value) {
             switch (name) {
+            case "allowTemplateFromHeader": ((XsltSaxonComponent) 
component).setAllowTemplateFromHeader((boolean) value); return true;
             case "contentCache": ((XsltSaxonComponent) 
component).setContentCache((boolean) value); return true;
             case "lazyStartProducer": ((XsltSaxonComponent) 
component).setLazyStartProducer((boolean) value); return true;
             case "autowiredEnabled": ((XsltSaxonComponent) 
component).setAutowiredEnabled((boolean) value); return true;
diff --git 
a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/ServletEndpointBuilderFactory.java
 
b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/ServletEndpointBuilderFactory.java
index 0ee796215b5..6e4753f0ceb 100644
--- 
a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/ServletEndpointBuilderFactory.java
+++ 
b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/ServletEndpointBuilderFactory.java
@@ -104,37 +104,6 @@ public interface ServletEndpointBuilderFactory {
             doSetProperty("disableStreamCache", disableStreamCache);
             return this;
         }
-/**
-         * Configure the consumer to work in async mode.
-         * 
-         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
-         * 
-         * Default: false
-         * Group: consumer
-         * 
-         * @param async the value to set
-         * @return the dsl builder
-         */
-        default ServletEndpointBuilder async(boolean async) {
-            doSetProperty("async", async);
-            return this;
-        }
-        /**
-         * Configure the consumer to work in async mode.
-         * 
-         * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
-         * type.
-         * 
-         * Default: false
-         * Group: consumer
-         * 
-         * @param async the value to set
-         * @return the dsl builder
-         */
-        default ServletEndpointBuilder async(String async) {
-            doSetProperty("async", async);
-            return this;
-        }
         /**
          * If this option is false the Servlet will disable the HTTP streaming
          * and set the content-length header on the response.
@@ -217,7 +186,38 @@ public interface ServletEndpointBuilderFactory {
             doSetProperty("transferException", transferException);
             return this;
         }
-                /**
+        /**
+         * Configure the consumer to work in async mode.
+         * 
+         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
+         * 
+         * Default: false
+         * Group: consumer
+         * 
+         * @param async the value to set
+         * @return the dsl builder
+         */
+        default ServletEndpointBuilder async(boolean async) {
+            doSetProperty("async", async);
+            return this;
+        }
+        /**
+         * Configure the consumer to work in async mode.
+         * 
+         * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
+         * type.
+         * 
+         * Default: false
+         * Group: consumer
+         * 
+         * @param async the value to set
+         * @return the dsl builder
+         */
+        default ServletEndpointBuilder async(String async) {
+            doSetProperty("async", async);
+            return this;
+        }
+        /**
          * Used to only allow consuming if the HttpMethod matches, such as
          * GET/POST/PUT etc. Multiple methods can be specified separated by
          * comma.
diff --git 
a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/XsltEndpointBuilderFactory.java
 
b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/XsltEndpointBuilderFactory.java
index 071867cdffc..49e3a5ebf13 100644
--- 
a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/XsltEndpointBuilderFactory.java
+++ 
b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/XsltEndpointBuilderFactory.java
@@ -41,6 +41,47 @@ public interface XsltEndpointBuilderFactory {
         default AdvancedXsltEndpointBuilder advanced() {
             return (AdvancedXsltEndpointBuilder) this;
         }
+        /**
+         * Whether to allow to use resource template from header or not 
(default
+         * false). Enabling this allows to specify dynamic templates via 
message
+         * header. However this can be seen as a potential security
+         * vulnerability if the header is coming from a malicious user, so use
+         * this with care.
+         * 
+         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
+         * 
+         * Default: false
+         * Group: producer
+         * 
+         * @param allowTemplateFromHeader the value to set
+         * @return the dsl builder
+         */
+        default XsltEndpointBuilder allowTemplateFromHeader(
+                boolean allowTemplateFromHeader) {
+            doSetProperty("allowTemplateFromHeader", allowTemplateFromHeader);
+            return this;
+        }
+        /**
+         * Whether to allow to use resource template from header or not 
(default
+         * false). Enabling this allows to specify dynamic templates via 
message
+         * header. However this can be seen as a potential security
+         * vulnerability if the header is coming from a malicious user, so use
+         * this with care.
+         * 
+         * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
+         * type.
+         * 
+         * Default: false
+         * Group: producer
+         * 
+         * @param allowTemplateFromHeader the value to set
+         * @return the dsl builder
+         */
+        default XsltEndpointBuilder allowTemplateFromHeader(
+                String allowTemplateFromHeader) {
+            doSetProperty("allowTemplateFromHeader", allowTemplateFromHeader);
+            return this;
+        }
         /**
          * Cache for the resource content (the stylesheet file) when it is
          * loaded. If set to false Camel will reload the stylesheet file on 
each
@@ -622,6 +663,20 @@ public interface XsltEndpointBuilderFactory {
          */
         private static final XsltHeaderNameBuilder INSTANCE = new 
XsltHeaderNameBuilder();
 
+        /**
+         * A URI for the template resource to use instead of the endpoint
+         * configured.
+         * 
+         * The option is a: {@code String} type.
+         * 
+         * Group: producer
+         * 
+         * @return the name of the header {@code XsltResourceUri}.
+         */
+        public String xsltResourceUri() {
+            return "XsltResourceUri";
+        }
+
         /**
          * The XSLT file name.
          * 
diff --git 
a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/XsltSaxonEndpointBuilderFactory.java
 
b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/XsltSaxonEndpointBuilderFactory.java
index d2c283e0e9b..cfd6d70abeb 100644
--- 
a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/XsltSaxonEndpointBuilderFactory.java
+++ 
b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/XsltSaxonEndpointBuilderFactory.java
@@ -78,6 +78,47 @@ public interface XsltSaxonEndpointBuilderFactory {
             doSetProperty("allowStAX", allowStAX);
             return this;
         }
+        /**
+         * Whether to allow to use resource template from header or not 
(default
+         * false). Enabling this allows to specify dynamic templates via 
message
+         * header. However this can be seen as a potential security
+         * vulnerability if the header is coming from a malicious user, so use
+         * this with care.
+         * 
+         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
+         * 
+         * Default: false
+         * Group: producer
+         * 
+         * @param allowTemplateFromHeader the value to set
+         * @return the dsl builder
+         */
+        default XsltSaxonEndpointBuilder allowTemplateFromHeader(
+                boolean allowTemplateFromHeader) {
+            doSetProperty("allowTemplateFromHeader", allowTemplateFromHeader);
+            return this;
+        }
+        /**
+         * Whether to allow to use resource template from header or not 
(default
+         * false). Enabling this allows to specify dynamic templates via 
message
+         * header. However this can be seen as a potential security
+         * vulnerability if the header is coming from a malicious user, so use
+         * this with care.
+         * 
+         * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
+         * type.
+         * 
+         * Default: false
+         * Group: producer
+         * 
+         * @param allowTemplateFromHeader the value to set
+         * @return the dsl builder
+         */
+        default XsltSaxonEndpointBuilder allowTemplateFromHeader(
+                String allowTemplateFromHeader) {
+            doSetProperty("allowTemplateFromHeader", allowTemplateFromHeader);
+            return this;
+        }
         /**
          * Cache for the resource content (the stylesheet file) when it is
          * loaded. If set to false Camel will reload the stylesheet file on 
each
@@ -754,6 +795,20 @@ public interface XsltSaxonEndpointBuilderFactory {
          */
         private static final XsltSaxonHeaderNameBuilder INSTANCE = new 
XsltSaxonHeaderNameBuilder();
 
+        /**
+         * A URI for the template resource to use instead of the endpoint
+         * configured.
+         * 
+         * The option is a: {@code String} type.
+         * 
+         * Group: producer
+         * 
+         * @return the name of the header {@code XsltResourceUri}.
+         */
+        public String xsltResourceUri() {
+            return "XsltResourceUri";
+        }
+
         /**
          * The XSLT file name.
          * 

Reply via email to