XSLT-преобразования.
Любой человек, который имеет претензии на программирование, просто обязан освоить XSLT. Это особый вид программирования - программирование, управляемое шаблонами. Так же, как изменяется мышление при переходе от процедурного к обьектному программированию, или от обьектного к рекурсиям, управлямым условиями (как в Lisp), так же измениться ваше мышление, когда вы осознаете, что в XSLT-преобразовании все строки программы выполняются одновременно.
Перед тем, как непосредственно начать рассматривать XSLT-трансформации необходимо понять как передвигаться по дереву XML-документа.
Передвижение по дереву XML-документа похоже по передвижению по любой иерархической структуре - файловой системе или реестру, но только щелчки мышкой оконный интерфейс преобразует в конкретные команды навигации по документу, которые в сущности являются отдельным языком программирования - Xpath. В XSLT-транформации никакой мышки нет, передвигаться по документу надо непосредственно командами в программе, поэтому сначала попробуем конкретно и детально рассмотреть как именно командами можно передвигаться по дереву XML-документа (да и вообще по любой иерархической структуре - этот же Xpath используется и в запросах к SQL-серверу и во многих других областях).
Предположим мы имеем некоторую строку, разбитую тегами по правилам XML-документа (а в браузере IE этот XML-документ будет отображаться так):
С помощью специального инструмента Visual_XSLT, встраиваемого в .NET студию, представим эту строку в более удобном виде в виде дерева XML-документа с дочерними узлами и атрибутами узлов. В момент, изображенный на рисунке, текущим узлов дерева является - /catalog[1]/provider[1]/item[1]. Здесь детально рассмотрен язык передвижения по этому дереву - Xpath и его специальное подмножество - паттерны.
Если вы уже разобрались разобравшись с переходами по дереву XML-документов, с патернами для отбора узлов документа, то после этого можно начинать разбираться непосрественно с XSLT-транформациями.
XSLT-трансформации - это специальный язык для преобразования XML-документов. Определение этого языка (как и самого XML) создано консорциумом W3.ORG - ознакомиться с ним можно здесь. Вообще говоря, я скачивал к себе зеркало сайта W3.ORG - оно оказалось очень большим - около 10 тысяч папок. И самая большая папка посвящена именно XSLT-трансформациям - корневая папка TR сайта W3.ORG содержит 1220 подпапок с документами. Также этот вопрос детально рассмотрен в MSDN. Короткий справочник по этому языку находится здесь.
Инструментов для работы с XML и XSLT существует множество, но Visual_XSLT лично мне нравится тем, что подсвечивает синтаксис, дает все контекстные подсказки, имеет очень хороший Xpath-навигатор с подсказкой, сразу строит схему документа, мапирует один XML-документ на другой - при этом все отлично встроено в .NET студию.
И напоследок рассмотрим один конкретный практический пример. Для моего сайта мне нужна была вот такая сводная страничка стандартов. В то же время у меня был вот такой XML-файл от IETF:
Быстренько в Notepade я набираю вот такую трансформацию:
И далее прогоняю XSL-транформацию майкрософтовской утилиткой MSXSL - результат преобразования перед вами:
На тему XSLT у меня на еще одна статья, написаная гораздо позже.
|