Книга: 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.
- XSLT и JavaScript в Internet Explorer
- Обработка ошибок разбора
- Internet Explorer и динамические стили
- Internet Explorer и участки данных XML
- Вызов Java непосредственно из процессоров XSLT
- Работа с API XSLT для Java
- Взаимодействие Xalan с Java
- Взаимодействие Saxon с Java
- Взаимодействие процессора XSLT Oracle с Java
- Взаимодействие XT с Java
- Преобразование XML в реляционную базу данных
- Применение XSLT с активными серверными страницами
- Применение XSLT с Java Server Pages
- Применение XSLT с сервлетами Java
- Применение XSLT с сервлетами Java
- Асинхронное удаленное взаимодействие
- Xalan
- Взаимодействие Saxon с Java
- Взаимодействие с исходящим HTTP-ответом
- Применение XSLT с Java Server Pages
- Работа с API XSLT для Java
- Интерактивное взаимодействие
- Взаимодействие XT с Java
- Вызов Java непосредственно из процессоров XSLT
- Процессор Xalan
- 9.3. Базовое межпроцессное взаимодействие: каналы и очереди FIFO