Вход/Регистрация
XSLT
вернуться

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

Шрифт:

<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

 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="PLANET">

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

<sql:column name="Name" select="NAME"/>

<sql:column name="Mass" select="MASS"/>

<sql:column name="Radius" select="RADIUS"/>

<sql:column name="Day" select="DAY"/>

</sql:insert>

 </xsl:template>

</xsl:stylesheet>

В идеале этого должно быть достаточно, но при работе с самым последним драйвером Access в конце операции Saxon не сбрасывает все буфера данных. Это значит, что данные о последней планете в

planets.xml
, Земле, не будут отправлены в базу данных. Чтобы сбросить буферы данных, я явно вызываю шаблон
<PLANET>
как именованный шаблон, применяя
<sql:insert>
с данными-заглушкой (листинг 10.11).

Листинг 10.11. Работа с реляционной базой данных

<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:call-template name="writer"/>

 </xsl:template>

 <xsl:template match="PLANET" name="writer">

  • Читать дальше
  • 1
  • ...
  • 213
  • 214
  • 215
  • 216
  • 217
  • 218
  • 219
  • 220
  • 221
  • 222
  • 223
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

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