CFA LogoCFA Logo Computer
Новости Статьи Магазин Драйвера Контакты
Новости
RSS канал новостей
В конце марта компания ASRock анонсировала фирменную линейку графических ускорителей Phantom Gaming. ...
Компания Huawei продолжает заниматься расширением фирменной линейки смартфонов Y Series. Очередное ...
Компания Antec в своем очередном пресс-релизе анонсировала поставки фирменной серии блоков питания ...
Компания Thermalright отчиталась о готовности нового высокопроизводительного процессорного кулера ...
Компания Biostar сообщает в официальном пресс-релизе о готовности флагманской материнской платы ...
Самое интересное
Программаторы 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
Обновить





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