» » » Алексей Валиков - Технология XSLT


Авторские права

Алексей Валиков - Технология XSLT

Здесь можно скачать бесплатно "Алексей Валиков - Технология XSLT" в формате fb2, epub, txt, doc, pdf. Жанр: Программирование, издательство БХВ-Петербург, год 2002. Так же Вы можете читать книгу онлайн без регистрации и SMS на сайте LibFox.Ru (ЛибФокс) или прочесть описание и ознакомиться с отзывами.
Алексей Валиков - Технология XSLT
Рейтинг:
Название:
Технология XSLT
Издательство:
БХВ-Петербург
Год:
2002
ISBN:
нет данных
Скачать:

99Пожалуйста дождитесь своей очереди, идёт подготовка вашей ссылки для скачивания...

Скачивание начинается... Если скачивание не началось автоматически, пожалуйста нажмите на эту ссылку.

Вы автор?
Жалоба
Все книги на сайте размещаются его пользователями. Приносим свои глубочайшие извинения, если Ваша книга была опубликована без Вашего на то согласия.
Напишите нам, и мы в срочном порядке примем меры.

Как получить книгу?
Оплатили, но не знаете что делать дальше? Инструкция.

Описание книги "Технология XSLT"

Описание и краткое содержание "Технология XSLT" читать бесплатно онлайн.



Книга посвящена разработке приложений для преобразования XML-документов с использованием XSLT — расширяемого языка стилей для преобразований. Обсуждается применение языков XSLT и XPath в решении практических задач: выводу документов в формате HTML, использованию различных кодировок для интернационализации и, в частности, русификации приложений, вопросам эффективности существующих подходов для решения проблем преобразования. Для иллюстрации материала используется большое количество примеров.

Для начинающих и профессиональных программистов






□ Если второй численный аргумент меньше 1 (это относится и к отрицательной бесконечности), то подстрока будет пустой.

□ Если второй численный аргумент, сложенный с первым, больше длины строки плюс один, подстрока будет продолжаться до конца строки.

Примеры

substring('123456', 2, 3) → '234'

substring('123456', 2, 5) → '23456'

substring('123456', 2, 6) → '23456'

substring('123456', 2) → '23456'

substring('123456', -4) → '123456'

substring('123456', 5, 5) → '5'

substring('123456', 5) → '56'

substring ('123456', 6) → '6'

substring('123456', 1 div 0, ) → ''

substring('123456', 2, -1) → ''

Функция string-length

number string-length(string?)

Функция string-length возвращает число символов строкового аргумента. Если аргумент опущен, string-length возвращает длину строкового представления контекстного узла.

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

Примеры

string-length('Barnes and Noble') →16

string-length('Barness#x20;& Noble') → 14

Функция normalize-space

string normalize-space(string?)

Функция normalize-space производит со своим строковым аргументом так называемую нормализацию пробельного пространства. Это означает, что в строке удаляются ведущие и заключающие пробельные символы, а все последовательности пробелов заменяются одним пробельным символом. Иными словами, функция удаляет "лишние" пробелы в строке.

Если аргумент функции опущен, она выполняется со строковым значением контекстного узла.

Примеры

normalize-space(' А - В - С ') → 'А-В-С'

normalize-space('А &#х9; В &#х9; С') > 'A B C'

Функция translate

string translate(string, string, string)

Функция translate производит замену символов первого своего строкового аргумента, которые присутствуют во втором аргументе на соответствующие символы третьего аргумента.

Пример

translate('abcdefgh', 'aceg', 'ACEG') → 'AbCdEfGh'

Если некоторый символ повторяется во втором аргументе несколько раз, учитывается только первое его появление.

Пример

translate('abcdefgh', 'acaeaga', 'ACBECGD') → 'AbCdEfGh'

Если второй аргумент длиннее третьего, символы, для которых нет соответствующей замены, удаляются из строки.

Пример

translate('a b-c=d+e|f/g\h', 'aceg-=+|/\', 'ACEG') → 'AbCdEfGh'

Если третий аргумент длиннее второго, остаток строки игнорируется.

Пример

translate('abcdefgh', 'aceg', 'ACEGBDFH') → ' AbCdEfGh'

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

Пример

Для того чтобы изменять регистр слов русского языка, мы можем определить две переменные, lowercase и uppercase, которые будут содержать строчные и прописные символы основного русского алфавита (мы включили в него букву ё — строчную ("ё") и прописную ("Ё"), хотя в соответствии с Unicode она относится к расширениям). Мы также создадим два именованных шаблона, которые будут менять регистр символов строкового параметра str. Для удобства использования мы вынесем определения переменных и шаблонов во внешний модуль ru.xsl.

Листинг 6.6. Преобразование ru.xsl

<xsl:stylesheet

 version="1.0"

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


 <xsl:variable

  name="uppercase"

  select="concat('&#x410;&#x411;&#x412;&#x413;',

                 '&#x414;&#x415;&#x401;&#x416;&#x417;',

                 '&#x418;&#x419;&#x41A;&#x41B;',

                 '&#x41C;&#x41D;&#x41E;&#x41F;',

                 '&#x420;&#x421;&#x422;&#x423;',

                 '&#x424;&#x425;&#x426;&#x427;',

                 '&#x428;&#x429;&#x42A;&#x42B;',

                 '&#x42C;&#x42D;&#x42E;&#x42F;')"/>


 <xsl:variable

  name="lowercase"

  select="concat('&#x430;&#x431;&#x432;&#x433;',

                 '&#x434;&#x435;&#x451;&#x436;&#x417;',

                 '&#x438;&#x439;&#x43A;&#x43B;',

                 '&#x43C;&#x43D;&#x43E;&#x43F;',

                 '&#x440;&#x441;&#x442;&#x443;',

                 '&#x444;&#x445;&#x446;&#x447;',

                 '&#x448;&#x449;&#x44A;&#x44B;',

                 '&#x44C;&#x44D;&#x44E;&#x44F;')"/>


 <xsl:template name="lower">

  <xsl:param name="str"/>

  <xsl:value-of select="translate($str, $uppercase, $lowercase)"/>

 </xsl:template>


 <xsl:template name="upper">

  <xsl:param name="str"/>

  <xsl:value-of select="translate($str, $lowercase, $uppercase)"/>

 </xsl:template>


</xsl:stylesheet>

Использовать этот модуль можно, включив или импортировав его в основное преобразование элементами xsl:include или xsl:import. После этого в основном преобразовании будут доступны переменные lowercase и uppercase, которые можно будет использовать в функции translate и шаблоны с именами lower и upper.

Использовать функцию translate с переменными lowercase и uppercase можно следующим образом:

translate('Дом', $uppercase, $lowercase) → 'дом'

translate('Дом', $lowercase, $uppercase) → 'ДОМ'

Именованные шаблоны можно вызывать элементом xsl:call-template, передавая параметр при помощи xsl:with-param. Например, следующий фрагмент шаблона

...

<xsl:call-template name="lower">

 <xsl:with-param name="str" select="'Дом'"/>

</xsl:call-template>

...

создаст в выходящем дереве текстовый узел со значением "дом".

Функции множеств узлов

Функции last и position

number last()

number position()

Функция last возвращает текущий размер контекста — число, которое показывает, сколько узлов находится в обрабатываемом в данный момент множестве.

Функция position возвращает позицию контекста — число, показывающее порядковый номер контекстного узла в обрабатываемом множестве.

Пример

В этом примере мы будем заменять все элементы элементами вида

<element name="..." position="...">

 ...

</element>

где атрибут name будет содержать имя, a position — через дробь позицию элемента в контексте и размер контекста.

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

<а>

 <b/>

 <c/>

 <d>

  <e/>

  <f/>

 </d>

</a>

Листинг 6.8. Преобразование

<xsl:stylesheet

 version="1.0"

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


 <xsl:output indent="yes"/>

 <xsl:strip-space elements="*"/>


 <xsl:template match="*">

  <element name="{name()}" pos="{position()}/{last()}">

   <xsl:apply-templates/>

  </element>

 </xsl:template>


</xsl:stylesheet>

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

<element name="a" pos="1/1">

 <element name="b" pos="1/3"/>

 <element name="c" pos="2/3"/>

 <element name="d" pos="3/3">

  <element name="e" pos="1/2"/>

  <element name="f" pos="2/2"/>

 </element>

</element>

Отметим, что если бы мы не удаляли лишние пробельные символы во входящем документе при помощи элемента xsl:strip-space, в контексте преобразования учитывались бы также и текстовые узлы, которые им соответствуют. Выходящий документ без этого элемента имел бы следующий вид:

<element name="a" pos="1/1">

 <element name="b" pos="2/7"/>

 <element name="c" pos="4/7"/>

 <element name="d" pos="6/7">


На Facebook В Твиттере В Instagram В Одноклассниках Мы Вконтакте
Подписывайтесь на наши страницы в социальных сетях.
Будьте в курсе последних книжных новинок, комментируйте, обсуждайте. Мы ждём Вас!

Похожие книги на "Технология XSLT"

Книги похожие на "Технология XSLT" читать онлайн или скачать бесплатно полные версии.


Понравилась книга? Оставьте Ваш комментарий, поделитесь впечатлениями или расскажите друзьям

Все книги автора Алексей Валиков

Алексей Валиков - все книги автора в одном месте на сайте онлайн библиотеки LibFox.

Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Отзывы о "Алексей Валиков - Технология XSLT"

Отзывы читателей о книге "Технология XSLT", комментарии и мнения людей о произведении.

А что Вы думаете о книге? Оставьте Ваш отзыв.