Книга: XSLT

Взаимодействие Xalan с Java

Взаимодействие Xalan с Java

Несмотря на свой размер, Xalan — один из простейших процессоров XSLT для взаимодействия с Java. В качестве примера я создал новый класс Java, xalanjava, и для осуществления XSLT-преобразования к нему положено обращаться следующим образом:

C:>java xalanjava planets.xml planets.xsl planets.html

Чтобы создать XSLT-преобразование, я начну с создания объекта класса TransformerFactory в классе xalanjava:

import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.stream.StreamSource;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerConfigurationException;
import java.io.FileOutputStream;
import java.iо.FileNotFoundException;
import java.io.IOException;
public class xalanjava {
 public static void main(String[] args)
  throws TransformerException, TransformerConfigurationException,
  FileNotFoundException, IOException {
  TransformerFactory tFactory = TransformerFactory.newInstance();
  .
  .
  .

Имена документа XML, документа XSL и результирующего документа были нам переданы в аргументах соответственно как args[0], args[1] и args[2]. На следующем шаге нужно загрузить документ XSL в новый созданный мной объект TransformerFactory. Для этого я создал объект StreamSource и передал его в метод newTransformer объекта TransformerFactory, чтобы создать новый объект Transformer:

import javax.xml.transform.Transformer;
.
.
.
public class xalanjava {
 public static void main(String[] args)
  throws TransformerException, TransformerConfigurationException,
  FileNotFoundException, IOException {
  TransformerFactory tFactory = TransformerFactory.newInstance();
  Transformer transformer =
   tFactory.newTransformer(new StreamSource(args[1]));
  .
  .
  .

Объект transformer реализует XSLT-преобразование. Для того чтобы выполнить такое преобразование, нужно вызвать метод transform этого объекта, передав ему соответствующий XML-документу объект StreamSource и соответствующий результирующему документу объект StreamResult:

import javax.xml.transform.Transformer;
.
.
.
public class xalanjava {
 public static void main(String[] args)
  throws TransformerException, TransformerConfigurationException,
  FileNotFoundException, IOException {
  .
  .
  .
  transformer.transform(new StreamSource(args[0]),
   new StreamResult(new FileOutputStream(args[2])));
 }
}

Вот полный файл Java, xalanjava.java (листинг 10.7).

Листинг 10.7. xalanjava.java, взаимодействие Xalan с Java

import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.stream.StreamSource;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerConfigurationException;
import java.io.FileOutputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
public class xalanjava {
 public static void main(String[] args)
  throws TransformerException, TransformerConfigurationException,
  FileNotFoundException, IOException {
  TransformerFactory tFactory = TransformerFactory.newInstance();
  Transformer transformer =
   tFactory.newTransformer(new StreamSource(args[1]));
  transformer transform(new StreamSource(args[0]),
   new StreamResult(new FileOutputStream(args[2])));
 }
}

Чтобы скомпилировать файл xalanjava.java в xalanjava.class и выполнить этот класс, задайте classpath так, чтобы путь включал Xalan и разборщик XML, который вы обычно используете с Xalan, Xerces (о Xerces говорилось в главе 1, в том числе и о том, где его взять), — в Windows это будет выглядеть так (как всегда, пишите пути в соответствии со своей системой):

C:>set classpath=.;c:xalanxalan.jar;c:xalanxerces.jar

Затем скомпилируйте xalanjava.java компилятором с Java, javac:

C:>javac xalanjava.java

Здесь считается, что путь к javac.exe прописан, и его можно сразу активизировать из командной строки. (Как правило, компилятор Java javac.exe находится в каталоге Java bin — поэтому если путь к нему не задан, к нему можно обратиться, например, так: C:>c:jdk1.3binjavac xalanjava.java.) Компилятор Java создаст файл xalanjava.class, при помощи которого производится преобразование:

C:>java xalanjava planets.xml planets.xsl planets.html

При этом из файлов planets.xml и planets.xsl будет создан файл planets.html — здесь я его создал при помощи своего собственного класса Java.

РАБОТА С ПАКЕТОМ JAXP ФИРМЫ SUN ДЛЯ XSLT

Фирма Sun, создатель Java, обладает пакетом Java для обработки XML, JAXP, который можно загрузить с http://java.sun.com/xml. JAXP способен также осуществлять XSLT-преобразования. Но я не буду отдельно рассматривать JAXP в текущей главе, поскольку этот пакет (по крайней мере, сейчас) для всех своих преобразований использует Xalan, поставляемый в xalan.jar. Значит, предыдущий пример, листинг 10.7, без всяких изменений можно использовать с пакетом JAXP.

Оглавление книги


Генерация: 0.843. Запросов К БД/Cache: 3 / 0
поделиться
Вверх Вниз