Visual Studio 2005によるXSLTのデバッグ

恥ずかしながら最近まで気がつかなかったのですがVisual Studio 2005(以降VS2005)にはなんと、XSLTデバッグ機能がついています。
今日は備忘録も兼ねてVS2005のXSLTデバッグ機能の使い方を書いておこうと思います。

  • 対象のXSLTファイルを選択する

プロジェクト等でデバッグの対象とするXSLファイルを選択してエディタペインで開くと、プロパティウインドウが以下のように切り替わりますので

それぞれに必要な値を入力します。

  • [Encoding] 使用するエンコーディングを選択
  • [Input] 入力として使用するXMLファイルへのパスをセット
  • [Output] 出力するファイルへのパスをセット。(何もセットしなければデフォルトが使われる)
  • [Schemas] デフォルトで使用するスキーマがセットされているので入力は不要
  • [Stylesheet] 現在選択しているXSLファイルのパスをセット

以上、入力が完了したならばそのままXSLを開いたままの状態でVS2005のツールバーを見ると、以下のようなストリップが追加されているはずです。

このボタンを押下するとXSLTデバッグを開始します。

以下、デバッグに使用したサンプルのXMLです。(この手のサンプルとして良く使われるbooks.xslとbooks.xmlを使ってみました)

以下、books.xslにブレークポイントを設定してXSLTデバッグを行っている様子です

見てわかると思いますがプログラム同様にブレークポイントを設定して、F10やF11(キーバインドC#の場合)でステップ実行することも当然可能です。

以下はデバッグをしている時のローカル変数ウォッチペインですが、実はここが私がVS2005のXSLTデバッグが素晴らしいと思った所です。なんと、ローカル変数として表示されている変数は対象になっているXSLTによって解釈中のXPathとして評価されているのです。(スクリーンショットではself::軸やchild::軸が見えていますし@+名前で属性が表示されているのがわかるでしょう)

また以下のようにデバッグ途中のXSLTの出力結果が別ウインドウに表示されるので、実際のXSLT変換結果を確認することもできます。更新が滞る場合はコンテキストメニューで"Refresh(更新)"を行うことで最新の状態にすることもできたりします。

サーバ側から提供するXMLコンテンツを幾通りにも変化させることができるXSLTはWebベースシステム、サービス中心のシステムでは重宝しますが、XSLTは言語としては決して解り易いほうではありません。実際にどのようにXSLTがなされるのかを追うにはデバッグできれば良いのですが、XSLTのインタラクテイブなデバッグは従来は専用の高価なツールが必要でした。VS2005は最初からそのデバッグ機能が付いているのですから、追加で高価なツールを買う必要がありません。私もそれまではXMLSpyというアプリケーションを使っていましたがもう購入する必要は無さそうです。

Visual Studio 2005 製品ライン概要を見るとXSLTデバッグ機能はStandard Edition以上で使用できるように見えます。