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

на главную

Жанры

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

Шрифт:

<RADIUS UNITS="miles">1516</RADIUS>

<DENSITY UNITS="(Earth = 1)">.983</DENSITY>

<DISTANCE UNITS="million miles">43.4</DISTANCE>

 </PLANET>

 <PLANET>

<NAME>Venus</NAME>

<MASS UNITS="(Earth = 1)">.815</MASS>

<DAY UNITS="days">116.75</DAY>

<RADIUS UNITS="miles">3716</RADIUS>

<DENSITY UNITS="(Earth = 1)">.943</DENSITY>

<DISTANCE UNITS="million miles">66.8</DISTANCE>

 </PLANET>

 .

 .

 .

Применение

функции element-available

Для проверки доступности элемента служит функция XSLT 1.0

element-available
. В следующем примере я проверяю наличие элемента с названием
<starpowder:calculate>
:

<xsl:choose xmlns:starpowder="http://www.starpowder.com">

 <xsl:when test="element-available('starpowder:calculate')">

<starpowder:calculate xsl:extension-element-prefixes="starpowder"/>

 </xsl:when>

 <xsl:otherwise>

<xsl:text>Sorry, can't do math today.</xsl:text>

 </xsl:otherwise>

</xsl:choose>

Есть еще один способ обработать случай отсутствия элемента расширения — элемент

<xsl:fallback>
.

Элемент <xsl:fallback>

При помощи элемента XSLT 1.0

<xsl:fallback>
можно указать, что следует делать в случае отсутствия элемента расширения. Этот элемент заключается в элемент расширения и используется в случае его недоступности.

У элемента

<xsl:fallback>
нет атрибутов, он содержит тело шаблона.

В следующем примере я создам элемент

<xsl:fallback>
внутри элемента
<redirect:write>
из предыдущего примера. В случае отсутствия элемента
<redirect:write>
элемент
<xsl:fallback>
прекратит обработку и выдаст сообщение:

<xsl:stylesheet

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

 version="1.0"

 xmlns:lxslt="http://xml.apache.org/xslt"

 xmlns:redirect="org.apache.xalan.lib.Redirect"

 extension-element-prefixes="redirect">

 <lxslt:component prefix="redirect" elements="write open close" functions="">

<lxslt:script lang="javaclass" src="org.apache.xalan.lib.Redirect"/>

 </lxslt:component>

 <xsl:output method="xml"/>

 <xsl:template match="/">

<xsl:apply-templates/>

 </xsl:template>

 <xsl:template match="PLANETS">

<redirect:write select="@file">

<PLANETS>

<xsl:apply-templates/>

</PLANETS>

<xsl:fallback>

<xsl:message terminate="yes">

<xsl:text>Could not create multiple output documents.</xsl:text>

</xsl:message>

</xsl:fallback>

</redirect:write>

 </xsl:template>

 <xsl:template match="@*|node">

<xsl:copy>

<xsl:apply-templates select="@*|node"/>

</xsl:copy>

 </xsl:template>

</xsl:stylesheet>

На

этом мы заканчиваем введение в работу с данными в документах XML. В следующей главе мы разберем эту тему и узнаем, как изменять содержимое документа и создавать новые элементы, атрибуты и инструкции обработки.

Глава 6

Преобразование в XML, HTML, XHTML, RTF

Предположим, web-узел вашей компании использует основанное на XML программное обеспечение фирмы Commerce One, в котором для безопасной коммуникации через Интернет применяется Java Message Service (JMS). Ваша деятельность была настолько успешной, что вы только что поглотили своего конкурента. К сожалению, для своего узла в Интернете ваш бывший конкурент использует другой основанный на XML продукт, RosettaNet. Как вам теперь преобразовать заказ на покупку xCBL Commerce One, написанный на XML, в заказ на покупку RosettaNet, также написанный на XML, но совершенно на другом диалекте?

Разумеется, применить XSLT. Такого рода XML-XML преобразования становятся все более и более распространенными. Все больше компаний применяют JMS для безопасных коммуникаций через Интернет, и поскольку JMS выполняется в Java, будет разумным связать JMS с основанными на Java процессорами XSLT, такими, как Xalan или Saxon.

В этой книге мы уже рассматривали преобразование XML в HTML, XML и простой текст, но в текущей главе сделаем это более подробно. Мы также рассмотрим здесь новый тип преобразования — из XML в JavaScript. В главе 10 мы познакомимся с преобразованиями из XML в базу данных на основе SQL, а в главе 11 — с преобразованиями из XML в XSL-FO.

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

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

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

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

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

Попала, или Кто кого

Юнина Наталья
Любовные романы:
современные любовные романы
5.88
рейтинг книги
Попала, или Кто кого

"Фантастика 2024-104". Компиляция. Книги 1-24

Михайлов Дем Алексеевич
Фантастика 2024. Компиляция
Фантастика:
боевая фантастика
5.00
рейтинг книги
Фантастика 2024-104. Компиляция. Книги 1-24

Сиротка

Первухин Андрей Евгеньевич
1. Сиротка
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Сиротка

Конструктор

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

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

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

Запасная дочь

Зика Натаэль
Фантастика:
фэнтези
6.40
рейтинг книги
Запасная дочь

Жандарм

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

Измена. Жизнь заново

Верди Алиса
1. Измены
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Измена. Жизнь заново

Тринадцатый II

NikL
2. Видящий смерть
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Тринадцатый II

Жребий некроманта 3

Решетов Евгений Валерьевич
3. Жребий некроманта
Фантастика:
боевая фантастика
5.56
рейтинг книги
Жребий некроманта 3

Все ведьмы – стервы, или Ректору больше (не) наливать

Цвик Катерина Александровна
1. Все ведьмы - стервы
Фантастика:
юмористическая фантастика
5.00
рейтинг книги
Все ведьмы – стервы, или Ректору больше (не) наливать

Имперец. Земли Итреи

Игнатов Михаил Павлович
11. Путь
Фантастика:
героическая фантастика
боевая фантастика
5.25
рейтинг книги
Имперец. Земли Итреи