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

на главную

Жанры

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

Шрифт:

Каждый из процессоров XSLT Xalan, Saxon, XT и Oracle определяет API, к которому можно обращаться из Java. Достаточно только проверить, что нужные файлы JAR находятся в

classpath
Java. Мы уже рассматривали, как работать с файлами JAR и путями к классам, в главе 1; теперь мы перейдем к написанию кода на Java, а не просто выполнению предопределенных классов из командной строки. Код можно загрузить споэтому если вы не программист на Java, можете пропустить эту часть главы.

Работа с API XSLT для Java

Во всех основанных на Java процессорах XSLT определен объемный интерфейс, API,

для связи с Java. Как правило, при помощи API вызываются методы и создаются объекты Java, как мы увидим в этой главе. Но все процессоры XSLT определяют свои API по-разному, и обычно эти API довольно велики, поскольку каждый процессор может создавать собственные иерархии классов по своему усмотрению. В следующих разделах мы пройдем по этапам создания XSLT-преобразований из Java с использованием процессоров XSLT Xalan, Saxon, XT и Oracle. Все их возможности описаны в документации. Заметьте, что описание API большинства этих процессоров может само занять отдельную книгу, потому наше обсуждение вынужденно представляет собой лишь краткий обзор.

НАЗВАНИЯ ФАЙЛОВ JAVA

В отличие от остальных примеров книги, при создании файлов Java имеет значение имя файла. Java требует, чтобы имя файла совпадало с именем содержащегося в файле открытого класса. По этой причине для каждого листинга я включил в заголовок имя используемого файла. Например, заголовок «Листинг 10.7, xalanjava.java, взаимодействие Xalan с Java» означает, что перед тем, как использовать код листинга вместе с Java, необходимо сохранить листинг как xalanjava.java (для простоты имена всех открытых классов и файлов Java я писал в нижнем регистре). Обратите внимание: если вы загрузили код книги, этот пример будет называться 10-07.java, и перед работой с ним вам нужно будет его переименовать в xalanjava.java. Кроме того, требуемое имя файла будет приведено в комментариях в начале каждого файла 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;

Поделиться:
Популярные книги

Шесть тайных свиданий мисс Недотроги

Суббота Светлана
Любовные романы:
любовно-фантастические романы
эро литература
7.75
рейтинг книги
Шесть тайных свиданий мисс Недотроги

Я еще не барон

Дрейк Сириус
1. Дорогой барон!
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Я еще не барон

Седьмая жена короля

Шёпот Светлана
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Седьмая жена короля

Не верь мне

Рам Янка
7. Самбисты
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Не верь мне

Газлайтер. Том 12

Володин Григорий Григорьевич
12. История Телепата
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Газлайтер. Том 12

Жандарм

Семин Никита
1. Жандарм
Фантастика:
попаданцы
альтернативная история
аниме
4.11
рейтинг книги
Жандарм

Архонт

Прокофьев Роман Юрьевич
5. Стеллар
Фантастика:
боевая фантастика
рпг
7.80
рейтинг книги
Архонт

Волк 7: Лихие 90-е

Киров Никита
7. Волков
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Волк 7: Лихие 90-е

Целитель

Первухин Андрей Евгеньевич
1. Целитель
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Целитель

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

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

Менталист. Конфронтация

Еслер Андрей
2. Выиграть у времени
Фантастика:
боевая фантастика
6.90
рейтинг книги
Менталист. Конфронтация

Восход. Солнцев. Книга IX

Скабер Артемий
9. Голос Бога
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Восход. Солнцев. Книга IX

Сломанная кукла

Рам Янка
5. Серьёзные мальчики в форме
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Сломанная кукла

Свет во мраке

Михайлов Дем Алексеевич
8. Изгой
Фантастика:
фэнтези
7.30
рейтинг книги
Свет во мраке