Использование класса XalanTransformer

Теперь, когда мы разобрались со всякого рода настройками, можно заняться самой программой. Типичный сценарий использования Xalan в программе можно проиллюстрировать следующим кодом:

Пример 9.2. Типовой сценарий использования Xalan

// Инициализируем Xerces
XMLPlatformUtils::Initialize();
// Инициализируем класс XalanTransformer
XalanTransformer::initialize();
// Создаём экземпляр класса XalatTransformer
XalanTransformer theXalanTransformer;

...
// Выполняем преобразование
theXalanTransformer.transform( ... );
...

// Освобождаем XalanTransformer
XalanTransformer::terminate();
// Освобождаем Xerces
XMLPlatformUtils::Terminate();

В соответствии с этим сценарием наша программа будет выглядеть следующим образом:

#include "StdAfx.h"
#include "util/PlatformUtils.hpp"
#include "XalanTransformer/XalanTransformer.hpp"
#include "strstream"

int main(int argc, const char* argv[])
{
  using std::cerr;

  // Инициализируем Xerces
  XMLPlatformUtils::Initialize();
  // Инициализируем класс XalanTransformer
  XalanTransformer::initialize();
  // Создаём экземпляр класса XalanTransformer
  XalanTransformer theXalanTransformer;

  // Выполняем преобразование
  int theResult = theXalanTransformer.transform("source.xml",
    "stylesheet.xsl", "document.out");

  // В случае, если произошла ошибка, выводим информацию о ней
  if(theResult != 0)
  {
    cerr << "XalanError: \n" << theXalanTransformer.getLastError();
  }

  // Освобождаем XalanTransformer
  XalanTransformer::terminate();
  // Освобождаем Xerces
  XMLPlatformUtils::Terminate();

  return theResult;
}