XPathによるXMLレポートの機能拡張

前回の記事では、...について解説しました GPS XMLデータを用いた、洗練されたレポートの作成 標高線グラフを作成するために、XMLドキュメントから特定のノードを選択するためにXPath式を使用しました。XPathは、値の計算にも利用できます。 Altova StyleVision XPathに対する強力なサポートが含まれており、XPath式を利用することで、GPSのXMLレポートに興味深い情報を追加することができます。例えば、GPSデバイスが記録した標高データをメートル単位から読み込み、それをフィート単位に変換して、海抜からの高さをグラフで表示することができます。

メートルをフィートに変換する式は、(メートル × 3.2808399) = フィート です。この計算は、グラフ設定ダイアログで利用できます

次に、取得したデータに基づいて計算を行い、その結果を用いてグラフを作成します。

XPathの時間関数

当社のグラフには、X軸の目盛りの定義が含まれていないことに気づかれたかもしれません。これは意図的なものです。GPSデバイスは、数秒ごとに位置情報を記録するため、X軸から目盛りと値を意図的に省略しました。今回の氷上登山に関するデータファイルには、1,800以上の高度データが含まれており、その膨大なデータ量によって、目盛りが連続した線として表示されてしまいました。また、値の表示スペースも十分ではありませんでした。

しかし、ハイキングにかかった時間を知ることができれば、もっと興味深いレポートになるでしょう。StyleVisionの自動計算機能を活用することで、その情報をレポートに組み込むことができます。以下に示すデザインの例では、レポートに「挿入」→「自動計算」→「値」というメニューオプションから3つの自動計算要素を追加し、説明的なテキストを追加しています。

任意の自動計算要素を右クリックすると、メニューが表示され、その中に「XPathの編集」ダイアログへのアクセスが可能です。以下に、縮小表示したダイアログの例を示します。このウィンドウにXPath式を直接入力することもできますし、要素、演算子、関数の一覧から選択してXPath式を構築することもできます。

旅行の経過時間を計算するには、XPathの関数 max(anyAtomicType)min(anyAtomicType) を使用し、各トラップポイントの time 要素に対してXPath式を適用することで、トラックに記録された最も早い時間と最も遅い時間を特定できます。最も遅い時間から最も早い時間を差し引くことで、経過時間を計算できます。

オート計算の右クリックメニューにある別の項目を選択すると、「値の書式設定」ダイアログが開き、計算結果のデータ型に適した様々な書式をすぐに選択できます。

また、min()関数やmax()関数を使って、出発時刻と到着時刻を選択することも可能ですが、GPSデバイスが記録するデータは協定世界時(GMT)で、今回のハイキングはアメリカ合衆国の東部標準時(Eastern Standard Time)で行われ、現地時間は5時間遅れています。

幸いなことに、XPathには、dateTime値を別のタイムゾーンに調整するための特別な関数 adjust-dateTime-to-timezone() が用意されています。以下に、出発時刻を調整するために使用した式を示します

adjust-dateTime-to-timezone(最小( $XML/n1:gpx/n1:trk/n1:trkseg/n1:trkpt/n1:time ), xs:dayTimeDuration('-PT5H') )

注意点として、調整期間は文字列として入力する必要があり、かつ、明示的に「dayTimeDuration」というデータ型として宣言する必要があります。

値の書式設定ダイアログを使用することで、出発時刻と到着時刻を、より馴染みのある形式で表示することができます

GPS XMLレポートに関して、XPathの機能強化をさらに一つ追加しました。弊社の 以前の投稿について スタイルビジョンプロジェクトと標準化されたファイル名を使用することで、SPSファイルを変更することなく、複数のデータファイルに対してレポートを生成する手法について説明しました。また、StyleVisionBatchユーティリティや、さらにStyleVision APIを利用することで、SPSスタイルシートを通じて処理を自動化し、様々な形式のレポートを作成することも可能です。

グラフファイル名

HTML形式の出力を作成し保存する場合、メインのレポートはHTMLドキュメントであり、グラフは個別の画像ファイルとして保存されます。グラフのファイル名を「グラフ設定」ダイアログで指定できますが、サーバー上の同じフォルダに複数のHTMLレポートを保存したい場合は、それぞれのグラフに対して異なるファイル名が必要になります。そうしないと、新しいグラフが作成されるたびに、デフォルトのファイル名が使用され、以前のバージョンが上書きされてしまいます。

「カスタムファイル名」オプションを使用すると、XPath式を使って、画像ファイルの名前を別の名前に指定することができます。簡単な解決策としては、ランダムな数値を生成し、それを文字列に変換して、その文字列をファイル名に挿入する方法が考えられます。

しかし、それはできません。なぜなら、XPathには乱数を生成するrandom()関数が含まれていないからです。

代わりに、2つの追加のXPath時間関数を組み合わせることで、疑似乱数文字列を生成できます。seconds-from-time()関数は、任意の値を秒とミリ秒で返します。また、current-time()関数は、現在のシステム時間を時間、分、秒、ミリ秒で返します。

画像ファイルの設定ダイアログで、XPath式に「現在時刻からの秒数 (current-time())」という情報を埋め込むことで、HTMLの結果が生成された正確な秒数とミリ秒に基づいてファイル名を生成することができます。ファイル名を生成するためのXPath式の完全な記述は以下のようになります

生成されたHTMLファイルを保存すると、StyleVisionは、メインのドキュメントと共に作成されたすべての追加ファイルを報告します

ルートマップの画像ファイル名

旅行レポート用の複数のHTMLページを作成する場合、それぞれの旅行に対応した異なるルートマップの画像を参照する必要があります。XPathはこの作業にも役立ちます。当初、私たちは特定のファイル名を用いたURLで地図画像を挿入していましたが、代わりに、スタイルシートが処理される際に渡されるパラメータとして、画像ファイル名を定義することができます。

「編集 / スタイルシートパラメータ」メニューを選択すると、「パラメータ編集」ダイアログが開きます。このダイアログでは、スタイルシートのすべてのパラメータを一元的に管理できます。以下に示すスクリーンショットでは、「routeMapFile」というパラメータを追加し、そのデフォルト値を設定しています。

これで、このパラメータを使って、ルートマップファイルを指定することができます。画像編集ダイアログには、画像の配置場所を定義するための4つのオプションがあります。以下に示すスクリーンショットでは、特定のフォルダパスと動的なファイル名に対して、「静的」と「動的」のタブを選択しています。

レポートを任意の形式で生成する際に、routeMapFile パラメータに新しい値を指定することができます。新しい値を指定しない場合、編集パラメータダイアログで定義されているデフォルト値が使用されます。

さて、ここで、StyleVisionをバッチモードで実行し、異なるルートマップ画像を使用するためのコマンドラインを作成できます

また、パラメータを使用してグラフの背景色を指定することも可能です。さらに、コマンドラインオプションを使用することで、スタイルシートで定義されている既存のXMLファイルを、別の入力XMLファイルに置き換えることもできます。これらのパラメータとコマンドラインオプションにより、StyleVisionBatchは、同じスタイルシートを使用して、さまざまなデータセットに対してレポートを生成するのに非常に優れたツールとなります。

以下に、XPathによる改善をすべて適用した、アイスクライミングツアーのデータに関するHTMLプレビューを示します

GPSのXMLファイルに基づいて独自のレポートを作成したり、その他のXMLレポート、電子フォーム、またはマルチチャネルでの公開といった要件を洗練された方法で実現したりするには、Altova StyleVisionの無料トライアルをこちらからお試しください