XSLT: Difference between revisions

From miki
Jump to navigation Jump to search
Line 12: Line 12:


== Overview ==
== Overview ==
* Currently there are two versions of the XSLT standards: '''XSLT 1.0''' and '''XSLT 2.0'''.
Currently there are two versions of the XSLT standards: '''XSLT 1.0''' and '''XSLT 2.0'''.


;XSLT 1.0
* On linux, the standard XSLT 1.0 processor is <code>xsltproc</code> (from package {{deb|xsltproc}}, libxml2 library). The standard XSLT 2.0 processor is <code>saxonb-xslt</code> (from package {{deb|libsaxonb-java}}).
: On linux, the standard XSLT 1.0 processor is <code>xsltproc</code> (from package {{deb|xsltproc}}, libxml2 library).
: In XSLT 1.0, most functions come from XSLT extensions (like http://exslt.org/).


;XSLT 2.0
* On linux, the standard XSLT 2.0 processor is <code>saxonb-xslt</code> (from package {{deb|libsaxonb-java}}).
* XSLT 2.0 introduces XQuery, XPath 2.0, and XSLT functions (with prefix <code>fn:</code>).


== Extensions ==
== Extensions ==

Revision as of 08:11, 7 October 2016

XSLT stands for Extensible Stylesheet Language Transformations.

Links

Gnome library
exslt (extensions)
Extensions supported in libxml (xsltproc processor)

Overview

Currently there are two versions of the XSLT standards: XSLT 1.0 and XSLT 2.0.

XSLT 1.0
On linux, the standard XSLT 1.0 processor is xsltproc (from package xsltproc, libxml2 library).
In XSLT 1.0, most functions come from XSLT extensions (like http://exslt.org/).


XSLT 2.0
  • On linux, the standard XSLT 2.0 processor is saxonb-xslt (from package libsaxonb-java).
  • XSLT 2.0 introduces XQuery, XPath 2.0, and XSLT functions (with prefix fn:).

Extensions

From w3.org [1]:

  • The element extension mechanism allows namespaces to be designated as extension namespaces. When a namespace is designated as an extension namespace and an element with a name from that namespace occurs in a template, then the element is treated as an instruction rather than as a literal result element.

Extensions available in the XSLT processor

Using xsltproc (package xsltproc [2], we can get the list of built-in extensions with:

xsltproc --dumpextensions 
# Registered XSLT Extensions
# --------------------------
# Registered Extension Functions:
# {http://exslt.org/math}atan2
# {http://exslt.org/strings}align
# ...
exslt.org/crypto
  • "Hidden" extensions that provides basic crypto functions (apparently from patch [3], introduced in July 5 2004 [4])
  • See also [5]
  • CAUTION — These extensions are not available if using a custom implementation of Python like Anaconda
xsltproc --dumpextensions|grep crypto
# {http://exslt.org/crypto}rc4_decrypt
# {http://exslt.org/crypto}md4
# {http://exslt.org/crypto}sha1
# {http://exslt.org/crypto}md5
# {http://exslt.org/crypto}rc4_encrypt
Example of use:
<xsl:template match="rootnode">
<xsl:value-of select="crypto:md5('ahahah')"/>
</xsl:template>

Quick reference

xsl:attribute

Input Output
<link site="www.stackoverflow.com"/>
<a href="http://www.stackoverflow.com">Click here</a>

Use

<xsl:template match="link">
    <a>
        <xsl:attribute name="href">
            <xsl:text>http://</xsl:text><xsl:value-of select="@site"/>
        </xsl:attribute>
        <xsl:text>Link</xsl:text>
    </a>
</xsl:template>

Or shorter using curly braces {...} [6]:

<xsl:template match="link">
    <a href="http://{@site}">Click here</a>
</xsl:template>

Also for: