Библиотека Microsoft XML Parser

Использование
Расширения

Основные характеристики:

Продукт, названный 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 является следующее:

В случае обнаружения подобных признаков единственным советом является обновление версии 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):

Документ source.xml, отображённый браузером Internet Explorer

Рисунок П1.4. Документ source.xml, отображённый браузером Internet Explorer

Другим, вариантом является использование утилиты командной строки msxsl.exe, которая также доступна на web-сайте MSDN. Эта утилита есть не более чем оболочка для MSXML, позволяющая вызывать основной компонент из командной строки.

Использование msxsl.exe совершенно стандартно: для применения преобразования stylesheet.xsl к документу source.xml и вывода результата в файле result.xml нужно выполнить следующую команду:

msxsl.exe source.xml stylesheet.xsl -o result.xml