XSLT: Difference between revisions

From miki
Jump to navigation Jump to search
Line 6: Line 6:
* http://xmlsoft.org/XSLT/xslt.html
* http://xmlsoft.org/XSLT/xslt.html
: Gnome library
: Gnome library

;exslt (extensions)
* http://exslt.org/
:Extensions supported in libxml (<code>xsltproc</code> processor)

== Overview ==
* Currently there are two versions of the XSLT standards: '''XSLT 1.0''' and '''XSLT 2.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}}).


== Extensions ==
== Extensions ==

Revision as of 08:10, 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.
  • On linux, the standard XSLT 1.0 processor is xsltproc (from package xsltproc, libxml2 library). The standard XSLT 2.0 processor is saxonb-xslt (from package libsaxonb-java).

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: