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

Валиков Алексей Н.

Шрифт:

<редкий>

<xsl:apply-templates/>

</редкий>

 </xsl:template>

 <xsl:template match="охотник">

<рыболов>

<xsl:apply-templates/>

</рыболов>

 </xsl:template>

 <xsl:template match="желает/знать">

<может>

<забыть>

<xsl:apply-templates/>

</забыть>

</может>

 </xsl:template>

 <xsl:template match="где">

<как>

<xsl:apply-templates/>

</как>

 </xsl:template>

 <xsl:template match="сидит">

<плавает>

<xsl:apply-templates/>

</плавает>

 </xsl:template>

 <xsl:template match="фазан">

<щука>

<xsl:apply-templates/>

</щука>

 </xsl:template>

</xsl:stylesheet>

Листинг 8.59. Выходящий документ

<?xml version="1.0" encoding="windows-1251"?>

<редкий>

 <рыболов>

<может>

<забыть>

<как>

<плавает>

<щука/>

</плавает>

</как>

</забыть>

</может>

 </рыболов>

</редкий>

Напомним, что кодировка выходящего документа определяется атрибутом

encoding
элемента
xsl:output
и не зависит от кодировок преобразования и обрабатываемых документов. Например, можно легко создать преобразование, которое будет изменять кодировку входящего документа. Это будет идентичное преобразование с элементом
xsl:output
, определяющим целевой набор символов.

Листинг 8.60. Преобразование, изменяющее кодировку документа на KOI8-R

<xsl:stylesheet version="1.0"

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

 <xsl:output encoding="KOI8-R"/>

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

<xsl:copy>

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

</xsl:copy>

 </xsl:template>

</xsl:stylesheet>

Как можно видеть, XSLT довольно гибко поддерживает кодировки — входящие и выходящие документы, а также сами преобразования могут иметь разные наборы символов. Единственным ограничением является множество кодировок, поддерживаемое самим процессором, вернее парсером, который он использует для разбора входящих документов, и сериализатором, который служит для создания физического экземпляра выходящего документа.

Практически во всех процессорах поддерживаются кодировки UTF-8, US- ASCII и ISO-8859-1, но далеко не все могут работать с Windows-1251 или KOI8-R. Поэтому, создавая документы и преобразования в нестандартных кодировках, мы заведомо ограничиваем переносимость решений. В случаях, когда XML/XSLT приложения создаются под конкретный процессор с заведомо известными возможностями, это не является большой проблемой, однако в тех случаях, когда требуется универсальность или точно не известно, каким процессором будет производиться обработка, единственным выходом будет использовать UTF-8 — как во входящих документах, так и в самих преобразованиях.

Случай нескольких входящих документов

Базовая архитектура преобразования подразумевает один входящий документ. Несмотря на это, в преобразованиях можно использовать и обрабатывать информацию, хранящуюся в других, внешних документах. Доступ к этим документам можно получить при помощи функции

document
.

Функция document

Запись функции:

node-set document(object, node-set?)

  • Читать дальше
  • 1
  • ...
  • 176
  • 177
  • 178
  • 179
  • 180
  • 181
  • 182
  • 183
  • 184
  • 185
  • 186
  • ...

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

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

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

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