XSLT技術調査 | パークのソフトウエア開発者ブログ|ICT技術(Java・Android・iPhone・C・Ruby)なら株式会社パークにお任せください

パークのソフトウエア開発者ブログ|ICT技術(Java・Android・iPhone・C・Ruby)なら株式会社パークにお任せください

開発の解決方法や新しい手法の情報を、パークのエンジニアが提供します。パークのエンジニアが必要な場合は、ぜひお気軽にお問い合わせ下さい。 株式会社パーク:http://www.pa-rk.co.jp/

現在携わっているプロジェクトにて取り扱っている、キヤノンソフトの商品Integrity(インテグリティ)。

Integrityとは、ソフトウェア開発におけるプロセスと成果物を管理し、開発部門やIT部門における生産性や品質向上に寄与するALM(Application Lifecycle Management)プラットフォームです。
また、アプリケーション・ライフサイクルの上流から下流まで、すべての工程のプロセスとワークフローを定義して、プロセスに従ったアプリケーション開発を実現することが可能となります。
開発プロジェクトを可視化することができ、迅速かつ正確な問題把握やコンプライアンス対策にも役立ちます。

特徴は以下の通りです。
①変更要求と作業対象となるソースやファイルを紐づけた管理に対応
 →従来、個別に管理されていた各種作業要求と作業対象となるソースやファイルといった成果物を紐づけて管理することができる。
②柔軟な設計
 →オープンな開発工程管理統合ソリューションであるため、お客さまの環境やプロセスに対応した開発工程管理を行うことができる。
③一元管理が可能
 →オープン系から汎用機まで様々なプラットフォームが混在したシステム環境の開発プロジェクトの一元管理が可能です。
④管理対象となる全てのデータをシングルリポジトリに保管・管理
 →単一のデータベースに管理対象となる全てのデータを格納します。

主な機能は以下の通りです。
①プロセス管理
 →ワークフロー機能により全工程のプロセス管理や標準プロセスへの適合が可能
②チャート、レポート、ダッシュボード機能
 →蓄積された各種データを任意の角度から分析、可視化が可能
③充実したソース管理機能
 →管理ファイルのバージョン管理はもちろん、直感的なバージョン遷移の表示、ロック設定や権限設定など詳細なポリシーを設定が可能

このように、Integrityを導入することにより、以下のようなメリットがあります。
①柔軟なプロセス定義と権限設定により、業務プロセスをそのまま実装可能
 →お客さまの開発プロセスをそのままシステム化することが可能なため、柔軟にプロセス改善が可能となる。また、「ステータスの変更」や「担当が割り当てられた」などをメールにより通知が可能となっている
②関連するすべての作業状況(プロジェクト状況、要員状況、タスク状況 等)について、リアルタイムな把握、指定日時の把握が可能
③業務の効率化、品質向上を目的としたプロセス改善の結果として、プロジェクト管理、ITサービス管理(IT統制)の支援が可能

上記に記載した機能のほかに、Integrity内で作成した文書をword形式にてエクスポートする機能もあります(import機能もあり)。
その際、「Integrity内でのドキュメント⇔word形式ドキュメント」の変換処理としてXSLTファイル(変換ファイル)が用意されています。
お客さま毎にこの変換ファイルの内容を変更し、出力する項目をカスタマイズします。

今回、この「XSLTファイル」関連の作業を初めて行ったので、技術調査として取り上げたいと思います。

1.XSLTとは
 ・XSLTはXML Stylesheet Language Transformationsの略
 ・XSLのもっとも重要な部分
 ・XSLは、以下の3つの部分から構成されている
  ①XSLT - XML文書を変換するための言語
  ②XPath - XML文書内をナビゲートするための言語
  ③XSL-FO - XML文書をフォーマットするための言語
 ・XML文書を他のXML文書に変換するための簡易言語
 ・「XSLTスタイルシート」とXSLTプロセッサ(Internet Explorer6など)によりXML文書のデータ構造を変換
 ・拡張子は「.xsl」
 ・W3C勧告

2.HTMLとの違い
 [HTML]
  ・決められたタグを持つ
  ・スタイルシート(CSS)の使用により、HTML要素へのスタイル追加が容易

 [XSLT]
  ・決められたタグを持たない(好きなタグ名の使用が可能)
  ・「スタイルシート」はHTMLのCSSとは全く異なるもので、どうXML文書を表示するかを記述するもの

3.テンプレートルール
 ・XML文書中の「どの要素をどのように変換したいか」を記述
 ・XML文書をXSLファイルで変換し、結果ツリーを生成することで実現する。
 ・1つのスタイルシートの中に複数のテンプレートルールの記述が可能

4.XMLファイル側の対応
 XSLを作成するだけではなく、XMLに関連付けをする必要があります。
 以下のように、XMLドキュメントに「xml-stylesheet」処理命令を追加し、「href」属性に関連付け対象となるXSLファイルを記述します。
 (例として、作成するXSLファイル名を「xslFileName.xsl」とします。)
 なお、XMLファイルとXSLファイルは同一フォルダに配置する必要があります。





5.問題点と解決策
 [問題点①]
  ブラウザがXSLT未対応の場合は動作しない
 [原因]
  XSLスタイルシートをXMLファイルに追加しブラウザ側で変換する方法であるため
 [解決策]
  ・変換にJavaScriptを使用する
  ・クライアント側でXMLをHTMLに変換する
  (注)だたし、ブラウザがXMLパーサを持っていることが条件
 [ポイント]
  ・XSLスタイルシートをXMLファイルに記述する必要がない
  ・XMLとXSLファイルをロードし表示するためのソースコードがクライアント側で必要となる

 [問題点②]
  ブラウザがXMLパーサを持っていない場合はJavaScriptでも動作しない
 [解決策]
  ・サーバ側でXMLをHTMLに変換し、ブラウザに返す
 [ポイント]
  ・XSLスタイルシートをXMLファイルに記述する必要がない
  ・サーバ側でXMLファイルをHTMLに変換するためのソースコード(ASP)が必要となる

7.まとめ
 今回、XML文書をHTMLのような他の形式に変えるためにXSLTを使用する方法を学んだ。
 XMLとの関連付けをソースに埋め込む方法だけでなく、クライアント側およびサーバ側での対応方法があることも知ることができたのでとても勉強になった。
 また、XSLTには100以上の組み込み関数が含まれているとのことなので、今後も勉強を続けていきたいと思う。