Алексей Валиков - Технология XSLT
- Название:Технология XSLT
- Автор:
- Жанр:
- Издательство:БХВ-Петербург
- Год:2002
- Город:Санкт-Петербург
- ISBN:нет данных
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Алексей Валиков - Технология XSLT краткое содержание
Книга посвящена разработке приложений для преобразования XML-документов с использованием XSLT — расширяемого языка стилей для преобразований. Обсуждается применение языков XSLT и XPath в решении практических задач: выводу документов в формате HTML, использованию различных кодировок для интернационализации и, в частности, русификации приложений, вопросам эффективности существующих подходов для решения проблем преобразования. Для иллюстрации материала используется большое количество примеров.
Для начинающих и профессиональных программистов
Технология XSLT - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
format-number(1234.56,'00,000')→ '01,235'
format-number(1234.56,'000,00')→ '0,12,35'
Некоторые процессоры позволяют указывать несколько символов-разделителей. Однако даже в этом случае они учитывают только последний из этих символов.
format-number(123456789.0123,'0000,000,00')→ '1,23,45,67,89'
Дробная часть числа, представленная нетерминалом NFFraction, начинается символом-разделителем целой и дробной части NFFractionDelim(по умолчанию " ."), продолжается последовательностью символов обязательных позиций цифр NFReqDigitи заканчивается последовательностью символов необязательных позиций NFOptDigit:
[NF 6] NFFraction ::= NFFractionDelim NFReqDigit* NFOptDigit*
format-number(1234.567,'#.00')→ '1234.57'
format-number(1234.567,'#.00#')→ '1234.567'
format-number(1234.567,'#.0000')→ '1234.5670'
Продукция NFChar, использующаяся при определении префикса ( NFPrefix) и суффикса ( NFSuffix), может содержать любые неформатирующие символы:
[NF 7] NFChar ::= (Char - NFSymbol)
К специальным форматирующим символам относятся следующие:
□ символ обязательной позиции цифры (по умолчанию " 0");
□ символ необязательной позиции цифры (по умолчанию " #");
□ символ-разделитель образцов форматирования для положительного и отрицательного числа (по умолчанию " ;");
□ символ-разделитель целой и дробной части (по умолчанию " .");
□ символ процента (по умолчанию " %").
Перечислим их продукции:
[NF 8] NFSymbol ::= NFReqDigit
| NFOptDigit
| NFSubpatternDelim
| NFFractionDelim
| NFGroupDelim
| NFPercent
[NF 9] NFReqDigit ::= '0'
[NF 10] NFOptDigit ::= '#'
[NF 11] NFSubpatternDelim ::= ';'
[NF 12] NFFractionDelim ::= '.'
[NF 13] NFGroupDelim ::= ','
[NF 14] NFPercent ::= '%'
Синтаксические правила, которые мы привели выше, пока не являются стандартными. Они корректно передают синтаксис образца форматирования, но являются более строгими, чем определения в документации языка Java.
Элемент xsl:decimal-format
Синтаксис элемента задан конструкцией вида:
name=" имя "
decimal-separator=" символ "
grouping-separator=" символ "
infinity=" строка "
minus-sign=" символ "
NaN=" строка "
percent=" символ "
per-mille=" символ "
zero-digit=" символ "
digit=" символ "
pattern-sераrator=" символ "/>
XSLT позволяет изменять специальные символы, влияющие на форматирование строки. Именованный набор таких символов и некоторых других указаний называется десятичным форматом и определяется элементом xsl:decimal-format. От атрибутов этого элемента зависит, как будут обрабатываться символы образца форматирования и как число будет отображаться на выходе:
Атрибут nameэлемента xsl:decimal-formatзадает расширенное имя десятичного формата. Если имя не указано, это означает, что элемент xsl:decimal-formatопределяет десятичный формат по умолчанию.
Остальные атрибуты контролируют интерпретацию форматирующего образца и вывод строкового представления числа следующим образом:
□ decimal-separator— задает символ, разделяющий целую и дробную части числа. Значением этого атрибута по умолчанию является символ " .", с Unicode-кодом #x2e. Атрибут decimal-separatorрассматривается как специальный символ образца форматирования. Кроме того, он будет использован как разделяющий символ при выводе;
□ grouping-separator— задает символ, группирующий цифры в целой части записи числа. Такие символы используются, например, для группировки тысяч (" 1,234,567.89"). Значением по умолчанию является символ " ,", код #x2c. grouping-separatorрассматривается как специальный символ образца форматирования. Помимо этого, он будет использован как разделяющий символ групп цифр при выводе числа;
□ percent— задает символ процента. Значением по умолчанию является символ " %", код #x25. Этот символ будет распознаваться в образце форматирования и использоваться при выводе;
□ per-mille— задает символ промилле. Значением по умолчанию является символ " ‰", код #х2030. Символ промилле распознается в образце форматирования и используется в строковом представлении числа;
□ zero-digit— задает символ нуля. Значением по умолчанию является символ " 0", код #x30;. В качестве цифр при отображении числа будут использоваться символ нуля и 9 символов, следующих за ним. Символ нуля распознается в образце форматирования и используется при выводе строкового представления числа;
□ digit— определяет символ, который используется в образце форматирования для определения позиции необязательного символа. Значением по умолчанию является символ " #". Этот символ распознается как форматирующий символ необязательной цифры. Он не включается в строковое представление числа;
□ pattern-separator— определяет символ, который используется в образце форматирования для разделения положительного и отрицательного форматов числа. Он не включается в строковое представление числа. Значением этого атрибута по умолчанию является символ " ;";
□ infinity— задает строку, которая будет представлять бесконечность. Значением по умолчанию является строка " Infinity";
□ NaN— задает строку, которая будет представлять не-числа. Значением по умолчанию является строка " NaN";
□ minus-sign— задает символ, который будет использоваться для обозначения отрицательных чисел. Значением по умолчанию является символ " -", код #x2D.
Элемент xsl:decimal-formatне имеет смысла без функции format-number. Все, на что влияют его атрибуты — это формат, который будет использоваться при преобразовании чисел в строку функцией format-number.
Определение десятичного формата:
name="format1"
decimal-separator=","
minus-sign="N"
grouping-separator=":"
infinity="∞"
NaN="not-a-number"
percent="%"
digit="$"
pattern-separator="|"/>
Примеры функций format-number:
format-number(123456.78, '$,0000', 'format1)→ '123456,7800'
format-number(-123456.78, '$,00$$', 'format1')→ 'N123456,78'
format-number(123456.78, '$,0000|$,0000-', 'format1')→ '123456,7800'
format-number(-123456.78, '$,00001$,0000-', 'format1')→ '123456,7800-'
format-number(-123456.78, '000:000:000,00$$', 'format1')→ 'N000:123:456,78'
format-number('zero', '000:000:000,00$$', 'format1') -> 'not-a-number'
format-number(1 div 0, '$,$', 'format1')→ '∞'
format-number(-1 div 0, '$,$', 'format1')→ 'N∞'
Определение десятичного формата:
Примеры функций format-number:
format-number(123456789, '#', 'format2')→ '012345678'
Интервал:
Закладка: