XSLT Module
This module contains XQuery functions and variables to perform XSLT transformations. All functions are preceded by the xslt:
prefix, which is linked to the http://www.basex.org/xslt
namespace.
By default, this module uses the internal XSLT 1.0 implementation of Java to transform documents. XSLT 2.0 is used instead if the Saxon XSLT processor (saxon9he.jar
, saxon9pe.jar
, saxon9ee.jar
) is found in the classpath of BaseX.
Note that this module has been introduced with Version 6.7.1 of BaseX.
$xslt:processor
Signatures | $xslt:processor as xs:string |
Summary | This variable returns the name of the applied XSLT processor (currently: Java or Saxon ). |
$xslt:version
Signatures | $xslt:version as xs:string |
Summary | This variable returns the supported XSLT version (currently: 1.0 or 2.0 ). |
xslt:transform
Signatures | xslt:transform($input as item(), $stylesheet as item()) as node() xslt:transform($input as item(), $stylesheet as item(), $params as item()) as node()
|
Summary | Transforms the document specified by $input , using the XSLT template specified by $stylesheet , and returns the result as node() instance. $input and $stylesheet can be specified as
The
If Saxon is found in the Java classpath, |
Examples
Example 1: Basic XSL transformation with dummy document and without parameters
Query:
xslt:transform(<dummy/>, 'basic.xslt')
basic.xslt
<xsl:stylesheet version='1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform'> <xsl:template match="/"> <result/> </xsl:template> </xsl:stylesheet>
Result:
<result/>
Example 2: XSLT transformation of an input document
Query:
let $in := <books> <book> <title>XSLT Programmer´s Reference</title> <author>Michael H. Kay</author> </book> <book> <title>XSLT</title> <author>Doug Tidwell</author> <author>Simon St. Laurent</author> <author>Robert Romano</author> </book> </books> let $style := <html xsl:version='2.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform' xmlns='http://www.w3.org/1999/xhtml'> <body> <h1>Books</h1> <ul> <xsl:for-each select='books/book'> <li> <b><xsl:apply-templates select='title'/></b>: <xsl:value-of select='string-join(author, ", ")'/> </li> </xsl:for-each> </ul> </body> </html> return xslt:transform($in, $style)
Result:
<html xmlns="http://www.w3.org/1999/xhtml"> <body> <h1>Books</h1> <ul> <li><b>XSLT Programmer´s Reference</b>: Michael H. Kay</li> <li><b>XSLT</b>: Doug Tidwell, Simon St. Laurent, Robert Romano</li> </ul> </body> </html>
Example 3: Assigning a variable to an XSLT stylesheet
Query:
let $in := <dummy/> let $style := doc('variable.xsl') return ( xslt:transform($in, $style, <xslt:parameters><xslt:v>1</xslt:v></xslt:parameters>), xslt:transform($in, $style, map { "v" := 1 }) )
variable.xslt
<xsl:stylesheet version='1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform'> <xsl:param name='v'/> <xsl:template match='/'> <v><xsl:value-of select='$v'/></v> </xsl:template> </xsl:stylesheet>
Result:
<v>1</v> <v>1</v>