Переменные XSLT |
Статьи - XSLT | |||
Прекрасно, что мы можем выполнить функцию, но дело кончилось константой, запрятанной в глубине таблицы стилей. Не лучше ли было бы задавать переменные в начале страницы? Конечно, да (см. листинг 34).
XSLT позволяет создавать переменные; в ссылке используется знак доллара ($), который можно увидеть в листинге. Если применить таблицу стилей, можно увидеть два эффекта (см. рисунок12).
Обратите внимание, что ингредиенты были умножены на количество порций, как и ожидалось. Однако если вы посмотрите внимательнее, то увидите, что элемент extension сработал неверно, приняв переменную за строку, вместо того чтобы использовать значение самой переменной. Это не сбой; спецификация не требует, чтобы процессор что-либо делал со значениями атрибутов перед обработкой элемента extension. Поэтому нам надо как-то избежать этой проблемы. Первое, чтомы можем сделать - это использовать условную обработку, чтобы сообщение отображалось, только если оно нужно. Например, см.листинг 35.
Содержимое элемента if, заданное атрибутом test, должно быть равно true (истина). Если это не так, что и произошло в данном случае, вывод не появится вовсе (см.рисунок 13).
В том виде, в каком оно написано, предложение не имеет особого смысла; если значение больше единицы, элемент extention отобразится со значением"3." Лучше использовать множественный выбор (см.листинг 36).
В данном случае у нас имеется комбинация элементов if-then-else и предложения case из традиционных языков программирования. Элемент choose работает как контейнер, однако элемент when отображает его содержимое, только если его атрибут test равен true (истина).Наконец, если ни один из элементов when не равен true(истина), процессор отображает содержимое элемента otherwise. Результат получается такой, какого следует ожидать (см. рисунок14). Теперь вы можете более гибко задать отображение большего количества порций, или подстроиться под другие условия. Заключение Данное руководство позволило продвинуться от начального знакомства с преобразованиями XSLT до составления достаточно сложных таблиц стилей. Сначала вы познакомились с основами таблиц стилей, затем с выражениями XPath - одной из основ XSLT. В последней части данного руководства были рассмотрены некоторые более сложные аспекты таблиц стилей XSLT - переменные, условная обработка и расширения. В результате у вас теперь должно быть достаточно знаний, чтобы делать с таблицами стилей XSLT практически все необходимое - или хотя бы понимать, что еще надо выяснить, если столкнетесь с проблемой. |