Changes

Jump to navigation Jump to search
128 bytes added ,  13:12, 2 July 2020
no edit summary
This [[Module Library|XQuery Module]] contains functions and variables to perform XSLT XSL transformations. By default, this module uses Java’s XSLT 1.0 Xalan implementation to transform documents. XSLT 3.0 is used instead will be enabled if Version 9.x of the [httphttps://www.saxonica.com/ Saxon XSLT Processor] ({{Code|saxon9he.jar}}, {{Code|saxon9pe.jar}}, {{Code|saxon9ee.jar}}) is found in the classpath(see [[Startup#Distributions|Distributions]] for more details. A custom transformer can be specified by overwriting the system property {{Code|javax.xml.transform.TransformerFactory}}, as shown in the following Java example:
<pre classsyntaxhighlight lang="brush:java">
System.setProperty(
"javax.xml.transform.TransformerFactory",
...
ctx.close();
</presyntaxhighlight>
=Conventions=
 
{{Mark|Updated with Version 9.0:}}
All functions and errors in this module are assigned to the <code><nowiki>http://basex.org/modules/xslt</nowiki></code> namespace, which is statically bound to the {{Code|xslt}} prefix.<br/>
==xslt:transform==
 
{{Mark|Updated with Version 9.0:}} {{Code|$options}} argument added.
{| width='100%'
|-
| width='120' | '''Signatures'''
|{{Func|xslt:transform|$input as item(), $stylesheet as item()|node()}}<br />{{Func|xslt:transform|$input as item(), $stylesheet as item(), $params as map(*)?|node()}}<br />{{Func|xslt:transform|$input as item(), $stylesheet as item(), $params args as map(*)?, $options as map(*)?|node()}}
|-
| '''Summary'''
* {{Code|xs:string}}, containing the document in its string representation, or
* {{Code|node()}}, containing the document itself.
The [[Catalog Resolver|XML Catalog files]] will be considered when resolving URIs. Variables can be bound to a stylesheet via {{Code|$paramsargs}} argument can be used to bind variables to a stylesheet. Only (only strings are supported when using Saxon (XSLT 3.0and Saxon). The following {{Code|$options}} are available:
* {{Code|cache}}: cache XSLT transformer (speeds up repeated transformations, but increases memory consumption)
|-
==xslt:transform-text==
 
{{Mark|Updated with Version 9.0:}} {{Code|$options}} argument added.
{| width='100%'
'''Query:'''
<pre classsyntaxhighlight lang="brush:xquery">
xslt:transform-text(<dummy/>, 'basic.xslt')
</presyntaxhighlight>
'''basic.xslt'''
<pre classsyntaxhighlight lang="brush:xml">
<xsl:stylesheet version='1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>
<xsl:template match="/">123</xsl:template>
</xsl:stylesheet>
</presyntaxhighlight>
'''Result:'''
<pre classsyntaxhighlight lang="brush:xml">123</presyntaxhighlight>
'''Example 2: XSLT transformation of an input document'''
'''Query:'''
<pre classsyntaxhighlight lang="brush:xquery">
(: Outputs the result as html. :)
declare option output:method 'html';
</xsl:stylesheet>
return xslt:transform($in, $style)</presyntaxhighlight>
'''Result:'''
<pre classsyntaxhighlight lang="brush:xml">
<html>
<body>
</body>
</html>
</presyntaxhighlight>
'''Example 3: Assigning a variable to an XSLT stylesheet'''
'''Query:'''
<pre classsyntaxhighlight lang="brush:xquery">
let $in := <dummy/>
let $style := doc('variable.xsl')
return xslt:transform($in, $style, map { "v": 1 })
</presyntaxhighlight>
'''variable.xsl'''
<pre classsyntaxhighlight lang="brush:xslt">
<xsl:stylesheet version='1.0'
xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>
</xsl:template>
</xsl:stylesheet>
</presyntaxhighlight>
'''Result:'''
<pre classsyntaxhighlight lang="brush:xml">
<v>1</v>
<v>1</v>
</presyntaxhighlight>
=Errors=
 
{{Mark|Updated with Version 9.0:}}
{| class="wikitable" width="100%"
=Changelog=
 
;Version 9.2
 
* Updated: Support for XML Catalog files added.
;Version 9.0
Bureaucrats, editor, reviewer, Administrators
13,550

edits

Navigation menu