CFA LogoCFA Logo Computer
Загрузка поиска
Новости Компьютеры Прайс-лист [Новое] Прайс-лист [Б/У] Для ноутбуков Конфигуратор ПК Заказ, Оплата, Доставка Сервис объявления Драйвера Статьи Как нас найти Контакты
Новости
RSS канал новостей
То, что энтузиасты ждали так долго, наконец-то случилось, и компания NVIDIA анонсировала свой новый ...
Официальный анонс графического ускорителя GeForce GTX 1080 Ti состоялся 1 марта, и партнеры NVIDIA ...
Компания ASRock представила мировой общественности материнскую плату H110-STX MXM, которая рассчитана ...
Компания MSI в рамках серии Arsenal Gaming представляет пользователям материнские платы линейки ...
По данным наших коллег, в этом месяце компания Huawei официально представит свой новый смартфон. ...
Самое интересное
Программаторы 25 SPI FLASH Адаптеры Optibay HDD Caddy Драйвера nVidia GeForce Драйвера AMD Radeon HD Игры на DVD Сравнение видеокарт Сравнение процессоров

АРХИВ СТАТЕЙ ЖУРНАЛА «МОЙ КОМПЬЮТЕР» ЗА 2002 ГОД

...Не просто зеркало трельяж

Дмитрий СИТНИКОВ

(Продолжение, начало см. в МК № 48, 51—52, 3, 5 (167, 170—171, 174, 176))
В предыдущей статье мы познакомились с некоторыми элементами XSL, позволяющими оформлять те документы XML, которые имеют регулярную структуру. Мы рассмотрели пример форматирования CD-каталога в виде таблицы HTML, причем для построения таблицы использовался цикл по элементам исходного документа. Напомню, что пример, разобранный в прошлой статье, можно просмотреть в окне Internet Explorer 5.0 даже в том случае, если на компьютере пользователя не установлен майкрософтовский parser 3.0. Такая «универсальность» стала возможной благодаря использованию «устаревшего» пространства имен, которое, несмотря на некоторое несоответствие последним стандартам консорциума W3C, можно в полной мере использовать с Internet Explorer. В этой статье мы также будем применять старое пространство имен, чтобы обеспечить широкому кругу читателей возможность поработать со стилевыми таблицами XSL без необходимости устанавливать специальный анализатор XML. Тем не менее, я все же рекомендую установить parser 3.0 для того, чтобы вы могли исследовать все возможности XML, предусмотренные его современными стандартами.

Выбор за нами

Продолжим рассмотрение способов форматирования документов XML, имеющих регулярную структуру. Мы уже научились оформлять исходный код в виде таблицы HTML, отсортированной по определенному полю. Следующий шаг — форматирование элементов таблицы, выбор которых осуществляется в соответствии с некоторыми критериями. Напомню, что поиск элементов, подлежащих преобразованию, осуществляется с помощью конструкций XPath, а для их форматирования используются шаблоны XSLT, хотя провести четкую границу между XPath и XSLT довольно трудно.

Рассмотрим следующий документ XML:

Сохраните этот текст в файле products.xml. Предположим, требуется вывести данные о различных продуктах, причем необходимо выделить с помощью специального форматирования всех производителей мяса (meat). Для визуализации данного документа построим специальную стилевую таблицу:

Сохраните этот текст в файле products.xsl. Обратите внимание, что в этой таблице используется старое пространство имен (<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">). Как обычно, пройдем по документу XSL сверху вниз и разберемся, как он работает. Начнем с содержимого узла <xsl:for-each>, так как смысл текста, расположенного выше этого узла, очевиден (создается таблица и задается строка заголовка для этой таблицы). Элемент <xsl:for-each> определяет цикл по всем элементам PRODUCT. Далее в цикле создается строка таблицы, и первые две ячейки этой строки заполняются содержимым узлов ID и NAME (в ячейки заносятся идентификатор и наименование продукта). Узел <xsl:choose> («choose» означает «выбрать») используется для организации условного форматирования (скорее всего, вы уже встречали этот термин при работе с электронными таблицами Excel, где существует возможность форматирования ячейки в зависимости от некоторых условий). Если в рассматриваемой строке содержимое узла NAME равно Meat, то ячейка этой строки, расположенная в поле PRODUCER, окрашивается в красный цвет (таким способом выделяется производитель данного продукта):

Если же наименование продукта отлично от Meat, то форматирование ячейки, содержащей информацию о производителе, не отличается от форматирования всей таблицы (используется желтый фон, как указано в строке <table border="2" bgcolor="yellow">):

Далее заполняются две оставшиеся ячейки строки:

В приведенном примере мы познакомились с новым элементом XSL <xsl:choose>, в котором содержатся два «подчиненных» элемента. Тэг <xsl:when> задает условие отбора ячеек, которые нужно форматировать особым образом, а тэг <xsl:otherwise> («otherwise» означает «в противном случае») определяет, что нужно делать, если данное условие не выполняется (как в классическом языке программирования!) Обратите внимание на использование конструкции языка XPath ".[NAME='Meat']", которая служит для того, чтобы обеспечить проверку элемента NAME, являющегося дочерним для контекстного узла. Точка, стоящая перед открывающей квадратной скобкой, означает, что Рисунокпроверка осуществляется в контекстном узле (в данном случае имеется в виду узел PRODUCT, заданный в строке <xsl:for-each select="PRODUCTS/PRODUCT">).

Нам осталось лишь открыть файл products.xml в окне Internet Explorer 5.0 и увидеть результат трансформации этого документа в формат HTML (см. рис.).

(Продолжение следует)

Рекомендуем ещё прочитать:






Данную страницу никто не комментировал. Вы можете стать первым.

Ваше имя:
Ваша почта:

RSS
Комментарий:
Введите символы: *
captcha
Обновить






Рейтинг@Mail.ru
Хостинг на серверах в Украине, США и Германии. © www.sector.biz.ua 2006-2015 design by Vadim Popov