July 2001 Microsoft XML Parser 4.0 Technology Preview の新機能

Microsoft Corporation

July 2001

要約: この記事では、Microsoft XML Parser (MSXML) 4.0 Technology Preview July 2001 Release における新機能のいくつかについて要点を説明します。また、このリリースにおけるサイド バイ サイド機能での重要な変更点について解説します。

ご注意: この MSXML 4.0 はテクノロジープレビュー版です。現在利用されている他のアプリケーションの動作に影響を与える場合がありますので、インストールされる際はこのドキュメントを良くお読み頂き、起こりうる影響について十分理解した上でご利用ください。

目次

はじめに
新しい機能
サイド バイ サイド機能、置換モードの削除

はじめに

The Microsoft® XML Parser (MSXML) 4.0 Technology Preview July 2001 Release は、MSXML 4.0 の試験的なリリースです。このテクノロジ プレビューによって、サイド バイ サイド機能に加えられた重要な変更点を知るとともに、MSXML 4.0 のさまざまな重要な新機能について十分な検討を加えることができます。また、既知の問題の解決、パフォーマンスの向上、追加サンプルや更に完全なドキュメントも提供します。

このリリースでは、テクノロジ プレビューの April リリースと比較して、下記の主な機能追加があります。

  • World Wide Web Consortium (W3C) XML Schema (XSD) 勧告版のサポートの拡張
  • デファクト スタンダードである SAX 2 (Simple API for XML) に準拠した XML 逐次処理アーキテクチャのサポートの拡張

また、それらに加え、下記の機能に関しても強化されています。

  • SAX ベースでの XSD 検証
  • schemaLocation 属性による DOM ベースでの検証
  • スキーマ情報を利用する際に DOM を補完する Schema Object Model (SOM)
  • アプリケーションがスキーマ情報にアクセスすることを可能にする SAX の型変換
  • 約 2 倍高速になった新しい SAX パーサー
  • 4 倍以上高速になったXSLTエンジン (xsl:key のパフォーマンス関する既知バグ部分を除く)

その他の大きな変更点としては、置換モードの除去があります。MSXML 4.0 もしくはそれ以降は、厳密にサイド バイ サイドモードでインストールされます。これにより特定のバージョンに依存しない ProgID が今後サポートされないことを意味します。このような変更が行なわれた理由は、MSXML 2.6 もしくはそれ以降を対象としたアプリケーションを保守する際、特定のバージョンに依存しない ProgID によって問題が起こるという顧客からの報告があったためです。

MSXML 3.0 で搭載された ServerXMLHTTPRequest オブジェクトは、WinInet から独立し信頼性の高いサーバーサイドの HTTP アクセスを提供していました。現時点 (MSXML 4.0) では、これに類似したサーバーサイドの HTTP スタックが WinInet5 によって利用可能になりました。それは、MSXML 4.0 にて一緒にインストールされます。従って、ServerHTTPRequest オブジェクトは、このコンポーネントのフロントエンドのみを提供することとなります。

これらの機能はこのリリースの前の April リリースから実装されています。April リリースでの新機能については、こちらをご覧下さい。また、July リリースの全機能に関する詳細情報を知りたい場合は、パーサーに同梱のドキュメントをご覧下さい。

新しい機能

SAX ベースでの XSD 検証と型発見

XSD を利用した検証が SAX パーサーからでも利用可能です。SDK ドキュメントの schema-validation 機能および schemasプロパティの項にある XSD スキーマと検証の設定に関する情報を確認してください。XSD スキーマを使う時、アプリケーションからは IMXSchemaDeclHandler という拡張ハンドラによってスキーマ情報を利用できます。このハンドラは SAX2 標準に従って拡張ハンドラとして提供されます。新しいプロパティである schema-declaration-handler がハンドラを設定するために提供されます。

SchemaLocation 属性による DOM ベースでの検証と、Schema Object Model

April リリースと異なり、独立したスキーマとスキーマキャッシュを使う事を指定するかわりに schemaLocation 属性を使うことによって XSD 検証を利用することができます。下記は、スキーマがロードされるとき自動的に検証がおこなわれる XML ルートエレメントの例です。

<x:root  xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
    xsi:schemaLocation='http://xsdtesting t.xsd'
    xmlns:x='http://xsdtest' >

Schema Object Model API を利用することによって、DOM から、スキーマの型情報へのアクセスが可能になります。これらの API はロード済スキーマのブラウズを実現しています。

新しい、そしてより高速なパーサー

この July リリースでは新しいパーサーが含まれており、特に SAX を利用する際のパフォーマンスが向上しています。NewParser プロパティに適切な設定をすることで DOM からも新しいパーサーを利用することが可能です。利用するためには下記のように "True" を設定します。

dom.setProperty "NewParser", True

新しいパーサーでは DOM に非同期に XML をロードすることはできません。また、DTD を利用した検証はサポートされていません。ただし、その他のファンクションに関しては以前のパーサーよりも高速に動作します。

サイド バイ サイド機能と置換モードの削除

置換モードの削除

MSXML 3.0 までの間、最新の MSXML コンポーネントは Internet Explorer 5.0 および 5.5 での XML の直接表示のために MSXML 2.0 のシミュレートをする置換モードをサポートしていました。また、特別なユーティリティ xmlinst.exe が用意されており、実行すると特定の Windows のレジストリを書き換えることにより置換モードを有効な状態にすることができました。しかし、この方法は推奨できる方法ではありませんでした。マイクロソフトのサポートによると、多くのユーザーがこのモードを利用しようとした結果、アプリケーションとの間で多くの問題が発生しました。さらに、このような古い機能のサポートを常に維持し続けることは MSXML コンポーネント自体をとても重いものにしました。

このリリースでは、置換モードは完全に MSXML 4.0 から削除され、MSXML 2.0 エミュレーションを Internet Explorer のために利用することができなくなりました。それは Internet Explorer で XML ファイルを直接表示させようとしたときに MSXML 4.0 のコンポーネントが利用されないことを意味しています。ただし、MSXML 4.0 を HTML 内のスクリプトから XML を操るというようなよくある方法で明示的に利用することは可能です。

特定のバージョンに依存しない ProgID の削除

同じような理由のために特定のバージョンに依存しない ProgID も削除されました。このことによって、本当のサイド バイ サイド インストレーション、新しいバージョンの MSXML と既バージョンの ProgID による単純な比較が可能になります。今では CreateObject(&quotMSXML2;.DOCDocument") は、以前のバージョンと異なり、MSXML 4.0 のインスタンスではありません。もし、MSXML4.0 のオブジェクトを生成したいときは次のように指定する必要があります。: CreateObject(&quotMSXML2;.DOMDocument.4.0").もちろん、C++ や Visual Basic では、 &quotMSXML2;.DOMDocument40" で生成することができます。このような変更が MSXML 4.0 を使う全ての他の MSXML オブジェクトで必要になります。

この変更は、意図しない変更が環境に対して加えられた場合にエラーが発生することに対するコードの保守性の改善を目的としています。特定のバージョンに依存しない ProgID は開発環境においては非常に便利な存在でありましたが、実行環境上ではモジュールの互換性という観点で非常に危険な存在でありました。例えば、MSXML 3.0 が特定の場所に存在するという前提に基づいて、バージョンに依存しない ProgID を使ったコードを考えてみましょう。このときに、もしユーザーが SQL Server を MSXML 3.0 より後にインストールもしくは再インストールしていたら、全く意識しないところで MSXML 2.6 を使っていたことに気づくかもしれません。MSXML 4.0 で特定のバージョンに依存しない ProgID を取り除くことは、このような不安定要素を取り除き、サーバーサイドの企業向けコンポーネントとしての信頼性の向上につながっています。

**重要な情報:   **もし、あなたが既に April リリースの MSXML 4.0 をインストール済の場合は、この July リリースをインストールすることによってバージョンに依存しない ProgID が削除されることを認識する必要があります。これは、VisualStudio .NET をはじめとする MSXML 3.0 を利用する多くのアプリケーションに影響を与える可能性があります。このような問題を回避するためには、この July リリースをインストールする前にコマンドラインから次の 2 つのコマンドを実行し、そして April リリースの msxml4*.dll を Windows システムディレクトリの system32 ディレクトリから削除する必要があります。

regsvr32 /u msxml4.dll
regsvr32 msxml3.dll

こうすることによりバージョンに依存しない ProgIDは、MSXML 3.0 に対して明示的に関連付けられ、この作業の後にこの July リリースをインストールしても前述のような問題が起こる可能性を回避することができます。

レガシーなコードの削除

このリリースでは、以前からサポートされていたいくつかのレガシーな機能が取り去られています。これらの削除された機能の多くは置換モードのために必要であった機能です。なお、削除された機能は以下の通りです。

  • W3C 標準であり MSXML 3.0 以降にてサポートされている XSLT1.0 へと置換えられた古い XSL サポートが削除されました。
  • W3C 標準であり MSXML 3.0 以降にてサポートされている XPath 1.0 へと置き換えられた、古い XSL Pattern Language サポートが削除されました。
  • 古い XDR の基本的な <uuid: namespaces> サポートが削除されました。これにより、古い XDR のための正しい名前空間は、HTTP ベースの名前空間である、urn:schemas-microsoft-com:xml-data と urn:schemas-microsoft-com:datatypes となりました。
  • MSXML 3.0 で多くの意見を頂いた非標準の NodeFactory インターフェイスが削除されました。このインターフェイスは XML の逐次的な構文解析のために使われていました。今、そのような機能は MSXML 3.0 から搭載された SAX2 パーサーで完全に代用できます。
  • normalize-line-break に関して、現在の SAX パーサーにおいては何の効果ももたらされません。

サイド バイ サイド機能

この MSXML 4.0 のリリースは、以前の April バージョンと同じ DLL 名で出荷されています。そして、特定のバージョンに依存しない ProgID が削除されているため、MSXML 4.0 が以前にインストールされていた複数のバージョンの MSXML (2.0, 2.6, もしくは3.0) と同じインターフェイスを持つことは保証されていません。このようなサイド バイ サイド機能は Windows XP のサイド バイ サイド インストレーションでは更にディープです。それはWindows XP上であなたのアプリケーションが MSXML 4.0 を参照とようとする前に、特別な application manifest を作成する必要があります。これらの詳細に関しては、 Microsoft XML Parser 4.0 B2 と Windows XP をご覧下さい。

セパレートなWinHTTP Version 5.0 コンポーネント

従来の ServerHTTPRequest コンポーネントが持つ機能は、セパレートな WinHTTP コンポーネントとして提供されます。これは新しいサーバーサイドのコンポーネントで、信頼ある HTTP スタック機能を提供します。これにより、ServerHTTPRequest そして、DOM/SAX のサーバサイドモードなど、WinHTTP コンポーネントを利用する以外の手段では HTTP ベースのデータにアクセスできません。MSXML 4.0 をインストールする場合、対象となる OS が Windows NT®/2000/XP の場合は WinHTTP コンポーネントは自動的にインストールされます。しかし、それが Windows 98/Me の場合には、WinHTTP コンポーネントは動作しないため、インストールされません。もちろん、MSXML を Windows 98/Me にインストールすることはできます。その場合、HTTP 系の機能に関しては、既定である DOM/SAX のサーバサイドモードもしくは、XMLHTTPRequest を利用する必要があります。これらは以前と同様、WinInetコンポーネントを利用します。WinInetコンポーネントは Internet Explorer と共に各バージョンの Windows にあらかじめインストールされています。

このリリースでは、よりスリムに、速く、そして更に標準に沿った XML 処理コンポーネントのプレビューを提供しています。そしてそれは企業システムのサーバーサイド環境で安全に利用できるようになっています。