Алексей Валиков - Технология XSLT
- Название:Технология XSLT
- Автор:
- Жанр:
- Издательство:БХВ-Петербург
- Год:2002
- Город:Санкт-Петербург
- ISBN:нет данных
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Алексей Валиков - Технология XSLT краткое содержание
Книга посвящена разработке приложений для преобразования XML-документов с использованием XSLT — расширяемого языка стилей для преобразований. Обсуждается применение языков XSLT и XPath в решении практических задач: выводу документов в формате HTML, использованию различных кодировок для интернационализации и, в частности, русификации приложений, вопросам эффективности существующих подходов для решения проблем преобразования. Для иллюстрации материала используется большое количество примеров.
Для начинающих и профессиональных программистов
Технология XSLT - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
starts-with('http://www.xsltdev.ru', 'http')→ true
starts-with('Title', 'ti')→ false
Функция contains
boolean contains( string , string )
Функция containsпринимает на вход два строковых аргумента и возвращает true, если первая строка содержит вторую и falseв противном случае.
contains('address@host.com', '(@')→ true
Функция substring-before
string substring-before( string , string )
Функция substring-beforeпринимает на вход два строковых аргумента. Эта функция находит в первой строке вторую и возвращает подстроку, которая ей предшествует. Если вторая строка не содержится в первой, функция вернет пустую строку.
substring-before('12-May-1998', '-')→ '12'
substring-before('12 May 1998', ' ')→ '12'
substring-before('12 May 1998', ' ')→ '12'
substring-before('12 May 1998', '-')→ ''
Функция substring-after
string substring-after( string , string )
Эта функция аналогична функции substring-before, только она возвращает строку, которая следует за вторым аргументом. Если вторая строка не содержится в первой, эта функция также вернет пустую строку.
substring-after('12-May-1998', '-')→ 'May-1998'
substring-after('12 May 1998', ' ')→ 'May 1998'
substring-after('12 May 1998', ' ')→ 'May 1998'
substring-after('12 May 1998', '-')→ ''
Функция substring
string substring( string , number , number ?)
Функция substringвозвращает подстроку переданного ей строкового аргумента, которая начинается с позиции, указанной вторым аргументом и длиной, указанной третьим аргументом. Если третий аргумент опущен, подстрока продолжается до конца строки. Если численные аргументы являются нецелыми, они округляются при помощи функции round.
В XPath позицией первого символа является 1, а не 0, как в некоторых других языках программирования.
При вычислении подстроки учитываются следующие условия.
□ Если первый численный аргумент меньше 1(это относится и к отрицательной бесконечности), то подстрока начинается с начала строки.
□ Если первый численный аргумент больше длины строки (это относится и к положительной бесконечности), то подстрока будет пустой.
□ Если второй численный аргумент меньше 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.
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
name="uppercase"
select="concat('АБВГ',
'ДЕЁЖЗ',
'ИЙКЛ',
'МНОП',
'РСТУ',
'ФХЦЧ',
'ШЩЪЫ',
'ЬЭЮЯ')"/>
name="lowercase"
select="concat('абвг',
'деёжЗ',
'ийкл',
'мноп',
'рсту',
'фхцч',
'шщъы',
'ьэюя')"/>
Использовать этот модуль можно, включив или импортировав его в основное преобразование элементами xsl:includeили xsl:import. После этого в основном преобразовании будут доступны переменные lowercaseи uppercase, которые можно будет использовать в функции translateи шаблоны с именами lowerи upper.
Интервал:
Закладка: