Re: Is there any easy way to provide XdmValue as a source for the standard XsltTransformer?

Alan Painter <[email protected]> Mon, 28 Jun 2021 15:14:22 +0200
Newsgroups gmane.text.xml.saxon.help
Message-ID <CAN+GtW2sbU-1TcojWJZCgmx8-g3aRSe5rijtS2r23Ww28zTfnA@mail.gmail.com>
I may have to go that route for continuing with the standard
*XsltTransformer*.  Thanks for the advice.

For completeness, I'll mention that I'm trying to use this standard
transformer component from Spring Integration:

https://docs.spring.io/spring-integration/docs/5.3.2.RELEASE/reference/html/xml.html#xml-xslt-payload-transformers

https://github.com/spring-projects/spring-integration/blob/5.3.x/spring-integration-xml/src/main/java/org/springframework/integration/xml/transformer/XsltPayloadTransformer.java


It's instantiating a *net.sf.saxon.TransformerFactory* and then it assumes
that the payload of the message is the source document, trying to convert
it to a *Source* prior to invoking *transform(),* hence the problem.

The other option will be to create a custom component for instantiating the
*Xslt30Transformer* and calling the *applyTemplates(XdmValue, Destination) *
method.
I'll probably go this route.

thanks again and best regards

On Mon, Jun 28, 2021 at 9:09 AM Michael Kay <mike-JkSD5nQpfvpWk0Htik3J/[email protected]> wrote:

> If you can organise it so the XdmValue is passed as a stylesheet
> parameter, rather than as the initial context item / match selection, then
> there should be no problem using the XsltTransformer.
>
> Michael Kay
> Saxonica
>
> On 27 Jun 2021, at 21:03, Alan Painter <[email protected]> wrote:
>
> Hi Michael,
>
> In fact, that's the objective of this exercise, to avoid
> deserializing/reserializing from XdmValues that are the source/results of
> cascading transformations orchestrated within Spring Integration.
>
> Spring Integration has a message payload that is passed around within it.
> I am shooting for an XdmValue message payload that can be transformed
> without serialization.
>
> This may well mean that I must forego the XsltTransformer for the
> Xslt30Transformer, but I was hoping that there could be a simpler solution
> since there is already a lot of implementation dependency on
> XsltTransformer.
>
> thanks for your help and best regards
>
> -alan
>
>
>
>
> On Sun, Jun 27, 2021 at 9:25 PM Michael Kay <[email protected]>
> wrote:
>
>> If the XdmValue represents an XML node, then it will (probably) be an
>> XdmNode, and the NodeInfo can be obtained using
>> XdmNode.getUnderlyingValue().
>>
>> However, if the XdmValue is an XdmMap or XdmArray (representing a JSON
>> input), then the XsltTransformer isn't really set up for this. You would
>> probably want to pass it in as a string-valued parameter and parse it from
>> within the stylesheet.
>>
>> Michael Kay
>> Saxonica
>>
>> > On 27 Jun 2021, at 16:48, Alan Painter <[email protected]> wrote:
>> >
>> > Hello fellow XML knowledge workers,
>> >
>> > I'm trying to reuse the implementations in Spring Integration that do
>> XSLT transformations using the XsltTransformer.
>> >
>> > I'd like to be able to pass an XdmValue as a source for transformations
>> so that the source could be JSON or XML, writing output to a RawDestination
>> or XdmDestination. I understand that this is possible using
>> Xslt30Transformer, but since the tooling that I'd like to reuse is based
>> upon the older XsltTransformer, I'm a bit stuck.
>> >
>> > I see that it's possible to provide a NodeInfo source value.  Could it
>> be relatively easy to have an XdmValue presented as NodeInfo?
>> >
>> > thanks for any pointers and best regards
>> >
>> > -alan
>> >
>> > _______________________________________________
>> > saxon-help mailing list archived at http://saxon.markmail.org/
>> > [email protected]
>> > https://lists.sourceforge.net/lists/listinfo/saxon-help
>>
>>
>>
>> _______________________________________________
>> saxon-help mailing list archived at http://saxon.markmail.org/
>> [email protected]
>> https://lists.sourceforge.net/lists/listinfo/saxon-help
>>
> _______________________________________________
> saxon-help mailing list archived at http://saxon.markmail.org/
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/saxon-help
>
>
> _______________________________________________
> saxon-help mailing list archived at http://saxon.markmail.org/
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/saxon-help

_______________________________________________
saxon-help mailing list archived at http://saxon.markmail.org/
[email protected]
https://lists.sourceforge.net/lists/listinfo/saxon-help