パーソナルツール
現在の場所: ホーム ブログ MAGIC V10解析(1)
« 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解析(1)

 MAGICのVersion 10(以下「V10」)のβ版が公開されてからしばらく経ちますが、正直、あまり評価のほうは進んでいない状態です。でも、そうも言ってられないので、少しいじりながら自分の備忘録のためにも、このブログですこしずつでもまとめていこうかと考えています。

 さて、V10の目玉としては、今までアプリケーションのリポジトリ自体を開くのに、データベースエンジンが必要とされていましたが、それらのソースが全てXMLになったこととです。噂では実行版を動かすときも、暗号化されたXMLを解凍してそれを読み込んで動くらしいです。(ちょっとパフォーマンス的に心配なところもあるんですけど、大丈夫なんでしょう・・・)

 XMLのリポジトリを解析する作業は、ちょっと個人的には楽しみにしているところでもあるんですけど、何しろこの数ヶ月は割ける時間が無さそうなので、地道にやろうと思っています(ライフワークが増えた?)。ちょっと見た目には、V9のリポジトリファイルよりはより理解し易い記述だと思います(当たり前ですね(^^;)。

 まずはとっつきやすいところとして、プロジェクトフォルダの下にできる「Source」フォルダを見ると、「ProgramHeaders.xml」というファイルがあります。
 これは、言わばプログラムの一覧を管理しているテーブルで、IDに対するプログラム名や、修正日付、パラメータ、コメント等の一覧を取得するには好都合のファイルです。
v10prghead.jpg

 今回は、スタイルシートを使って、このXMLファイルからプログラム一覧表を作ってみようと思います。

 まず、スタイルシートは、XML内に記述することも可能ですが、V10が作るXMLファイルを直接書き換える訳にはいかないので、DOMのオブジェクトを使い、スタイルシートとXMLをロードして表示させるHTMLファイルを作ることにします。プロジェクトフォルダに「prg01.htm」という名前で作りましょう。

<html>
<head>
<title>プログラム一覧</title>
<script language="JavaScript">
<!--
function disp(){
 var objDoc=new ActiveXObject("Microsoft.XMLDOM");
 objDoc.async=false;
 objDoc.load("Source/ProgramHeaders.xml");
 var objStl=new ActiveXObject("Microsoft.XMLDOM");
 objStl.async=false;
 objStl.load("prg01.xsl");
 lst.innerHTML=objDoc.transformNode(objStl);
}
// -->
</script>
</head>
<body  onload="disp()">
<div id="lst"></div>
</body>
</html>

 更に、スタイルシート(prg01.xsl)を作成します。
 取り敢えず、下記のソースをコピペしてください。

<?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="ProgramsRepositoryHeaders" />
</xsl:template>
<xsl:template match="ProgramsRepositoryHeaders">
 <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="Program">
  <tr>
  <td align="right" valign="top" >
<xsl:value-of select="Header/@id" /></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>

 以上で完成です。あとは、プロジェクトフォルダに置いた、「prg01.htm」をダブルクリック等で実行します。

v10prgheadxsl.jpg

 この2つのファイルをプロジェクトフォルダにコピーすれば、取り敢えずどんなアプリケーションでも、プログラムの一覧は簡単に表示させることが可能と言うわけです。

 今度は、V10を開いて、プログラムを修正してみます。「F12」キーでメインプログラムにコメントを入れてみます。

v10prgheadmemo.jpg

 プログラムは書き換わったようですが、ブラウザの再表示を行っても変化がありません。
 今度は、V10側でプロジェクトを閉じてみます。
 再度、ブラウザの再表示を行うと今度は記載したコメントが表示されました。

v10prgheadxsl2.jpg

 タイミング的には、メモリ内に編集内容が保持されているのでしょうか。プロジェクトを閉じるときに実際のリポジトリであるXMLへの書き出しが行われているようです。


カテゴリ
dbMAGIC