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

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

Шрифт:

<xsl:if test="$x != $x">

 <xsl:text>This is not a number (NaN).</xsl:text>

</xsl:if>

Арифметические операции в XSLT никогда не вызывают ошибки. Деление на нуль, не разрешенное во многих языках программирования, не является для XSLT исключительной ситуацией. Частным такого деления будет положительная или отрицательная бесконечность. Но все же, следует осторожно использовать "опасные" выражения, например, в сравнениях. Несколько необычное поведение операторов сравнения в операциях с NaN может создать в программе курьезные, но трудно обнаруживаемые ошибки — можно легко забыть о том, что некоторые значения могут быть не равны сами себе.

Числа могут быть неявно преобразованы в булевый тип или в строку. При преобразовании числа в булевый тип, нуль (как положительный, так и отрицательный) и

NaN
преобразуются в
false
, все остальные значения (включая бесконечности) — в
true
.

Примеры

– 1 div (1 div 0) > false 1 div 0
→
true

number('NaN') > false number('true')
→
false

Результатом неявного преобразования числа в строку является:

□ для конечных чисел — запись числа в десятичном формате;

□ для нулей (и положительного, и отрицательного) — "

0
";

□ для бесконечностей (отрицательной и положительной) — "

– Infinity
" и "
Infinity
" соответственно;

□ для нечисловых значений — "

NaN
".

Примеры

– 14 div 3
→
'-4.666666666666667'

0010.00050000
→
'10.0005'

– 1 div (1 div 0)
→
'0'

1 - 1
→
'0'

1 div 0
→
'Infinity'

– 2 div 0
→
'-Infinity'

number('NaN')
→
'NaN'

number('Infinity')
→
'NaN'

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

format-number
.

Строковый тип (string)

Строки в XSLT практически не отличаются от строк в других языках программирования. Строка — это последовательность, состоящая из нуля или более символов определенного алфавита или набора символов (англ. character set). XSLT использует в качестве алфавита Unicode, что теоретически позволяет манипулировать любыми символами. Строки, которые не содержат символов, называются пустыми.

Строки в XSLT записываются в виде последовательностей символов, заключенных в кавычки — одинарные или двойные. Строки часто используются внутри атрибутов элементов, которые также могут быть заключены в двойные и одинарные кавычки и, потому, из соображений удобства, существует следующее негласное соглашение — значения атрибутов заключаются в двойные кавычки, а литералы (строковые значения) — в одинарные.

Пример

Результатом выполнения элемента

<xsl:value-of select="'text'"/>

будет строковый узел со значением

"text"
, в то время как элемент

<xsl:value-of select="text"/>

создаст текстовый узел, значение которого будет равно текстовому значению элемента

text
. В первом случае выражение
"text"
являлось строкой, литералом, во втором — путем выборки.

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

<xsl:variable name="s">

 <xsl:text>'An author of "One Flew Over Cookoo's Nest"'</xsl:text>

</xsl:variable>

<xsl:value-of select="$s"/>

Следует особым образом отметить, что в XSLT, как XML-языке, символы могут быть заменены сущностями. Например, вместо символа "

"
" (двойные кавычки) можно использовать сущность
&quot;
, а вместо символа "
'
" (одинарные кавычки) —
&apos;
. Это позволяет использовать внутри атрибутов такие конструкции, как

'this is a string&apos;

что эквивалентно

'this is a string'

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

Строки можно сравнивать при помощи операторов "

=
" (равно) или "
!=
" (не равно). При сравнении строки проверяются на посимвольное совпадение. Различные процессоры могут по-разному реализовывать процедуру сравнения, например, рассматривать разные символы с одним начертанием как одинаковые, но в одном можно быть точно уверенными — в случае, если на одних и тех же местах будут стоять символы с одинаковыми Unicode-кодами, строки будут равны.

  • Читать дальше
  • 1
  • ...
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • ...

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

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

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

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