パーソナルツール
現在の場所: ホーム ブログ MAGIC V10解析(2)
« 2018January »
Su Mo Tu We Th Fr Sa
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      
このBlogについて
 代表の向井田ことMUKAです。当ブログサイトでは、MAGICやDB2に関する技術者向け情報を公開しています。お気軽にお立ち寄り下さい。
最近のエントリ
twitter / 新RT機能を英語モードで・・・ muka 2009年11月19日
twitter / List Widget muka 2009年11月03日
twitter API / Retweet の仕様が・・・ muka 2009年10月30日
twitter API / Lists muka 2009年10月24日
IBM Rational Software Conference 2009 と アジャイル開発 muka 2009年10月08日
twitter API / geoタグ! muka 2009年10月01日
Twitter Developers Meetup in Tokyo muka 2009年09月11日
Club DB2 2009/9/4 muka 2009年09月05日
最近のコメント
Re:Club DB2 2009/8/29 muka 2009年09月01日
Re:Club DB2 2009/8/29 SIM 2009年08月31日
最近のトラックバック
Club DB2 8/29の感想エントリと今後の予定 Unofficial DB2 BLOG 2009年09月01日
カテゴリ
misc (47)
dbMAGIC (47)
DB2 (47)
mail (47)
Web (47)
twitter (47)
 

MAGIC V10解析(2)


 前回は、開発中のアプリケーションを管理しているXMLファイルからプログラムの一覧を取得するためのスタイルシートを作成しました。「ProgramHeaders.xml」というファイルを見ることにより、プログラムの一覧が取得できることがお分かり頂けたと思います。

 プログラム関連のファイルには、「ProgramHeaders.xml」というファイル以外にもいくつかあるようです。これらをまとめると下表のようになります。

No.
ファイル名
主な目的
1
ProgramHeaders.xmlプログラムをID順に列挙し、プログラム名や更新時刻を記述
2Progs.xml開発画面のプログラムリポジトリの表示並び順を管理
また、フォルダの情報と、そのプログラムリポジトリ画面内の位置を管理
3Prg_####.xml
実際のプログラム毎の内容を記述。
「####」はプログラムのidで、登録順に連番が振られる。画面の表示番号とは必ずしも一致しない。

 さて、ここで話は変わります。V10になって、リポジトリ出力の形式もすべてのタイプについてXMLとなっているようです。
 「リポジトリ入出力」で、「タイプ」を「E=プロジェクト全体」として指定すると、アプリケーション全てを1個のXMLファイル(ファイル名初期値:「Project.xml」)に出力するようです。

 これをieで開くと下記のような構造になりました(ルート配下のみ表示)。

v10project.jpg

 V9までのリポジトリファイルをご存知の方はよく分かると思いますが、構造的にはほぼ同一で、順番も似ています(HelpRepositoryの位置はだいぶ前に移動などしていますが・・・)。
 それでは、このプロジェクトリポジトリのXMLファイルの中で、プログラムの関連はどのように記述されるのでしょうか?
 メインプログラムに相当する部分を、プロジェクトリポジトリで表示すると下図のようになります。

v10prg_project.jpg

 同じメインプログラムのリポジトリファイル(Prg_1.xml)を表示すると下図のようになります。

v10prg_prog_1.jpg

 結論的には「Prg_####.xml」を、(ID順ではなく)プログラムリポジトリ画面表示順に出力したものとなっています。ProgramHeaders.xmlや、Progs.xmlに記載されていた内容はありません。これらの2つのファイルは、プログラムの追加や削除などの更新による表示順を管理しているだけで、最終的な段階では吸収されるものと考えることができます。

 今回は、ためしに、このプロジェクトリポジトリのXMLから前回と同様にプログラムの一覧を取得してみます。

 前回作成したファイル(prg01.html、prg01.xsl)をそれぞれコピーして「prg02.html」、「prg02.xsl」を作成します。それぞれのソースを下記のように修正して下さい。

prg02.htmlの9行目と、12行目を下記のように修正します。(2つの読み込むファイルを変えるだけです。)
9行目:    objDoc.load("Export/Project.xml");
12行目:    objStl.load("prg02.xsl");

prg02.xmlは下記のソースをコピペします。

<?xml version="1.0" encoding="Shift_JIS" ?>
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="html" version="4.0" encoding="Shift_JIS" />
<xsl:template match="/">
<html>
<head><title>プログラム一覧</title></head>
<body>
Version : <xsl:value-of select="Application/Header/Version/@val"/><br/>
WithIsn : <xsl:value-of select="Application/Header/WithIsn/@val"/><br/>
<xsl:apply-templates select="Application" />
</body>
</html>
</xsl:template>
<xsl:template match="Application">
<xsl:apply-templates select="ProgramsRepository" />
</xsl:template>
<xsl:template match="ProgramsRepository">
<xsl:apply-templates select="Programs" />
</xsl:template>
<xsl:template match="Programs">
<table border="2" width="100%" align="center">
<tr bgcolor="#f0f0c0">
<td align="center" colspan="7"><b>ProgramsRepositoryHeaders</b></td>
</tr>
<tr bgcolor="#c0f0f0">
<td width="6%" align="center" valign="middle" rowspan="2">
<nobr>id</nobr></td>
<td width="44%" align="center" valign="middle" rowspan="2">
<nobr>Description</nobr></td>
<td width="10%" align="center" valign="middle" colspan="2">
<nobr>Parameters</nobr></td>
<td width="10%" align="center" valign="middle" colspan="2">
<nobr>LastModified</nobr></td>
<td width="30%" align="center" valign="middle" rowspan="2">
<nobr>comment</nobr></td>
</tr>
<tr bgcolor="#c0f0f0">
<td width="5%" align="center" valign="middle"><nobr>Count</nobr></td>
<td width="5%" align="center" valign="middle"><nobr>Attributes</nobr>
</td>
<td width="5%" align="center" valign="middle"><nobr>Date</nobr></td>
<td width="5%" align="center" valign="middle"><nobr>Time</nobr></td>
</tr>
<xsl:for-each select="Task">
<tr>
<td align="right" valign="top" ><xsl:value-of select="position()"/>
</td>
<td align="left" valign="top" >
<xsl:value-of select="Header/@Description" /></td>
<td align="right" valign="top" >
<xsl:value-of select="Header/ReturnValue/ParametersCount/@val" /></td>
<td align="left" valign="top" >
<xsl:value-of
select="Header/ReturnValue/ParametersAttributes/@ParametersAttributes"/>
</td>
<td align="left" valign="top" >
<xsl:value-of select="Header/LastModified/@date" /></td>
<td align="left" valign="top" >
<xsl:value-of select="Header/LastModified/@time" /></td>
<td align="left" valign="top" >
<xsl:value-of select="Header/Comment/@val" /></td>
</tr>
</xsl:for-each>
</table>
<p />
</xsl:template>
</xsl:stylesheet>

 前回は、プログラムのIDを「Application/ProgramsRepositoryHeaders/Program/Header/@id」で取得しましたが、今回の場合は、
 プログラム番号を「Application/ProgramsRepository/Programs/Task/position()」で記述の順番から取得しています。(position関数を使用)
 比較してみて頂ければお分かりかと思いますが、前回とほとんど似たようなソースとなっていますが、微妙にノードが変わっています。

 それでは、プロジェクトリポジトリをスタイルシートで表示させてみます。

v10projectPXLS.jpg

前回とほぼ同様の結果が得られることが分かりました。
プロジェクトファイルともなると、膨大な、サイズのファイルになる場合も多いかと思いますが、このような簡単なスタイルシートを作成しておくことにより、その全体像を知ることが可能です。これもXMLならではのことですね。


MAGIC V10解析(1) MAGIC V10解析(1)
サイズ 8337 - File type text/html
カテゴリ
dbMAGIC