xmlhack.ru logo
>> статьи на xmlhack.ru

Что нового в MSXML 4.0

Автор: Корпорация Microsoft
Перевод: Андрей Астахов
Опубликовано на Microsoft Corporation (15.10.2001, англ.): http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnmsxml/html/whatsnew40rtm.asp
Опубликовано на xmlhack.ru (10.07.2002, рус.): http://xmlhack.ru/texts/02/msxml4/msxml4.html
В закладки:   Del.icio.us   reddit

Содержание

Введение

Первое изменение, на которое каждый обратит внимание - это новое официальное название MSXML. Первоначально MSXML был разаботан как компонент для разбора XML-кода, поэтому полное название компонента было - Microsoft® XML Parser. Однако с годами, как XML, так и MSXML развивались. Сейчас MSXML обеспечивает намного большую функциональность, чем просто синтаксический разбор. Изменение названия было осуществлено в процессе разработки после третьей версии и теперь закреплено. Новое название - Microsoft® XML Core Services - отражает новую функциональность, предоставляемую компонентом. Обратите внимание, что аббревиатура осталась без изменения - MSXML.

Версия Microsoft XML Core Services (MSXML) 4.0 от сентября 2001 - это официальная версия MSXML 4.0. Эта версия предоставляет новые существенные возможности и важные изменения, такие как параллельное функционирование версий (side-by-side functionality). Также MSXML 4.0 представляет решения известных проблем, улучшенную производительность, соответствие спецификациям, документацию и дополнительные примеры использования.

По сравнению с версией 3.0 MSXML 4.0 предлагает улучшенную и дополненную функциональность в трех основных областях:

Еще одно существенное изменение - это отказ от режима замещения. MSXML 4.0 и более поздние версии будут устанавливаться только в режиме параллельного функционирования версий. Это значит, что не зависящие от версии (version-independent) ProgID не будут поддерживаться, а существующие версии Internet Explorer не смогут автоматически использовать MSXML 4.0 (без скрипта). Причина этого изменения состоит в том, что, согласно замечаниям пользователей, не зависящие от версии ProgID создают проблемы при поддержке приложений, использующих MSXML версий 2.6 и более поздних.

Объект ServerXMLHTTPRequest, представленый в MSXML 3.0, обеспечивает надежный HTTP-доступ на стороне сервера, независимый от WinInet. Эта функциональность серверного HTTP добавлена теперь в виде нового компонента WinHTTP 5.0, который поставляется и устанавливается с MSXML 4.0. ServerXMLHTTPRequest обеспечивает только внешний интерфейс к этому компоненту.

Для ознакомления с возможностями, предоставленными в предварительной версии MSXML 4.0, выпущенной в июле 2001, читайте статью "Что нового в предварительной технологической версии Microsoft MSXML Parser 4.0 B2 от июля 2001" (на английском языке). Для получения более детальной информации о возможностях MSXML 4.0 смотрите документацию, сопровождающую компонент.

Новые возможности

Поддержка XML-схем (XML Schema)

Большое число новшеств в этой версии обеспечивает поддержку XML-схем. Вы можете верифицировать XML-код XML-схемами как в SAX, так и в DOM, используя либо внешний кэш схем, либо аттрибуты xsi:schemaLocation / xsi:noNamespaceSchemaLocation. Хотя XPath 2.0 еще не поддерживается, MSXML предоставляет функции расширения, допускаемые по стандартам, для поддержки XSD-типов в XPath и XSLT.

MSXML 4.0 обеспечивает также способ получения информации о схеме в состоятельных документах используя обнаружение типов в SAX и Schema Object Model (объектная модель схемы, SOM) в DOM. Кроме добавленной поддержки окончательной рекомендации XML-схем, MSXML продолжает поддерживать XML-Data Reduced (XDR) и определение типа документа (DTD).

Улучшение производительности

В дополнение к перечисленному, MSXML 4.0 обладает новым, более бысрым XML-парсером и существенно усовершенствованным XSLT-процессором. Вы можете использовать возможности нового парсера установив значение свойства NewParser равным True. Новый парсер еще не поддерживает асинхронную загрузку DOM или верификацию DTD. Однако все остальные функции работают также как в старом парсере, только быстрее. По результатам наших тестов MSXML показывает примерно 2-хкратное ускорение для чистого синтаксического разбора и более чем 4-хкратное ускорение XSLT-трансформаций.

Расширенная поддержка последовательной обработки XML-кода

MSXML 4.0 обеспечивает расширенную поддержку архитектуры последовательной обработки XML, основанной на SAX2 API. Эта поддержка включает:

Теперь вы можете использовать объект MXXMLWriter для создания sобытий SAX из дерева DOM. Также вы можете строить дерево DOM вне событий SAX. Эти возможности позволяют вам тесно интегрировать DOM и SAX в ваших приложениях.

Новый объект MXXMLWriter позволяет генерировать HTML-вывод используя поток событий SAX точно таким же способом, как элемент <xsl:output> в XSLT может генерировать HTML в результирующем дереве. Новый объект MXXMLWriter обеспечивает необходимую поддержку высокопроизводительным Active Server Pages (ASP), которые читают XML-документы при помощи SAX (reader), обрабатывают эти документы настроенными фильтрами SAX и выводят пользователю данные как обычную HTML-страницу. Объект MXXMLWriter также может оказаться полезным в других приложениях, таких, как например, генерация HTML-страниц.

XSLT-процессор теперь обладает возможностью принимать SAX-обработчик содержания в качестве вывода. Это означает, что цепочка SAX-фильтров может напрямую обрабатывать преобразованный XML-код. Например, вы можете использовать эту возможность, для того чтобы исключить повторную генерацию или повторный синтаксический разбор XML-кода, позволяя XML-документам быть использованными непосредственно приложением в случае, когда входящие XML-документы нужно преобразовать в документы с таким же словарем.

Новый объект MXNamespaceManager позволяет самостоятельно отслеживать объявления пространств имен и разрешать их либо в текущем контексте, либо в контексте отдельных узлов DOM. Хотя MSXML поддерживает пространства имен и может автоматически разрешать имена элементов и аттрибутов, встречается все больше случаев, когда для значения аттрибута или содержания элемента необходимо использовать полные имена (qualified names). Новый объект MXNamespaceManager позволяет легко отслеживать и разрешать полные имена.

Параллельное функционирование версий и отказ от режима замещения

Отказ от режима замещения

Вплоть до версии MSXML 3.0 можно было использовать режим замещения для того, чтобы компонент MSXML последней версии работал как MSXML 2.0, который используется в Internet Explorer 5.0 и 5.5 для представления XML в окне броузера. Специальная утилита xmlinst.exe манипулирует реестром Microsoft Windows® для достижения этого эффекта. Хотя режим замещения не является рекомендованным методом, множество пользователей испытывали этот режим и, согласно их отзывам, сталкивались с большим количеством проблем при поддержке своих приложений. В дополнение к этому, необходимость поддержки преемственного кода делала MSXML намного массивнее, чем он мог бы быть.

В настоящее время режим замещения полностью удален из MSXML 4.0 и не может быть использован для замены MSXML 2.0 в Internet Explorer. Это означает, что если Internet Explorer настроен как программа для просмотра XML-файлов, и вы дважды щелкаете мышью на XML-документе, то Internet Explorer не будет использовать MSXML 4.0 для его отображения. Однако, MSXML 4.0 все еще может быть использован стандартным способом: манипулирование XML-кодом в HTML-странице при помощи скрипта.

Отказ от не зависящих от версии ProgID

По похожим причинам была устранена поддержка не зависящих от версии ProgID. По сравнению с предыдущими версиями, в которых некоторые ProgID обновлялись при установке новой версии MSXML, отказ от них в MSXML 4.0 обеспечивает реальную установку, гарантирующую паралллельное функционирование версий. Теперь CreateObject("MSXML2.DOMDocument") не создает экземпляр объекта MSXML 4.0 DOM, а создает экземпляр объекта предыдущей версии. Если вы хотите использовать MSXML 4.0, вы должны создать объект так: CreateObject("MSXML2.DOMDocument.4.0"). Соответственно, для C++ и Microsoft Visual Basic вы должны создать объект, используя код: "MSXML2.DOMDocument40". Такие же изменения необходимо предусмотреть для создания остальных объектов MSXML, для того чтобы использовать возможности MSXML 4-й версии.

Причиной подобных изменений является усовершенствование поддержки кода, который в противном случае был подвержен к возникновению ошибок при появлении в окружении непредусмотренных измений. Проще говоря, не зависящие от версии ProgID были очень удобны для использования MSXML, но очень рискованны в окружении разработки. Предположим к примеру, что пользователь разработал код, использующий не зависящие от версии ProgID, полагаясь на наличие MSXML 3.0. Если впоследствии этот пользователь установил или переустановил Microsoft SQL Server, то может быть неожиданно обнаружено, что использовался MSXML 2.6 вместо MSXML 3.0. Отказ от не зависящих от версии ProgID в MSXML 4.0 исключает возможность появления такой нестабильной ситуации и улучшает MSXML как серверный компонент уровня предприятия.

Отказ от кода, преемствованного из предыдущих версий

Из этой версии было удалено большое число возможностей, унаследованных из предыдущих версий. Большинство из них уже не требуется из-за отказа от режима замещения. Такими возожностями являются:

Параллельное функционирование версий

Окончательная версия MSXML 4.0 поставляется с динанамическими библиотеками, названия которых (msxml4.dll, msxml4r.dll и msxml4a.dll) совпадают с названиями библиотек предварительных версий. Отказ от версие-независимых ProgID гарантирует то, что MSXML 4.0 не мешает функционированию любых установленных ранее версий MSXML (2.0, 2.6 или 3.0). Параллельная установка (Side-by-Side installation) в Windows XP делает это еще более точно для пользователей Windows XP. Это означает, что в Windows XP вы можете использовать параллельное функционирование версий, чтобы управлять тем, как ваши приложения используют MSXML и какие версии (начиная с 4.0) они используют. Чтобы осуществить это, вам будет необходимо создать специальный манифест приложения, который будет привязывать ваше приложение к определенной версии MSXML (4.0). С более детальной информацией вы можете ознакомиться в статье Microsoft XML-парсер 4.0 B2 и Windows XP (на английском языке). Если вы хотите использовать MSXML так же, как и раньше, тогда вам не нужно делать ничего дополнительно; MSXML инсталлируется в двух режимах: глобальном (как раньше) и параллельном (новом) в Windows XP.

Отдельный компонент WinHTTP версии 5.0

Функциональность компонента ServerHTTPRequest теперь обеспечивается отдельным компонентом WinHTTP. Это новый серверный компонент, обеспечивающий надежное функционирование HTTP. ServerHTTPRequest и DOM/SAX на стороне сервера не смогут получить доступ к HTTP-базированным данным без этого компонента. Когда вы устанавливаете MSXML 4.0 на компьютер с операционной системой NT®/2000/XP, то автоматически устанавливается компонент WinHTTP. Однако написанное выше не справедливо для Windows 98/Me, на которых WinHTTP не работает. Вы все еще можете инсталлировать MSXML на Windows 98 или Windows Me, но для функционирования HTTP вам нужно будет использовать режим DOM/SAX по умолчанию или объект XMLHTTPRequest, который использует компонент WinInet. Компонент WinInet предустанавливается в этих версиях Windows с Internet Explorer.

Эта версия представляет более легкие, более быстые и в большей степени соответствующие спецификациям компоненты для работы с XML, которые могут благополучно использоваться в серверном окружении в системах уровня предприятия. Также MSXML 4.0 может быть использован на клиентской стороне в контролируемом окружении, если вы сможете обеспечить установку необходимого компонента на компьютер клиента как в случаях с нетонкими клиентами (non-thin clients).

Важные замечания

Если вы установили предварительные версии MSXML 4.0 (апрельская или июньская предварительная техническая версия MSXML 4.0)

Прямое обновление предварительных версий до RTM еще поддерживается. Вам будет необходимо деинсталлировать предварительную версию и после этого установить RTM. Вам может понадобиться вручную разрегистрировать и удалить файлы msxml4*.dll из папки system32. Чтобы разрегистрировать предварительную версию MSXML 4.0, запустите на выполнение команду:


regsvr32 /u msxml4.dll

Если вы установили апрельскую предварительную техническую версию MSXML 4.0

Обратите внимание, что не зависящие от версии ProgID были устранены в MSXML 4.0 (несмотря на то, что они существовали в апрельской версии), поэтому установка этой версии лишит их функциональности. Это может серьезно повлиять на большое число приложений (например, Microsoft Visual Studio® .NET setup), использующих MSXML 3.0. Чтобы избежать этой проблемы, запустите две следующие команды из командной строки и удалите файлы msxml4*.dll из папки system32 перед установкой данной версии.


regsvr32 /u msxml4.dll
regsvr32 msxml3.dll

Это обеспечит перенаправление не зависящих от версии ProgID на MSXML 3.0. Необходимо сделать это до установки рассматриваемой версии. Если на вашем компьютере нет утилиты regsvr32.exe, вы можете загрузить ее здесь. Если вы установили более позднюю версию поверх апрельской, обратитесь за помощью в новостную группу. Еще раз обратите внимание, что вам может понадобиться вручную удалить файлы msxml4*.dll из папки system32.

От переводчика

Обновления

14 марта 2002 был выпущен MSXML 4 SP 1 - обновленная версия XML-парсера, в котором были исправлены найденные ошибки.

Скачать MSXML 4 SP 1 можно по адресу: msxml.msi (4,990 Kb)

Необходимо иметь в виду, что для инсталляции MSXML 4 SP 1 на ваш компьютер вам понадобится Windows Installer 2.0.

Необходимые ссылки:

С официальной информацией о продукте можно ознакомиться здесь.

22 марта 2002 вышли локализированные версии MSXML 4 SP 1 для китайского, японского, корейского, немецкого, французского, итальянского и испанского языков.

Информация о этих продуктах: http://www.microsoft.com/downloads/release.asp?releaseid=37455

Перевод терминов

side-by-side functionality параллельное функционирование (версий)
replace mode режим замещения
version-independent версие-независимый
conformance соответствие спецификации (рекомендации)
qualified name полное имя
parsing синтаксический разбор
validation верификация
content handler обработчик содержания
namespace declaration объявление пространства имен

Все вопросы, замечания, комментарии, указания на неточности перевода и ошибки автор перевода будет рад получить по адресу: author@astakhov.net

Дата последнего изменения статьи: 07.07.2002



Microsoft Corporation Copyright © 2007 Microsoft Corporation
Перевод: xmlhack.ru Copyright © 2000-2007 xmlhack.ru