Чтение онлайн

на главную - закладки

Жанры

Холзнер Стивен

Шрифт:

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:\xalan\xalan.jar;c:\xalan\xerces.jar

Затем скомпилируйте

xalanjava.java
компилятором с Java,
javac
:

C:\>javac xalanjava.java

Здесь считается, что путь к

javac.exe
прописан, и его можно сразу активизировать из командной строки. (Как правило, компилятор Java javac.exe находится в каталоге Java bin — поэтому если путь к нему не задан, к нему можно обратиться, например, так:
C:\>c:\jdk1.3\bin\javac 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, который можно загрузить сJAXP способен также осуществлять XSLT-преобразования. Но я не буду отдельно рассматривать JAXP в текущей главе, поскольку этот пакет (по крайней мере, сейчас) для всех своих преобразований использует Xalan, поставляемый в xalan.jar. Значит, предыдущий пример, листинг 10.7, без всяких изменений можно использовать с пакетом JAXP.

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

Процессор Saxon также определяет API для работы с Java, но, конечно, в деталях этот прикладной интерфейс отличается от API Xalan. Для демонстрации создания преобразований при помощи Saxon API версии 6.0.2 я создам новый класс Java

saxonjava
. Начать нужно с создания нового объекта
XSLTProcessor
, вызвав метод
newInstance
класса
Processor
в файле
saxonjava.java
:

import java.io.*;

import org.xml.sax.*;

import org.w3c.dom.*;

import com.icl.saxon.trax.*:

public class saxonjava {

 public static void main(String args[])

throws ProcessorException, ProcessorFactoryException,

TransformException, SAXException, IOException {

Processor processor = Processor.newInstance("xslt");

.

.

.

Затем

необходимо создать объект
Templates
на основе таблицы стилей XSL, которую мы хотим применить, хранимой в
args[1]
. Это можно сделать при помощи класса
InputSource
:

import java.io.*;

.

.

.

public class saxonjava {

 public static void main(String args[])

throws ProcessorException, ProcessorFactoryException,

TransformException, SAXException, IOException {

Processor processor = Processor.newInstance("xslt");

Templates templates =

processor.process(new InputSource(args[1]));

.

.

.

 }

}

При помощи нового объекта

Templates
можно создать объект
Transformer
, который в действительности делает работу:

import java.io.*;

.

.

.

public class saxonjava {

 public static void main(String args[])

throws ProcessorException, ProcessorFactoryException,

TransformException, SAXException, IOException {

Processor processor = Processor.newInstance("xslt");

Templates templates =

processor.process(new InputSource(args[1]));

Transformer transformer = templates.newTransformer;

.

.

.

 }

}

Наконец, чтобы осуществить XSLT-преобразование, нужно вызвать метод

transform
объекта
transformer
, записывая результат в выходной документ при помощи объекта
FileWriter
(листинг 10.8).

Листинг 10.8. saxonjava.java, взаимодействие Saxon с Java
Поделиться:
Популярные книги

Камень Книга седьмая

Минин Станислав
7. Камень
Фантастика:
фэнтези
боевая фантастика
6.22
рейтинг книги
Камень Книга седьмая

Я сделаю это сама

Кальк Салма
1. Магический XVIII век
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Я сделаю это сама

Кровь на эполетах

Дроздов Анатолий Федорович
3. Штуцер и тесак
Фантастика:
альтернативная история
7.60
рейтинг книги
Кровь на эполетах

Сыночек в награду. Подари мне любовь

Лесневская Вероника
1. Суровые отцы
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Сыночек в награду. Подари мне любовь

Кодекс Крови. Книга ХII

Борзых М.
12. РОС: Кодекс Крови
Фантастика:
боевая фантастика
попаданцы
5.00
рейтинг книги
Кодекс Крови. Книга ХII

Найди меня Шерхан

Тоцка Тала
3. Ямпольские-Демидовы
Любовные романы:
современные любовные романы
короткие любовные романы
7.70
рейтинг книги
Найди меня Шерхан

Идеальный мир для Лекаря 4

Сапфир Олег
4. Лекарь
Фантастика:
фэнтези
юмористическая фантастика
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 4

Релокант. По следам Ушедшего

Ascold Flow
3. Релокант в другой мир
Фантастика:
фэнтези
попаданцы
рпг
5.00
рейтинг книги
Релокант. По следам Ушедшего

Мир-о-творец

Ланцов Михаил Алексеевич
8. Помещик
Фантастика:
альтернативная история
5.00
рейтинг книги
Мир-о-творец

Протокол "Наследник"

Лисина Александра
1. Гибрид
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Протокол Наследник

Кодекс Охотника. Книга VII

Винокуров Юрий
7. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
4.75
рейтинг книги
Кодекс Охотника. Книга VII

Попаданка в семье драконов

Свадьбина Любовь
Попаданка в академии драконов
Любовные романы:
любовно-фантастические романы
7.37
рейтинг книги
Попаданка в семье драконов

Новые горизонты

Лисина Александра
5. Гибрид
Фантастика:
попаданцы
технофэнтези
аниме
сказочная фантастика
фэнтези
5.00
рейтинг книги
Новые горизонты

Скрываясь в тени

Мазуров Дмитрий
2. Теневой путь
Фантастика:
боевая фантастика
7.84
рейтинг книги
Скрываясь в тени