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 (167, 170–171, 174))

Циклы и таблицы

В прошлых статьях мы говорили о том, что возможности XSL выходят далеко за границы простого форматирования текста, хотя, как вы уже смогли убедиться, форматировать документы XML с помощью XSL легко и удобно. Пришло время продемонстрировать мощные средства XSL, предназначенные для трансформации исходного текста. Общая схема преобразования документа XML достаточно проста. Доступ к тем узлам, которые необходимо трансформировать, обеспечивается с помощью выражений XPath, после чего к содержимому этих узлов применяются шаблоны XSLT. В предыдущих статьях мы уже использовали некоторые из этих конструкций (xsl:template и xsl:apply-templates) для визуализации документов XML. Сейчас мы познакомимся с новым шаблоном xsl:for-each, который служит для организации циклов в стилевой таблице. Этот элемент языка XSLT рекомендуется использовать в тех случаях, когда результирующий документ должен иметь регулярную структуру, например, если документ следует представить в виде таблицы. Предположим, исходный документ XML имеет Рисуноктакой вид:

Рассмотрим следующую стилевую таблицу:

Если данное форматирование применить к исходному документу, то будет создан HTML-документ, содержащий таблицу, в которой каждая строка представляет собой данные об имени и заказах клиента. Инструкция xsl:for-eachобычно содержит шаблон, который последовательно применяется к узлам, описанным с помощью атрибута select. В данном примере форматирование осуществляется с помощью двух вложенных конструкций xsl:for-each. Первый шаблон xsl:for-each определяет прохождение в цикле всех элементов customer, а второй служит для того, чтобы для каждого элемента customer пройти все элементы order и оформить их в виде ячеек таблицы. Заметим, что выражение <xsl:for-each select=»customers/customer»> использует синтаксис XPath.

Рассмотрим еще один пример более подробно. Предположим, что нам требуется показать в виде таблицы следующий документ XML:

Допустим, нам понадобится вывести только название альбома и год записи песен. В этом случае следующий документ XSL можно использовать для визуализации оглавления CD-каталога:

Рассмотрим данную стилевую таблицу подробнее. Вы, наверное, заметили, что пространство имен

указанное во второй строке, отличается от пространства

которое мы использовали в предыдущих статьях. Хотя пространство имен, использованное в этой статье, не полностью соответствует последним стандартам консорциума W3C, тем не менее пользователи, у которых не установлена третья версия специальной программы-анализатора (MS parser 3.0), смогут увидеть результат преобразования XML-документа в окне Internet Explorer 5.0 (напомню, что процедура установки анализатора кратко описана в статье «XSL — зеркало для XML», МК №51–52 (170–171)). Таким образом, указав «устаревшее» пространство имен, мы обеспечили возможность преобразования документа XML вне зависимости от того, имеется или нет parser 3.0 на компьютере пользователя.

Для того чтобы понять, как работает данная стилевая таблица, пройдем по ней сверху вниз. Тэг <xsl:template match=»/»> показывает, что поиск элементов, подлежащих трансформации, нужно начинать с корневого узла. Фрагмент

определяет таблицу с двумя колонками, заглавия которых —Title и Year. Тэг

задает цикл, при прохождении которого специальное форматирование будет применяться к узлам CD, являющимся дочерними для элемента CATALOG. Атрибут order-by определяет порядок сортировки строк таблицы и не является обязательным. В данном случае таблица будет отсортирована по годам в убывающем порядке. Фрагмент

указывает на то, что в результате каждой итерации цикла формируется строка таблицы HTML, в ячейки которой заносятся значения элементов TITLE и YEAR. Обратите внимание на то, что для записи этих данных используется специальный тэг XSL xsl:value-of с атрибутом select, значением которого является имя элемента XML. В этом примере мы снова видим, как тэги XSL и HTML «сотрудничают» в стилевой таблице. Пора посмотреть, что же у нас в конце концов получилось. Создайте файл table_with_xml.xml и занесите в него документ XML. После тэга <?xml version=»1.0» ?> нужно вставить строку

декларирующую связь исходного документа со стилевой таблицей, которую в данном случае необходимо поместить в файл table_with_xml.xsl. Откройте этот файл в окне Internet Explorer, и вы увидите приблизительно такую же картинку, как на рисунке.

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

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






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

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

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





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