Основные характеристики:
Платформы: MS Windows.
Расширения: функции расширения на JavaScript и VBScript.
Полнота реализации: один из наиболее проработанных процессоров.
Разработчик: Microsoft Corporation.
Продукт, названный Microsoft XML Parser на самом деле далеко не только парсер. MSXML — это базовый компонент, объединяющий DOM/SAX-парсер, XSLT-процессор и некоторые другие инструменты. Мы будем рассматривать только XSLT-функциональность.
Компания Microsoft начала проявлять интерес к XSLT уже на самых ранних этапах разработки языка — когда он ещё не был выделен из родительской технологии XSL. Прототип процессора, предложенный Microsoft, был одной из первых рабочих реализаций XSLT. К сожалению, в этом прототипе был реализован ранний диалект языка, не совместимый со стандартной версией XSLT. Он получил большое распространение вместе с браузерами Internet Explorer 4.0, 5.0 и 5.5 и, как результат, множество программистов и по сей день работают с нестандартной версией XSLT, которая описывается пространством имён «http://www.w3.org/TR/WD-xsl». Поддержка стандартного XSLT была реализована в версии MSXML 3.0, которая вышла в марте 2000 года (более полная, production-версия появилась чуть позже, осенью).
Ранний вариант XSLT, реализованный в MSXML 2.0 и ниже имеет схожие с XSLT 1.0 принципы, но также и целый ряд несовместимых отличий. Следует скорее сказать, что WD-xsl — это другой язык и программировать на нём тоже следует по-другому. Для того чтобы использовать стандартный XSLT в MSXML, следует обновить этот компонент, загрузив новую версию с web-сайта Microsoft. Однако, и это ещё не всё. Дело в том, что Microsoft не отказалась от старой нестандартной версии и MSXML 3.0 поддерживает её наравне с XSLT 1.0. Более того, по умолчанию, MSXML устанавливается в так называемом side-by-side режиме (англ. side-by-side — бок о бок). Это означает, что вновь установленный компонент не замещает предыдущую версию полностью. Поэтому устанавливать MSXML следует в режиме замены — по окончанию установки следует воспользоваться утилитой xmlinst.exe также доступной с web-сайта Microsoft для того, чтобы полностью заменить старую версию.
Типичными симптомами не до конца обновлённой версии MSXML является следующее:
при попытке выполнить корректные преобразования, определённые в пространстве имён с URI «http://www.w3.org/1999/XSL/Transform» не происходит ничего или выдаётся ошибка;
при попытке выполнить те же преобразования, исправив URI на «http://www.w3.org/TR/WD-xsl», процессор пытается выполнить преобразование, но выдаёт ошибку, о некорректности преобразования (в то время как оно работает на других процессорах);
в преобразованиях не работают переменные, именованные шаблоны, шаблоны значений атрибутов, ключи и импортирование.
В случае обнаружения подобных признаков единственным советом является обновление версии MSXML в режиме замены.
Перед установкой MSXML3 рекомендуется внимательно ознакомиться с документацией на предмет возможности установки в режиме замены. Некоторые программные продукты (такие, как SQL Server и Biztalk Server) используют старую версию XSLT-процессора, и обновление в режиме замены приведёт к нестабильности их работы.
Так как MSXML уже давно превратился в стандартный компонент Windows, использовать его можно разными способами — например, в собственных приложениях или как ISAPI-расширение. При разработке XSLT-преобразований MSXML, как правило, применяется либо совместно с браузером Internet Explorer, либо как самостоятельная утилита командной строки.
Первый способ заключается в том, что с XML-документом посредством инструкции xml-stylesheet ассоциируется преобразование и Internet Explorer отображает результат преобразования.
Пример П1.1. Входящий документ source.xml
<?xml-stylesheet type="text/xsl" href="stylesheet.xsl"?> <date>18.10.2001</date>
Пример П1.2. Преобразование stylesheet.xsl
?xml version="1.0" encoding="windows-1251"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <html> <head> <title>Today is page</title> </head> <body> <xsl:apply-templates select="date"/> </body> </html> </xsl:template> <xsl:template match="date"> <H1> <xsl:text>Сегодня </xsl:text> <xsl:value-of select="."/> </H1> </xsl:template> </xsl:stylesheet>
Документ source.xml будет отображён в браузере Internet Explorer следующим образом (рис П1.4):
Другим, вариантом является использование утилиты командной строки msxsl.exe, которая также доступна на web-сайте MSDN. Эта утилита есть не более чем оболочка для MSXML, позволяющая вызывать основной компонент из командной строки.
Использование msxsl.exe совершенно стандартно: для применения преобразования stylesheet.xsl к документу source.xml и вывода результата в файле result.xml нужно выполнить следующую команду:
msxsl.exe source.xml stylesheet.xsl -o result.xml