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

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

Жанры

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

Шрифт:

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 xtjavahttp://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 я применил элемент

<sql:connect>
процессора Saxon. Префикс пространства имен
sql
определяется в Saxon следующим образом:

<xsl:stylesheet

 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
служит элемент расширения
<sql:connect>
с атрибутами
database
,
user
,
password
и
driver
. Для работы через JDBC установите атрибут
driver
в «
sun.jdbc.odbc.JdbcOdbcDriver
», атрибут
database
— в источник данных
ODBC
, «
jdbc:odbc:planets
», а атрибуты
user
и
password
в имя пользователя и пароль, нужные для подключения к базе данных. Здесь нам не требуется задавать имя пользователя и пароль, но я задал этим параметрам шаблонные значения, так как они требуются в большинстве приложений баз данных:

<xsl:stylesheet

 xmlns:sql="http://icl.com/saxon/extensions/com.icl.saxon.sql.SQLElementFactory"

 xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.1">

 <xsl:param name="database" select="'jdbc:odbc:planets'"/>

 <xsl:param name="user"/>

 <xsl:param name="password"/>

 <xsl:template match="PLANETS">

<sql:connect database="{$database}" user="{$user}"

password="{$password}" driver="sun.jdbc.odbc.JdbcOdbcDriver"

xsl:extension-element-prefixes="sql"/>

<xsl:apply-templates select="PLANET"/>

 </xsl:template>

 .

 .

 .

Затем я подключаюсь к источнику данных

planets
. Я хочу вставить в базу данных данные из каждого элемента
<PLANET>
, для чего я создаю новый шаблон, который выбирает элементы
<PLANET>
и вставляет данные в таблицу
planets
базы данных при помощи элемента Saxon
<sql:insert>
:

<xsl:stylesheet

 xmlns:sql="http://icl.com/saxon/extensions/com.icl.saxon.sql.SQLElementFactory"

 xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.1">

 .

 .

 .

 <xsl:template match="PLANETS">

<sql:connect database="{$database}" user="{$user}"

password="{$password}" driver="sun.jdbc.odbc.JdbcOdbcDriver"

xsl:extension-element-prefixes="sql"/>

<xsl:apply-templates select="PLANET"/>

 </xsl:template>

 <xsl:template match="PLANET">

<sql:insert table="planets" xsl:extension-element-prefixes="sql">

.

.

.

</sql:insert>

 </xsl:template>

</xsl:stylesheet>

Элемент

<sql:insert>
вставляет в базу данных новую запись. Чтобы присвоить ее полям новые данные, используйте элемент
<sql:column>
, установив его атрибут name в имя столбца, в который вы хотите записать данные, и присвоив эти данные атрибуту
select
:

<xsl:stylesheet

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

Сильнейший Столп Империи. Книга 1

Ермоленков Алексей
1. Сильнейший Столп Империи
Фантастика:
аниме
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Сильнейший Столп Империи. Книга 1

Дважды одаренный. Том III

Тарс Элиан
3. Дважды одаренный
Фантастика:
альтернативная история
аниме
фэнтези
фантастика: прочее
юмористическое фэнтези
5.00
рейтинг книги
Дважды одаренный. Том III

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

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

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

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

Телохранитель Генсека. Том 3

Алмазный Петр
3. Медведев
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Телохранитель Генсека. Том 3

Ваше Сиятельство 6

Моури Эрли
6. Ваше Сиятельство
Фантастика:
попаданцы
аниме
5.00
рейтинг книги
Ваше Сиятельство 6

Авиатор: назад в СССР

Дорин Михаил
1. Авиатор
Фантастика:
попаданцы
альтернативная история
5.25
рейтинг книги
Авиатор: назад в СССР

Сирота

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

Статьи

Переслегин Сергей Борисович
Документальная литература:
публицистика
5.00
рейтинг книги
Статьи

Герцог и я

Куин Джулия
1. Бриджертоны
Любовные романы:
исторические любовные романы
8.92
рейтинг книги
Герцог и я

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

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

Наследник

Майерс Александр
3. Династия
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Наследник

Первый среди равных. Книга VI

Бор Жорж
6. Первый среди Равных
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Первый среди равных. Книга VI

Девять драконов

Скотт Джастин
Детективы:
триллеры
5.00
рейтинг книги
Девять драконов