Стивен Холзнер - XSLT
- Название:XSLT
- Автор:
- Жанр:
- Издательство:Питер
- Год:2002
- Город:Санкт-Петербург
- ISBN:5-94723-271-5
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Стивен Холзнер - XSLT краткое содержание
Эта книга посвящена XSLT — мощным и удобным системам преобразования документов. В ней не только рассматривается весь синтаксис XSLT, от основ до специальных аспектов, но и подробно излагаются современные способы использования XSLT.
Вы найдете сотни практических примеров, таких как осуществление преобразований XSLT на web-cepвepax, подключение к базам данных и использование браузеров для осуществления преобразований на лету.
Книга рассчитана на всех, кто хочет изучать XSLT и использовать его на практике
XSLT - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
import java.io.IOException;
import java.io.OutputStream;
import java.io.FileOutputStream;
import org.xml.sax.SAXException;
import com.sun.xml.tree.XmlDocument;
import com.jclark.xsl.dom.Transform;
import com.jclark.xsl.dom.Transform Engine;
import com.jclark.xsl.dom.TransformException;
import com.jclark.xsl.dom.XSLTransformEngine;
class xtjava {
public static void main(String[] args)
throws IOException, SAXException, TransformException {
XmlDocument XMLdoc =
new XmlDocument().createXmlDocument(args[0]);
XmlDocument XSLdoc =
new XmlDocument().createXmlDocument(args[1]);
XmlDocument newdoc = new XmlDocument();
XSLTransformEngine transformEngine = new XSLTransformEngine();
Transform transform = transformEngine.createTransform(XSLdoc);
transform.transform(XMLdoc, newdoc);
OutputStream out = new FileOutputStream(args[2]);
newdoc.write(out);
out.close();
}
}
Чтобы запустить пример, включите xt.jar
и xml.jar
в classpath
:
C:\>set classpath=.;d:\xt\xt.jar;xml.jar
Скомпилируйте теперь xtjava.java
компилятором Java javac
и запустите на выполнение следующим образом, передав URL документов XML и XSL (можно передать и URL файлов, как было показано ранее):
C:\>java xtjava http://www.starpowder.com/planets.xml http://www.starpowder.com/planets.xsl planets.html
Теперь все сделано.
Преобразование XML в реляционную базу данных
При обсуждении дополнительных возможностей XSLT стоит упомянуть элементы расширения SQL процессора Saxon. Через драйвер Java Database Connectivity (JDBC) можно работать с реляционными базами данных. Мы уже рассмотрели преобразования из XML в XML, в простой текст, в RTF, в JavaScript и т.д. Теперь пришла очередь преобразованию XML в реляционную базу данных.
РАБОТА С ИНТЕРПРЕТИРУЕМЫМ SAXON
Обратите внимание: для связи с базами данных через JDBC нельзя использовать исполняемый файл для Windows saxon.exe. Нужно запустить реализующий Saxon класс Java com.id.saxon.StyleSheet, как я сделаю в конце примера.
В примере я передам данные planets.xml
в базу данных формата Microsoft Access planets.mdb
. Если вы хотите повторить пример, создайте этот файл базы данных, в нем — таблицу planets
с четырьмя текстовыми полями Name
, Mass
, Radius
и Day
, а оставшуюся часть файла оставьте пустой. В Windows я зарегистрирую этот файл базы данных в качестве источника ODBC с именем «planets» через значок Data Sources (ODBC)(Источники данных (ODBC)) в панели управления (в Windows 2000 он расположен в панели управления в папке Administrative Tools(Администрирование)). При запуске пример считает данные планет из planets.xml
и добавит их в файл базы данных, planets.mdb
.
Для подключения к этой базе данных через JDBC я применил элемент процессора Saxon. Префикс пространства имен sql
определяется в Saxon следующим образом:
xmlns:sql="http://icl.com/saxon/extensions/com.icl.saxon.sql.SQLElementFactory"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.1">
.
.
.
Для фактического подключения к источнику данных planets
служит элемент расширения с атрибутами database
, user
, password
и driver
. Для работы через JDBC установите атрибут driver
в « sun.jdbc.odbc.JdbcOdbcDriver
», атрибут database
— в источник данных ODBC
, « jdbc:odbc:planets
», а атрибуты user
и password
— в имя пользователя и пароль, нужные для подключения к базе данных. Здесь нам не требуется задавать имя пользователя и пароль, но я задал этим параметрам шаблонные значения, так как они требуются в большинстве приложений баз данных:
xmlns:sql="http://icl.com/saxon/extensions/com.icl.saxon.sql.SQLElementFactory"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.1">
password="{$password}" driver="sun.jdbc.odbc.JdbcOdbcDriver"
xsl:extension-element-prefixes="sql"/>
.
.
.
Затем я подключаюсь к источнику данных planets
. Я хочу вставить в базу данных данные из каждого элемента , для чего я создаю новый шаблон, который выбирает элементы и вставляет данные в таблицу planets
базы данных при помощи элемента Saxon :
xmlns:sql="http://icl.com/saxon/extensions/com.icl.saxon.sql.SQLElementFactory"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.1">
.
.
.
password="{$password}" driver="sun.jdbc.odbc.JdbcOdbcDriver"
xsl:extension-element-prefixes="sql"/>
.
.
.
Элемент вставляет в базу данных новую запись. Чтобы присвоить ее полям новые данные, используйте элемент , установив его атрибут name в имя столбца, в который вы хотите записать данные, и присвоив эти данные атрибуту select
:
xmlns:sql="http://icl.com/saxon/extensions/com.icl.saxon.sql.SQLElementFactory"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.1">
.
.
.
В идеале этого должно быть достаточно, но при работе с самым последним драйвером Access в конце операции Saxon не сбрасывает все буфера данных. Это значит, что данные о последней планете в planets.xml
, Земле, не будут отправлены в базу данных. Чтобы сбросить буферы данных, я явно вызываю шаблон как именованный шаблон, применяя с данными-заглушкой (листинг 10.11).
xmlns:sql="http://icl.com/saxon/extensions/com.icl.saxon.sql.SQLElementFactory"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.1">
password="{$password}" driver="sun.jdbc.odbc.JdbcOdbcDriver"
xsl:extension-element-prefixes="sql"/>
xsl:extension-element-prefixes="sql">
xsl:extension-element-prefixes="sql">
Эта таблица стилей правильно добавляет три записи в базу данных planets.mdb
: по одной новой записи для каждой из планет. Как я говорил, здесь нельзя использовать готовый исполняемый файл saxon.exe
, нужно применять класс Java com.icl.saxon.StyleSheet
. Сначала нужно включить в classpath
файл saxon.jar
:
C:\>set classpath=.;c:\saxon\saxon.jar
После этого я могу передать в класс com.icl.saxon.StyleSheet
файл planets.xml
и таблицу стилей из листинга 10.11:
C:\>java com.icl.saxon.StyleSheet planets.xml saxonsql.xsl
Теперь все сделано — данные планет вставлены в planets.mdb
. Результаты применения этой таблицы стилей показаны на рис. 10.4, где я открыл planets.mdb
в Microsoft Access. Таким образом, мы рассмотрели преобразование из XML в реляционную базу данных.

Рис. 10.4.Применение расширений SQL Saxon
Еще один аспект XSLT, в котором вам потребуется программирование, это поддержка XSLT на серверах. В качестве демонстрации далее я преобразую planets.xml
при помощи planets.xsl
с использованием активных серверных страниц (Active Server Pages, ASP) фирмы Microsoft, серверных страниц Java (Java Server Pages, JSP) фирмы Sun и сервлетов (servlet) Java, выполняющихся на web-серверах и возвращающих результирующий документ браузеру пользователя.
За недостатком места мы не можем подробно рассмотреть эти технологии, и если вы с ними не знакомы, вы можете получить дополнительную информацию в Интернете (как всегда, URL могут измениться):
Читать дальшеИнтервал:
Закладка: