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

на главную

Жанры

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

Шрифт:

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 templates =

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

Transformer transformer = templates.newTransformer;

transformer.transform(new InputSource(args[0]),

new Result(new FileWriter(args[2])));

 }

}

Чтобы

скомпилировать и использовать новый класс
saxonjava
, нужно установить
classpath
так, чтобы переменная включала путь к
saxon.jar
:

С:\>set сlasspath=.;с:\saxon\saxon.jar

Затем при помощи компилятора Java,

javac
, создается
saxonjava.class
.

Как и многие использующие API процессоры XSLT, Saxon ожидает, что ему будут переданы URL документов, с которыми вы хотите работать, — что я и делаю на следующем шаге:

C:\>java saxonjavahttp://www.starpowder.com/planets.xsl planets.html

Таким образом, создается

planets.html
, как и раньше. Заметьте, что если документы расположены локально, можно использовать URL файла. Например, в Windows, если документ XML расположен в
c:\XSL\saxonjava\planets.xml
, а документ XSL в
c:\XSL\saxonjava\planets.xsl
, можно выполнить такую командную строку:

C:\>java saxonjava file:///XSL/saxonjava/planets.xml file:///XSL/saxonjava/planets.xsl planets.html

ПРЕОБРАЗОВАНИЕ ИМЕН ФАЙЛОВ В URL

Если вам больше нравится писать в командной строке имена файлов, а не URL, имена можно преобразовывать в URL в коде. Для этого необходимо передать полный путь к файлу в класс Java URL, а путь можно получить методом getAbsolutePath класса File: File file = new File(filename); String fullpath = file.getAbsolutePath;.

В этом примере мы работали с Saxon версии 6.0.2, о котором на web-узле Saxon говорится как о вполне надежной версии, но на момент написания книги появилась новая, полностью не протестированная версия Saxon 6.2.2. (Не существовало версии Saxon 6.1.x.) В последней версии Saxon, кажется, собирается вернуться к той же модели API, которую использует Xalan, и код, работоспособный в версии 6.0.2, не будет работать в версии 6.2.2 (сюрприз!). Ниже приведен код

saxonjava.java
для версии 6.2.2 — проверьте, что при работе с этим кодом вы включили в
classpath
новую версию
saxon.jar
, и обратите внимание на то, что при его выполнении вам нужно передавать не URL файлов, а только их имена. Этот код идентичен показанному ранее
xalanjava.java
, за исключением имени класса,
saxonjava
:

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 saxonjava {

 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])));

 }

}

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

процессора XSLT Oracle с Java

Несколько больше усилий потребуется для осуществления XSLT-преобразования при помощи API процессора XSLT фирмы Oracle. Новый пример,

oraclejava.java
, продемонстрирует работу с этим API.

В

oraclejava.java
в первую очередь необходимо считывать требуемые документы при помощи объекта
DOMParser
:

import org.w3c.dom.*;

import java.util.*;

import java.io.*;

import java.net.*;

import oracle.xml.parser.v2.*;

public class oraclejava {

 public static void main (String args[]) throws Exception {

DOMParser parser;

try {

parser = new DOMParser;

parser.setPreserveWhitespace(true);

.

.

.

Затем, чтобы считать исходный документ XML и документ таблицы стилей XSLT, нужно преобразовать их URL в объекты

URLJava
при помощи метода
parse
объекта
parser
. После этого я вызываю метод разборщика
getDocument
, для того чтобы извлечь и сохранить документы XML и XSLT в объектах
XMLDocument
:

public class oraclejava {

 public static void main (String args[]) throws Exception {

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

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

Борзых М.
8. РОС: Кодекс Крови
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Крови. Книга VIII

Камень

Минин Станислав
1. Камень
Фантастика:
боевая фантастика
6.80
рейтинг книги
Камень

Партиец

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

Он тебя не любит(?)

Тоцка Тала
Любовные романы:
современные любовные романы
7.46
рейтинг книги
Он тебя не любит(?)

Бестужев. Служба Государевой Безопасности

Измайлов Сергей
1. Граф Бестужев
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Бестужев. Служба Государевой Безопасности

Хозяйка брачного агентства или Попаданка в поисках любви

Максонова Мария
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Хозяйка брачного агентства или Попаданка в поисках любви

Возрождение Феникса. Том 1

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

Релокант. Вестник

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

Книга пяти колец. Том 3

Зайцев Константин
3. Книга пяти колец
Фантастика:
фэнтези
попаданцы
аниме
5.75
рейтинг книги
Книга пяти колец. Том 3

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

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

Идеальный мир для Социопата 6

Сапфир Олег
6. Социопат
Фантастика:
боевая фантастика
рпг
6.38
рейтинг книги
Идеальный мир для Социопата 6

Камень. Книга 3

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

Прометей: повелитель стали

Рави Ивар
3. Прометей
Фантастика:
фэнтези
7.05
рейтинг книги
Прометей: повелитель стали

Неудержимый. Книга XIX

Боярский Андрей
19. Неудержимый
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Неудержимый. Книга XIX