Většina XSLT procesorů nabízí rovněž rozšiřující instrukce. Mnohdy je možné psát i vlastní instrukce a ty pak v transformacích používat.
Příklad 12.6. Využití rozšiřujících instrukcí Saxonu pro přístup do SQL
databáze – sqlext.xsl
<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sql="http://saxon.sf.net/sql" extension-element-prefixes="sql" version="2.0"> <!-- SQL extenze pro Saxon funguje jen s PE/EE verzí - v konfiguračním souboru (config.xml) musí být zaregistrována SQL extenze - v classpath musí být saxon-sql.jar i JDBC ovladač - v oXygenu bylo potřeba JDBC ovladač nakopírovat do adresáře lib - spuštění z cmd: java -cp "c:\Program Files\Microsoft SQL Server 2005 JDBC Driver\sqljdbc_1.2\enu\sqljdbc.jar;c:\saxon9ee\saxon9ee.jar;c:\saxon9ee\saxon9-sql.jar" net.sf.saxon.Transform -config:config.xml -it:main sqlext.xsl --> <!-- Na SQL serveru je potřeba povolit SQL autentizaci a přístup přes TCP/IP Pozor na firewall a porty --> <xsl:param name="driver" select="'com.microsoft.sqlserver.jdbc.SQLServerDriver'"/> <xsl:param name="database" select="'jdbc:sqlserver://192.168.231.140:1433'"/> <xsl:param name="user">sa</xsl:param> <xsl:param name="password">lopata</xsl:param> <xsl:output indent="yes"/> <xsl:template name="main"> <xsl:variable name="connection" as="java:java.sql.Connection" xmlns:java="http://saxon.sf.net/java-type"> <sql:connect driver="{$driver}" database="{$database}" user="{$user}" password="{$password}"> <xsl:fallback> <xsl:message terminate="yes">SQL extensions are not installed</xsl:message> </xsl:fallback> </sql:connect> </xsl:variable> <xsl:variable name="zamestnanci"> <sql:query connection="$connection" table="[Northwind].[dbo].[Employees]" column="FirstName, LastName, HireDate" where="TitleOfCourtesy LIKE 'Ms.'" row-tag="employee"/> </xsl:variable> Počet zaměstnankyň: <xsl:value-of select="count($zamestnanci/employee)"/> Křestní jména: <xsl:value-of select="$zamestnanci/employee/col[1]" separator=", "/> Celý výsledek: <xsl:copy-of select="$zamestnanci"/> </xsl:template> </xsl:stylesheet>
Dalším příkladem může být například rozšiřující instrukce umožňující využití lokalizační knihovny GNU Gettext společně se Saxonem, viz http://xmlguru.cz/2006/10/saxon-gettext.