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

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«C++. Π‘Π±ΠΎΡ€Π½ΠΈΠΊ Ρ€Π΅Ρ†Π΅ΠΏΡ‚ΠΎΠ²Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 129

Автор Π”. БтСфСнс

 </xsl:template>


 <xsl:template match="veterinarian|trainer">

  <td>

   <table>

    <tr>

     <th>name:</th>

     <td>

      <xsl:value-of select="attribute::name"/>

     </td>

    </tr>

    <tr>

     <th>phone:</th>

     <td><xsl:value of select="attribute::phone"/></td>

    </tr>

   </table>

  </td>

 </xsl:template>

</xsl:stylesheet>

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 14.20. ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ стилСй animals.xsl для Ρ„Π°ΠΉΠ»Π° animals.xml с использованиСм Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Xalan

#include <exception>

#include <iostream> // cout

#include <xalanc/Include/PlatformDefinitions.hpp>

#include <xalanc/XalanTransformer/XalanTransformer.hpp>

#include <xalanc/XSLT/XSLTInputSource.hpp>

#include <xalanc/XSLT/XSLTResultTarget.hpp>

#include <xercesc/util/PlatformUtils.hpp>

#include "xerces_strings.hpp" // ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 14.4


using namespace std;

using namespace xercesc;

using namespace xalanc;


// Π£Ρ‚ΠΈΠ»ΠΈΡ‚Π° RAII, которая ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ парсСр ΠΈ освобоТдаСт рСсурсы

// ΠΏΡ€ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄Π΅ ΠΈΠ· области видимости

struct XalanInitializer {

 XalanInitializer() {

  XMLPlatformUtils::Initialize();

  XalanTransformer::initialize();

 }

 ~XalanInitializer() {

  XalanTransformer::terminate();

  XMLPlatformUtils::Terminate();

 }

};


int main() {

 try {

  XalanInitializer init; // Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Xalan.

  XalanTransformer xslt; // ΠšΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΎΡ€ XSLT.

  XSLTInputSource xml("animals.xml"); // Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ XML ΠΈΠ·

                                      // ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° 14.1

  XSLTInputSource xsl("animals.xsl"); // Π’Π°Π±Π»ΠΈΡ†Π° стилСй ΠΈΠ·

                                      // ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° 14.19.

  XSLTResultTarget html("animals.html"); // Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния xslt.

  // Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅.

  if (xslt.transform(xml, xsl, html) != 0) {

   cout << "xml error: " << xslt.getLastError() << "\n";

  }

 } catch (const XMLException& e) {

  cout << "xml error " << toNative(e.getMessage()) << "\n";

  return EXIT_FAILURE;

 } catch (const exception& e) {

  cout << e.what() << "\n";

  return EXIT_FAILURE;

 }

}

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 14.21. Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ HTML, сгСнСрированный ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ ΠΈΠ· ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° 14.20

<html>

 <head>

  <ΠœΠ•Π’Π http-equiv="Content Type" content="text/html; charset=UTF-8">

  <title>Feldman Family Circus Animals</title>

 </head>

 <body>

  <h1>Feldman Family Circus Animals</h1>

  <table cellpadding="3" border="1">

   <tr>

    <th>Name</th>

    <th>Species</th>

    <th>Date of Birth</th>

    <th>Veterinarian</th>

    <th>Trainer</th>

   </tr>

   <tr>

    <td>Herby</td>

    <td>elephant</td>

    <td>1992-04-23</td>

    <td>

     <table>

      <tr><th>name:</th><td>Dr. Hal Brown</td></tr>

      <tr><th>phone:</th><td>(801)595-9627</td></tr>

     </table>

    </td>

    <td>

     <table>

      <tr><th>name:</th><td>Bob Fisk</td></tr>

      <tr><th>phone:</th><td>(801)881-2260</td></tr>

     </table>

    </td>

   </tr>

   <tr>

    <td>Sheldon</td>

    <td>parrot</td>

    <td>1998-09-30</td>

    <td>

     <table>

      <tr><th>name:</th><td>Dr. Kevin Wilson</td></tr>

      <tr><th>phone:</th><td>(801)466-6498</td></tr>

     </table>

    </td>

    <td>

     <table>

      <tr><th>name:</th><td>Eli Wendel</td></tr>

      <tr><th>phone:</th><td>(801)929-2506</td></tr>

     </table>

    </td>

   </tr>

   <tr>

    <td>Dippy</td>

    <td>penguin</td>

    <td>2001-06-08</td>

    <td>

     <table>

      <tr><th>name:</th><td>Dr. Barbara Swayne</td></tr>

      <tr><th>phone:</th><td>(801)459-7746</td></tr>

     </table>

    </td>

    <td>

     <table>

      <tr><th>name:</th><td>Ben Waxman</td></tr>

      <tr><th>phone:</th><td>(801)882-3549</td></tr>

     </table>

    </td>

   </tr>

  </table>

 </body>

</html>

ΠžΠ±ΡΡƒΠΆΠ΄Π΅Π½ΠΈΠ΅

XSL-ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ (стандарт XSLT) прСдставляСт собой язык прСобразования Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² XML Π² Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ XML. XSLT являСтся ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· элСмСнтов сСмСйства спСцификаций Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅ΠΌΡ‹Ρ… языков описания Ρ‚Π°Π±Π»ΠΈΡ† стилСй (Extensible Stylesheet Language β€” XSL), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ обСспСчиваСт Π±Π°Π·ΠΎΠ²Ρ‹Π΅ срСдства для Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ прСдставлСния Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² XML Однако XSLT ΠΏΠΎΠ»Π΅Π·Π΅Π½ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ; Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π²Π΅Π±-сСрвСрами ΠΏΡ€ΠΈ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ HTML-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Β«Π½Π° Π»Π΅Ρ‚ΡƒΒ» ΠΈ Ρ‚Π°ΠΊΠΈΠΌΠΈ систСмами Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², ΠΊΠ°ΠΊ DocBook.

ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΡ XSLT ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ Π² Π²ΠΈΠ΄Π΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² XML, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Ρ… Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ стилСй (stylesheets). Π’Π°Π±Π»ΠΈΡ†Π° стилСй ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ исходного Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° ΠΈ формирования Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° (result document). Π’Π°Π±Π»ΠΈΡ†Π° стилСй состоит ΠΈΠ· Π½Π°Π±ΠΎΡ€Π° шаблонов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ ΡƒΠ·Π»Ρ‹ исходного Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° ΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ для получСния Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ΠΎΠ² Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°. Π¨Π°Π±Π»ΠΎΠ½Ρ‹ рСкурсивно ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ ΠΊ исходному Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρƒ, гСнСрируя Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹ Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° ΠΎΠ΄ΠΈΠ½ Π·Π° Π΄Ρ€ΡƒΠ³ΠΈΠΌ, ΠΏΠΎΠΊΠ° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΎ Π½ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ соотвСтствия. Условия соотвСтствия Π·Π°ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ языка XPath, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½ΠΎΠ³ΠΎ для извлСчСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… строк, чисСл, Π±ΡƒΠ»Π΅Π²Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈ Π½Π°Π±ΠΎΡ€ΠΎΠ² ΡƒΠ·Π»ΠΎΠ² ΠΈΠ· Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² XML.

Π’Π°Π±Π»ΠΈΡ†Π° стилСй прСдставлСнная Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ 14.19, состоит ΠΈΠ· Ρ‚Ρ€Π΅Ρ… шаблонов. Π’ Π³Π»Π°Π²Π½ΠΎΠΌ шаблонС Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ match Ρ€Π°Π²Π΅Π½ /, Ρ‚.Π΅. ΠΎΠ½ соотвСтствуСт ΠΊΠΎΡ€Π½ΡŽ ΠΈΡΡ…ΠΎΠ΄Π½ΠΎΡŽ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ ΡƒΠ·Π»Ρƒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ являСтся Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΌ ΡƒΠ·Π»ΠΎΠΌ ΠΏΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡŽ ΠΊ ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΌΡƒ элСмСнту Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° ΠΈ Π»ΡŽΠ±Ρ‹ΠΌ инструкциям ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ коммСнтариям Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ уровня. ΠŸΡ€ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ этого шаблона гСнСрируСтся Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° HTML, содСрТащий Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ Β«Π–ΠΈΠ²ΠΎΡ‚Π½Ρ‹Π΅ Ρ†ΠΈΡ€ΠΊΠ° Feldman Family CircusΒ» ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ с ΠΎΠ΄Π½ΠΎΠΉ строкой, состоящСй ΠΈΠ· пяти элСмСнтов th с ΠΌΠ΅Ρ‚ΠΊΠ°ΠΌΠΈ Name, Species, Date of Birth, Veterinarian ΠΈ trainer. Π­Ρ‚ΠΎΡ‚ шаблон содСрТит элСмСнт apply-templates, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ соотвСтствуСт Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ animal. Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ шаблон Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ стилСй с Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠΌ соотвСтствия animal β€” Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ элСмСнту animal, Π΄ΠΎΡ‡Π΅Ρ€Π½Π΅ΠΌΡƒ ΠΏΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡŽ ΠΊ ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΌΡƒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρƒ, формируя строку Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π΄ΠΎΡ‡Π΅Ρ€Π½Π΅Π³ΠΎ элСмСнта. Π‘Ρ‚Ρ€ΠΎΠΊΠ°, сгСнСрированная для элСмСнта animal, состоит ΠΈΠ· пяти элСмСнтов td. ΠŸΠ΅Ρ€Π²Ρ‹Π΅ Ρ‚Ρ€ΠΈ элСмСнта td содСрТат тСкстовоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΡ… элСмСнтов animal (name, species ΠΈ dateOfBirth), ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅ΠΌΠΎΠ΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ инструкции XSLT value-of. ПослСдниС Π΄Π²Π° элСмСнта td содСрТат элСмСнты Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ ΠΏΡƒΡ‚Π΅ΠΌ примСнСния Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅Π³ΠΎ шаблона Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ стилСй с Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠΌ соотвСтствия veterinarian|trainer, примСняСмого ΠΊ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΌ элСмСнтам ΠΆΠΈΠ²ΠΎΡ‚Π½ΠΎΠ³ΠΎ veterinarian ΠΈ trainer.

Π₯отя Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ 14.20 мною ΡƒΠΊΠ°Π·Π°Π½Ρ‹ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ для Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ стилСй, исходного Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°, XSLTInputSources ΠΈ XSLTResultTargets ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ сконструированы ΠΈΠ· ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ C++, позволяя XalanTransformer ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΏΠΎΡ‚ΠΎΠΊ Π²Π²ΠΎΠ΄Π° ΠΈ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠΌ мСстС. Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, вмСсто получСния Π½Π° Π²Ρ…ΠΎΠ΄Π΅ экзСмпляров XSLTInputSource ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΎΡ€ XalanTransformer ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ скомпилированной Ρ‚Π°Π±Π»ΠΈΡ†Π΅ΠΉ стилСй, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π΅ΠΉ экзСмпляр xalanc::XalanCompiledStylesheet, ΠΈ с исходным Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ, ΠΏΡ€ΠΎΡˆΠ΅Π΄ΡˆΠΈΠΌ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ парсСром ΠΈ прСдставлСнным экзСмпляром xalanc::XalanParsedSource. Π­Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ 14.22. Если трСбуСтся ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΎΠ΄Π½Ρƒ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ стилСй ΠΊ нСскольким исходным Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌ, Π³ΠΎΡ€Π°Π·Π΄ΠΎ Π±ΠΎΠ»Π΅Π΅ эффСктивный Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ получаСтся ΠΏΡ€ΠΈ использовании XalanCompiledStylesheet, Ρ‡Π΅ΠΌ XSLTInputSource.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 14.22. Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ прСобразования XSLT с ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΡ‚ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ стилСй

/*

 * Ρ‚Π΅ ΠΆΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ #include, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ использовались Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ 14.20

 */


using namespace std;

using namespace xercesc;

using namespace xalanc;


/*

 * ΠžΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ XalanInitializer Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ 14.20

 */

int main() {