Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ «ВСхнология XSLTΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 110

Автор АлСксСй Π’Π°Π»ΠΈΠΊΠΎΠ²

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ способ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ с XML-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ посрСдством инструкции xml-stylesheet ассоциируСтся ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ Internet Explorer ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ прСобразования.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Листинг П1.1. Входящий Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ source.xml

<?xml-stylesheet type="text/xsl" href="stylesheet.xsl"?>

<date>18.10.2001</date>

Листинг П1.2. ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ stylesheet.xsl

<?xml version="1.0" encoding="windows-1251"?>

<xsl:stylesheet

 version="1.0"

 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">


 <xsl:template match="/">

  <html>

   <head>

    <title>Today is page</title>

   </head>

   <body>

    <xsl:apply-templates select="date"/>

   </body>

  </html>

 </xsl:template>


 <xsl:template match="date">

  <H1>

   <xsl:text>БСгодня </xsl:text>

   <xsl:value-of select="."/>

  </H1>

 </xsl:template>


</xsl:stylesheet>

Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ source.xml Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅ Internet Explorer ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ (рис. ΠŸ1.4).

Рис. П1.4. Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ source.xml, ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½Π½Ρ‹ΠΉ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΎΠΌ Internet Explorer

Π”Ρ€ΡƒΠ³ΠΈΠΌ, Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠΌ являСтся использованиС ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки msxsl.exe, которая Ρ‚Π°ΠΊΠΆΠ΅ доступна Π½Π° Web-сайтС MSDN. Π­Ρ‚Π° ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° Π΅ΡΡ‚ΡŒ Π½Π΅ Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅ΠΌ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° для MSXML, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π°Ρ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ основной ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки.

ИспользованиС msxsl.exe ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ стандартно: для примСнСния прСобразования stylesheet.xsl ΠΊ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρƒ source.xml ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° Π² Ρ„Π°ΠΉΠ»Π΅ result.xml Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

msxsl.exe source.xml stylesheet.xsl -ΠΎ result.xml

Π Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ

MSXML ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ написаны Π½Π° скриптовых языках VBScript ΠΈ JScript ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ нСпосрСдствСнно Π² сами прСобразования.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Листинг П1.3. Входящий Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚

<?xml version="1.0" encoding="windows-1251"?>

<page>БСгодня <date/>.</page>

Листинг П1.4. ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅

<xsl:stylesheet version="1.0"

 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"

 xmlns:msxsl="urn:schemas-microsoft-com:xslt"

 xmlns:ext="urn:extension-functions"

 exclude-result-prefixes="msxsl ext">


 <xsl:output encoding="windows-1251"/>


 <msxsl:script

  language="JavaScript"

  implements-prefix="ext">

  function date() {


   now = new Date;


   return now.getDate() + '.' +

    (now.getMonth() + 1) + '.' +

    now.getYear();

  }

 </msxsl:script>


 <xsl:template match="/">

  <html>

   <head>

    <title>Today is page</title>

   </head>

   <body>

    <xsl:apply-templates/>

   </body>

  </html>

 </xsl:template>


 <xsl:template match="date">

  <xsl:value-of select="ext:date()"/>

 </xsl:template>


</xsl:stylesheet>

Листинг П1.5. Выходящий Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚

<html>

 <head>

  <META

   http-equiv="Content-Type"

   content="text/html;

   charset=windows-1251">

  <title>Today is page</title>

 </head>

 <body>БСгодня 18.10.2001.</body>

</html>

Как ΠΈ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… Π΄Ρ€ΡƒΠ³ΠΈΡ… процСссорах, Π² MSXML прСдусмотрСна функция Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ node-set, которая ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ Π΄Π΅Ρ€Π΅Π²Π° Π²ΠΎ мноТСство ΡƒΠ·Π»ΠΎΠ². Ѐункция node-set ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ пространству ΠΈΠΌΠ΅Π½ с URI "urn:schemas-microsoft-com:xslt", ΠΈ стандартным сцСнариСм Π΅Π΅ использования Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ:

<xsl:stylesheet

 version="1.0"

 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"

 xmlns:msxsl="urn:schemas-microsoft-com:xslt"

 exclude-result-prefixes="msxsl ">


 <!-- ... -->


 <xsl:variable name="tree">

  <!-- ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ, содСрТащая Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ Π΄Π΅Ρ€Π΅Π²Π° -->

  <item>A</item>

  <item>B</item>

 </xsl:variable>


 <!-- ... -->


 <xsl:template ... >

  <!-- ΠžΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ $tree, ΠΊΠ°ΠΊ ΠΊΠΎ мноТСству ΡƒΠ·Π»ΠΎΠ² -->

  <xsl:value-of select="msxsl:node-set($tree)/item[1]"/>

 </xsl:template>


</xsl:stylesheet>

К соТалСнию, тСкущая вСрсия MSXML Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΌΠΈ элСмСнтами.

ΠŸΡ€ΠΎΡ†Π΅ΡΡΠΎΡ€ Xalan

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ характСристики.

β–‘ ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹: Java, Π‘++.

β–‘ Π Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ: Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ элСмСнты Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ.

β–‘ ΠŸΠΎΠ»Π½ΠΎΡ‚Π° Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ: ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΡ€ΠΎΡ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Ρ… процСссоров. β–‘ Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ: Apache XML Project.

β–‘ URL: http://xml.apache.org.

Xalan β€” это ΠΎΡ‡Π΅Π½ΡŒ извСстный XSLT-процСссор, созданный Π² Ρ€Π°ΠΌΠΊΠ°Ρ… Apache XML Project для языковых ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ Java ΠΈ Π‘++. Xalan, ΠΊΠ°ΠΊ ΠΈ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Ρ‹ Apache XML Project, поставляСтся с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ ΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ API, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ Π΅Π³ΠΎ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΡ€ΠΈΠ²Π»Π΅ΠΊΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ для ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ Π² Π΄Ρ€ΡƒΠ³ΠΈΠ΅ прилоТСния.

ИспользованиС

По сути Π΄Π΅Π»Π°, Xalan Java ΠΈ Xalan C++ β€” это Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ XSLT-прСобразования Π² собствСнных ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ…. Xalan Java ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π½Π°Π±ΠΎΡ€ интСрфСйсов TrAX (ΠΎΡ‚ Π°Π½Π³Π». transformation API for XML β€” ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ интСрфСйс ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΉ для XML), ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰ΠΈΠΉ стандартныС ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ прСобразования XML-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Π² Java-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ….

Помимо этого, ΠΈ Xalan Java ΠΈ Xalan Π‘++ ΠΏΡ€Π΅Π΄ΡƒΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ выполнСния ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΉ ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки. Для Xalan Java стандартный Π²Ρ‹Π·ΠΎΠ² Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊ:

java org.apache.xalan.xslt.Process -in source.xml -xsl stylesheet.xsl -OUT result.xml

Если ΠΏΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ выполнСния этой ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ выдаСтся сообщСниС Π²ΠΈΠ΄Π°:

Exception in thread "main" java.lang.NoClassDefFoundError:

org/apache/xalan/xslt/Process

это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° xalan.jar Π½Π΅ прописана Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ окруТСния CLASSPATH, Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Xalan Π² этом случаС ΠΌΠΎΠΆΠ½ΠΎ, ΡƒΠΊΠ°Π·Π°Π² xalan.jar Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°Ρ… явным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

java -cp xalan.jar org.apache.xalan.xslt.Process -in source.xml -xsl stylesheet.xsl -out result.xml

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Xalan Π‘++ ΠΈΠΌΠ΅Π΅Ρ‚ нСсколько Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² для ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ Windows 32, Linux, AIX, HP-UX ΠΈ Solaris, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Ρ‚Π°ΠΊΠΆΠ΅ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρƒ TestXSLT, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΡƒΡŽ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ прСобразования ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки:

TestXSLT -in source.xml -xsl stylesheet.xsl -out result.xml

Π Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ

Xalan Π‘++ позволяСт Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ Π² XSLT-ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ, написанныС Π½Π° языкС Π‘. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π² Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ Π±Π°Π·ΠΎΠ²Ρ‹ΠΌ функциям XSLT, Xalan Π‘++ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ нСсколько Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ nodeset. Π’ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ вСрсии (1.2) Xalan Π‘++ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ элСмСнты Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ.

ВозмоТности Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ Xalan Java Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π±ΠΎΠ³Π°Ρ‡Π΅. Xalan Java, ΠΊΠ°ΠΊ ΠΈ Xalan Π‘++, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ (которая ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Xalan Π‘++ Ρ‚Π°ΠΊΠΆΠ΅ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΡˆΠΈΡ€Π΅). Помимо этого, Xalan Java позволяСт ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ элСмСнты Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ Π½Π° Java ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… языках программирования.

ΠžΡΡ‚Π°Π½ΠΎΠ²ΠΈΠΌΡΡ Π½Π° послСднСм ΠΏΡƒΠ½ΠΊΡ‚Π΅ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ. Xalan позволяСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ BSF (ΠΎΡ‚ Π°Π½Π³Π». bean scripting framework β€” систСма скриптовых языков для bean-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚). BSF β€” это Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°, которая позволяСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ скриптовыС языки Π² Java-прилоТСниях ΠΈ Π°ΠΏΠΏΠ»Π΅Ρ‚Π°Ρ…. На Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ BSF позволяСт Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ Π² Xalan Java Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… скриптовых языках:

β–‘ Mozilla Rhino (фактичСски, Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ JavaScript);

β–‘ NetRexx;

β–‘ BML;

β–‘ JPython;

β–‘ Jacl;

β–‘ PerlScript;

β–‘ VBScript;

β–‘ JavaScript.

ΠŸΡ€ΠΎΡ†Π΅ΡΡΠΎΡ€ Saxon

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ характСристики.

β–‘ ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹: Java.

β–‘ Π Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ: Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ элСмСнты Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ Π½Π° Java.

β–‘ ΠŸΠΎΠ»Π½ΠΎΡ‚Π° Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ: практичСски идСальная.

β–‘ Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ: Майкл КСй.

β–‘ URL: http://saxon.sourceforge.net.

XSLT-процСссор Saxon Π±Ρ‹Π» Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ ΠΈ Π΄ΠΎ сих ΠΏΠΎΡ€ поддСрТиваСтся СдинствСнным Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠΎΠΌ β€” Майклом КССм (Michael Kay), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π² настоящий ΠΌΠΎΠΌΠ΅Π½Ρ‚ являСтся Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ΠΎΠΌ спСцификации XSLT 2.0. ΠŸΡ€ΠΎΡ†Π΅ΡΡΠΎΡ€ Saxon, Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΊΠ°ΠΊ ΠΈ Xalan, являСтся бСсплатным open-source ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠΌ.

На Web-сайтС Saxon доступны Π΄Π²Π° Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° процСссора β€” ΠΏΠΎΠ»Π½Ρ‹ΠΉ Saxon ΠΈ облСгчСнная вСрсия, скомпилированная для Windows β€” Instant Saxon, которая Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ всСго 400 ΠΊΠΈΠ»ΠΎΠ±Π°ΠΉΡ‚ Π² Π°Ρ€Ρ…ΠΈΠ²Π΅, Π½ΠΎ практичСски Π½Π΅ уступаСт ΠΏΠΎΠ»Π½ΠΎΠΉ вСрсии ΠΏΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ особым ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠ½ΡƒΡ‚ΡŒ ΠΏΠΎΠ»Π½ΠΎΡ‚Ρƒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Saxon. Майкл КСй являСтся извСстным спСциалистом ΠΏΠΎ XSLT, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ удСляСт ΠΊΠΎΠ½ΡΡƒΠ»ΡŒΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Π² спискС-рассылкС XSL List. Π‘Ρ‚ΠΎΠ»ΡŒ плотная Ρ€Π°Π±ΠΎΡ‚Π° с ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΌΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌΠΈ позволяСт Π΅ΠΌΡƒ быстро Ρ€Π΅Π°Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Π΄ΠΎΠΏΡƒΡ‰Π΅Π½Π½Ρ‹Ρ… ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ… ΠΈ нСсоотвСтствиях. Как Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹ΠΉ ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹ΠΉ ΠΈΠΌ процСссор считаСтся ΠΎΠ±Ρ€Π°Π·Ρ†ΠΎΠΌ соотвСтствия стандарту XSLT. Π’ Ρ†Π΅Π»ΠΎΠΌ, Saxon ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠ°ΠΊ Π²Ρ‹Π΄Π°ΡŽΡ‰ΠΈΠΉΡΡ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ ΠΎΡ‚ Π²Ρ‹Π΄Π°ΡŽΡ‰Π΅Π³ΠΎΡΡ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ°.