On 28.03.2019 18:38, Charles O'Connor coconnor@xxxxxxxxxxxx wrote:
I need to create a transform for our engineers to pass an XML fragment
stored in a SQL database into a document as a parameter. Testing this in
Oxygen using XSLT 3.0 and Saxon 9.7.0.15 is super easy. I can just declare the
parameter and then use the function fn:parse-xml-fragment:
<xsl:template match="article-meta/abstract">
<xsl:copy-of select="fn:parse-xml-fragment($NewAbstract)"/>
</xsl:template>
Unfortunately, the transform has to work in an environment limited to XSLT
2.0 (XMLPrime).
Which version of XmlPrime is that? While they don't support XSLT 3 they
for sure support XPath 3 functions like that function so, if you have
the latest version, I think you can get it to allow the use of such
functions by either setting version="3.0" in the XSLT and/or by using a
configuration/setting to support XPath 3 instead of 2.
I'm guessing this could be solved by saving the XML fragment as a document,
but is there a way to do it from memory?
Do you run XmlPrime from the command line? Or do you write .NET code
(e.g. C# or VB.NET) to run it? That way you should be able to set up
your own extension function if needed. Or perhaps parse the XML in your
.NET code and pass in a document fragment node to the XSLT.
|