Алексей Валиков - Технология 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
.
Интервал:
Закладка: