Personal tools
You are here: Home ブログ MAGIC V10解析(2)
« February 2012 »
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      
About this blog
 当ブログサイトでは、MAGIC(uniPaaS)やDB2に関する技術者向け情報を公開しています。お気軽にお立ち寄り下さい。
Recent comments
SUBJ1 How To Keep A Man Interested 2011-10-15
Re:Club DB2 2009/8/29 muka 2009-09-01
Re:Club DB2 2009/8/29 SIM 2009-08-31
 

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)
Size 8339 - File type text/html
Category(s)
dbMAGIC
Add comment

You can add a comment by filling out the form below. Plain text formatting.

(Required)
(Required)
(Required)
スパム防止のためにコード入力が必要です。恐縮ですが下図の英数字を入力して下さい。