Оригинал статьи: What's
New in the September 2001 Microsoft XML Core Services (MSXML) 4.0 Release
Все права на информацию, содержащуюся в данной
статье, принадлежат Microsoft Corporation.
Скачать MSXML 4.0 с MSDN
Downloads
Автор перевода: Андрей Астахов
Введение
Первое изменение, на которое каждый
обратит внимание - это новое официальное
название 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 предлагает
улучшенную и дополненную функциональность в
трех основных областях:
Широкая поддержка окончательной рекомендации
World Wide Web Consortium (W3C) по XML-схемам (XML Schema, XSD).
Существенные улучшения производительности.
Расширеная поддержка архитектуры
последовательной обработки XML, основанная на
стандарте de facto: Simple API for XML (SAX2).
Еще одно существенное изменение - это отказ от
режима замещения. MSXML 4.0 и более поздние версии
будут устанавливаться только в режиме
параллельного функционирования версий. Это
значит, что версие-независимые 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. Эта поддержка включает:
Интеграцию моделей разбора DOM и SAX
Возможность генерации HTML-вывода (HTML
output)
Возможность подключения обработчика
содержания SAX (SAX content handler) к выводу XSLT-процессора
Отслеживание объявлений пространств
имен
Теперь вы можете использовать объект MXXMLWriter
для создания sобытий SAX из дерева DOM. Также вы
можете строить дерево DOM вне событий SAX. Эти
возможности позволяют вам тесно интегрировать DOM
и SAX в ваших приложениях.
Новый объект MXXMLWriter позволяет генерировать
HTML-вывод используя поток событий SAX точно таким
же способом, как элемент в 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 как
серверный компонент уровня предприятия.
Отказ от кода, преемствованного из предыдущих
версий
Из этой версии было удалено большое число
возможностей, унаследованных из предыдущих
версий. Большинство из них уже не требуется из-за
отказа от режима замещения. Такими возожностями
являются:
Старая версия XSL, не соответствующая
спецификации, которая теперь окончательно
заменена W3 стандартом XSLT 1.0. Полная поддержка XPath
1.0 обеспечена с версии MSXML 3.0.
Старая версия XSLPattern language, не
соответствующая спецификации, которая теперь
окончательно заменена W3 стандартом XPath 1.0. Полная
поддержка XSLT 1.0 обеспечена с версии MSXML 3.0.
Старое рудиментарное пространство
имен uuid:, не соответствующее спецификации.
Правильным пространством имен для поддержки
старой версии XDR теперь являются HTTP-ориентированные
пространства имен: urn:schemas-microsoft-com:xml-data и
urn:schemas-microsoft-com:datatypes.
Старый интерфейс NodeFactory, который не
рекомендовывалось использовать в MSXML 3.0. Этот
интерфейс предназначался для последовательного
разбора XML. Теперь он полностью заменен SAX2-парсером,
доступным с версии MSXML 3.0.
Опция normalize-line-break теперь не действует
при использовании SAX-парсера. Концы строк всегда
нормализуются согласно спецификации XML.
Параллельное функционирование версий
Окончательная версия 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
Это обеспечит перенаправление версие-независимых
ProgIDs на MSXML 3.0. Необходимо сделать это до установки
рассматриваемой версии. Если на вашем компьютере
нет утилиты regsvr32.exe, вы можете загрузить ее здесь.
Если вы установили более позднюю версию поверх
апрельской, обратитесь за помощью в новостную
группу. Еще раз обратите внимание, что вам может
понадобиться вручную удалить файлы msxml4*.dll из
папки system32.
Перевод терминов
side-by-side functionality
replace
version-independent
conformance
qualified
parsing
validation
content handler
namespace declaration |
параллельное функционирование (версий)
режим замещения
версие-независимый
соответствие спецификации (рекомендации
полное имя
синтаксический разбор
верификация
обработчик содержания
объявление пространства имен |
Все вопросы, замечания, комментарии, указания на
неточности перевода и ошибки автор перевода
будет рад получить по адресу: xml@astakhov.net
Источник: www.marketer.ru |