Potřebujete pomoci s XSLT?
Nabízím školení, konzultace, vývoj XSLT kódu na zakázku. Nevájte a kontaktujte mne.

Podpořte provoz stránek
Platba probíhá pomocí služby PayPal a je možné platit kartou nebo převodem z vašeho PayPal účtu.

12.4 Rozšiřující instrukce

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.

© Jiří Kosek 2014

Tento dokument je určen výhradně pro osobní potřebu seznámení s jazykem XSLT. Jakékoliv jiné použití, včetně dalšího šíření, pořizování kopií, použití při školeních a výuce apod. je výslovně zakázáno a bude považováno za porušení autorských práv.


Copyright © 2000-2014 Jiří Kosek