Стивен Холзнер - XSLT
- Название:XSLT
- Автор:
- Жанр:
- Издательство:Питер
- Год:2002
- Город:Санкт-Петербург
- ISBN:5-94723-271-5
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Стивен Холзнер - XSLT краткое содержание
Эта книга посвящена XSLT — мощным и удобным системам преобразования документов. В ней не только рассматривается весь синтаксис XSLT, от основ до специальных аспектов, но и подробно излагаются современные способы использования XSLT.
Вы найдете сотни практических примеров, таких как осуществление преобразований XSLT на web-cepвepax, подключение к базам данных и использование браузеров для осуществления преобразований на лету.
Книга рассчитана на всех, кто хочет изучать XSLT и использовать его на практике
XSLT - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
Как мы говорили в главе 5, до недавнего времени процессоры XSLT могли реализовывать функции расширения любым способом, и один из этих способов включал прямой вызов функций Java. Например, в Saxon и Xalan можно выполнять код Java, если определить пространство имен, указывающее класс Java как последнюю часть своего URI — как в следующем примере, где я определил пространство имен Date
, соответствующее классу Java Date
:
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:Date="http://www.saxon.com/java/java.util.Date">
.
.
.
Как вы видели в главе 5, это означает, что теперь вы можете применять такие функции Java, как toString
и new, для встраивания текущей даты в заголовок HTML <���Н1>
, — например, так (листинг 10.6).
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:Date="http://www.saxon.com/java/java.util.Date">
The Planets Table
The Planets Table
Name | Mass | Radius | Day |
Такой код, безусловно, работает, но дает лишь ограниченные средства работы и зависит от нестандартных расширений. За исключением случая, когда вы осуществляете только несколько простых вызовов, обычно лучше начать работать в Java и взаимодействовать с процессором XSLT.
Каждый из процессоров XSLT Xalan, Saxon, XT и Oracle определяет API, к которому можно обращаться из Java. Достаточно только проверить, что нужные файлы JAR находятся в classpath
Java. Мы уже рассматривали, как работать с файлами JAR и путями к классам, в главе 1; теперь мы перейдем к написанию кода на Java, а не просто выполнению предопределенных классов из командной строки. Код можно загрузить с http://www.newriders.com/books/title.cfm?isbn=0735711364, поэтому если вы не программист на 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).
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 это будет выглядеть так (как всегда, пишите пути в соответствии со своей системой):
Интервал:
Закладка: