Difference between revisions of "XSLT Module"
Line 41: | Line 41: | ||
|- | |- | ||
| valign='top' | '''Errors''' | | valign='top' | '''Errors''' | ||
− | |<b>[[XQuery Errors#BaseX Errors | + | |<b>[[XQuery Errors#BaseX Errors|BASX0011]]</b> is raised if the specified parameter is unknown. |
|} | |} | ||
Revision as of 14:25, 17 September 2011
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 Version 9.x of the Saxon XSLT Processor (saxon9he.jar
, saxon9pe.jar
, saxon9ee.jar
) is found in the classpath.
A preview page describes the features of the latest stable snapshot.
$xslt:processor
Signatures | $xslt:processor as xs:string |
Summary | This variable contains the name of the applied XSLT processor (currently: Java or Saxon ). |
$xslt:version
Signatures | $xslt:version as xs:string |
Summary | This variable contains 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. If Saxon is found in the Java classpath, XSLT 2.0 is applied; otherwise, Java’s internal XSLT 1.0 Xalan implementation is used. $input and $stylesheet can be specified as
The
|
Errors | BASX0011 is raised if the specified parameter is unknown. |
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>