Difference between revisions of "XSLT Module"
m (Text replace - "[[XQuery Modules" to "[[Module Library") |
|||
Line 86: | Line 86: | ||
</books> | </books> | ||
let $style := | let $style := | ||
− | < | + | <xsl:stylesheet version='2.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform'> |
− | + | <xsl:template match="/"> | |
− | + | <html xmlns='http://www.w3.org/1999/xhtml'> | |
− | + | <body> | |
− | + | <ul> | |
− | + | <xsl:for-each select='books/book'> | |
− | + | <li> | |
− | + | <b><xsl:apply-templates select='title'/></b>: <xsl:value-of select='author'/> | |
− | + | </li> | |
− | </ | + | </xsl:for-each> |
− | </ | + | </ul> |
− | </ | + | </body> |
+ | </html> | ||
+ | </xsl:template> | ||
+ | </xsl:stylesheet> | ||
return xslt:transform($in, $style) | return xslt:transform($in, $style) | ||
</pre> | </pre> | ||
Line 104: | Line 107: | ||
<html xmlns="http://www.w3.org/1999/xhtml"> | <html xmlns="http://www.w3.org/1999/xhtml"> | ||
<body> | <body> | ||
− | |||
<ul> | <ul> | ||
− | <li><b>XSLT | + | <li> |
− | <li><b>XSLT</b>: Doug Tidwell | + | <b>XSLT Programmer┬┤s Reference</b>: Michael H. Kay</li> |
+ | <li> | ||
+ | <b>XSLT</b>: Doug Tidwell</li> | ||
</ul> | </ul> | ||
</body> | </body> | ||
− | </html></pre> | + | </html> |
+ | </pre> | ||
'''Example 3: Assigning a variable to an XSLT stylesheet''' | '''Example 3: Assigning a variable to an XSLT stylesheet''' |
Revision as of 19:09, 14 May 2012
This XQuery Module contains functions and variables to perform XSLT transformations. All functions are preceded by the xslt:
prefix, which is linked to the statically declared http://basex.org/modules/xslt
namespace.
By default, this module uses Java’s XSLT 1.0 Xalan implementation 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 custom transformer can be specified by overwriting the system property javax.xml.transform.TransformerFactory
, as shown in the following Java example:
System.setProperty("javax.xml.transform.TransformerFactory", "org.custom.xslt.TransformerFactoryImpl"); Context ctx = new Context(); String result = new XQuery("xslt:transform('...', '...')").execute(ctx); ... ctx.close();
$xslt:processor
Signatures | $xslt:processor as xs:string |
Summary | This variable contains the name of the applied XSLT processor, or the path to a custom implementation (currently: "Java", "Saxon EE", "Saxon PE", or "Saxon HE"). |
$xslt:version
Signatures | $xslt:version as xs:string |
Summary | This variable contains the supported XSLT version (currently: "1.0" or "2.0"). "Unknown" is returned if a custom implementation was chosen. |
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
|
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 := <xsl:stylesheet version='2.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform'> <xsl:template match="/"> <html xmlns='http://www.w3.org/1999/xhtml'> <body> <ul> <xsl:for-each select='books/book'> <li> <b><xsl:apply-templates select='title'/></b>: <xsl:value-of select='author'/> </li> </xsl:for-each> </ul> </body> </html> </xsl:template> </xsl:stylesheet> return xslt:transform($in, $style)
Result:
<html xmlns="http://www.w3.org/1999/xhtml"> <body> <ul> <li> <b>XSLT Programmer┬┤s Reference</b>: Michael H. Kay</li> <li> <b>XSLT</b>: Doug Tidwell</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>