XMLの最近の記事

【XML】OracleでXMLDB(その2)

| コメント(15)

CentOS5.2にOracle10gR2(10.2.0.1)をインストールするのに、
色々あって意外に時間を取られていました。

ネットを調べると回避策は多数書いてあるのですが、
今までインストーラが文字化けしたことがなかったので何とかできないかと苦心していましたが、
割に合わないので英語GUIで細かい点はフィーリングでソフトウェアだけインストールしています。

※推奨OSだと文字化けしないんだったか、要調査だなこりゃ。

なのでXMLDBに関する進展はありません。
最初から11gだけでやればよかったと若干後悔している今日この頃です。

【XML】OracleでXMLDB(その1)

| コメント(21)

もうコンテストも終わったのでしばらくXMLは封印しようと思っていたのですが、
昨日会社でやたらと「Oracleが、、、Oracleが、、、」というフレーズを聞いたので、
OracleのXMLDBはどうなんだったっけ?と考えてしまいました。

あとは、、、いつもの通りです(笑


まずは情報収集を、とゆーことで、ページが3つほど。

Oracle XML DB
Oracle XML DB開発者ガイド 10gリリース2(10.2)
Oracle XML DBを使用したXMLとリレーショナル・データの格納、問合せ、およびアクセス

「Oracle XML DB」はその名の通り、OracleのXMLDBに関するページです。
翻訳されていないもの、USページに繋がっているもの多数ですが、情報はたくさんあります。

「XML DB開発者ガイド 10gリリース2」は10g版のマニュアルです。
一応、10gから軽く見てみようかと思って挙げてみました。

「Oracle XML DBを使用した・・・」は11g版のチュートリアルです。
所要時間30分で体験できるそうですが、まだやってみてないです。


ということで、11gの方は前にCentOS5.2にインストールした環境があるので、
そこにXMLDBを組み込む方針で学習します。
10gの方はやる必要ないかもしれないんですけど、もうすでにCentOSに10gR2を
インストールしている最中なので、一応やっておきます。
※当初は11g対応している日本語コンテンツが無いと思っていたもので、、、、

ついに本番をやってきました。

プレゼンは緊張しっぱなしで、全然思っていたことも伝えられず、
見ていた方はさぞつまらない思いもしたのではないか?と思います。

他の方のプレゼンはスゴイモノばかり。
勉強になるものが沢山ありました。

とりあえず今日でXMLに関するプログラミング話は一旦終了します。

結果はサイトに近日中にアップされると思うので、
そちらをお楽しみにー♪

参加者、関係者の皆さん、お疲れ様でした!!


それはそうと、終了後に隣でやっていた、
IBMの「Information On Demand Conference Japan 2009」のカクテルパーティに
コンテストの出席者は参加しても良いとのことでしたので、行ってみました。

何ともバブリーな造りのホールでしたが、途中でオリラジの2人がゲストで登場!!
生あっちゃん、生シンゴくんを見ることができて、ちょっと得した気分でした。

IBM Club DB2の方々もいらっしゃったので、
セミナーには1回も参加したことはないのですが、名刺交換だけさせてもらいました。

今日は色々な人に会えたし、商品ももらえたし、
実りの多い1日でした!!

【XML】奇跡がっ!!最終審査会へ!!

タイトルの通りです。

XMLプログラミング・コンテストで、
3/6(金)の最終審査会へお呼ばれしました♪

連絡メールによると、、、
「当日は15分間のプレゼンテーション実施し、その中でデモンストレーションを実施して、、、」
とあります。
おぉぉ、やっぱり予想通りです。
まぁデモしなきゃ、作ったアプリケーションの内容も伝わらないですよね。
kもデモありきで作っているので(しょぼいけど)、それが出来る場があるだけで光栄です。

あとは恥をかかないようなプレゼン資料を準備するのと、
デモが失敗しないように練習しておかなきゃですね。

もし当日会場に来られる方がいらっしゃっいましたら、
ぜひ声を掛けて下さい。
名刺交換でもしましょう♪

本年1/22から粛々と取り組んできたXMLプログラミング・コンテスト用のアプリケーションですが、
つい今さっき、勤務先近くの郵便局から応募作品を投函してきました。

2/16が応募の締め切りになっていて、受賞候補になった場合は3/6に赤坂で審査会が行われ、
そこで15分間のプレゼンがあります。
そこまで行ければ御の字ですが、さて、どうなることやら。


それにしても、約1ヶ月近くXMLを利用したアプリケーション作成に取り組んできましたが、
XMLの仕様というか使い方を調べれば調べるほど、奥が深いんだなぁと痛感しました。
以前、XMLDBの資格試験の受験を予定していて自己都合により受験できませんでしたが、
あのまま試験を受けていたらきっとこっぴどく返り討ちにあっていたと思います。
試験を受験するなら、もっと勉強しないといけないな、と強く感じました。

コンテストの類に応募するのは初めてでしたが、貴重な経験になりました。
自宅でサンプルを実行する以外で、本格的なプログラミングするのは新人の頃以来でして、
けっこうどっぷりやっていましたが、やっぱり面白かったです。

提出物なので、一応目標とすることや守るべきことがあるのですが、
自分で仕様を決めて、自分の思う通りに実装して、自分で改良を加えて。
仕事でやるプログラミングとは違った側面でのアプローチを取りつつ、
形あるものを創造する行為はとても楽しかったです。
期間中、睡眠時間が2時間くらいになった週もありましたが、それはそれで良い思い出です(笑


何とか面白いコトになればいいなーと思いつつ、
今日はとりあえずゆっくり休みますZzz。。。。。

【AIR】アイコンの変更

flexicon1.jpgflexicon2.jpg

例のプログラムで、これらのアイコンをどう変更したらいいんだろう???
と思っていましたが、下記のページに答えが書いてありました。

[Think IT] 第4回:FlexでAIRアプリを構築するには? (3/3)


真似してアイコンを作ってみたらこんな感じになりました(笑


xmlairicon.jpg

うーーん。
やっぱセンスないなぁ。。。

この週末に学んだことと言えば、

  • DB2でのCLOBの易しい使い方
  • JavaでのCLOBの易しい使い方
です。

"易しい使い方"と評したのはまさにそうだから。
Character Large Objectなんで、もっと大きなデータのやり取りに使用するんでしょうけど、
kの場合は可変ですが最大でも2000バイトかな。
そもそもCLOBの必要あるん?と言われそーな内容です。

で、「クエリの為にクエリを発行する」とゆーことですが、

例のプログラムでアクセスしてくるクライアント別に返す結果を換えてやりたい、と考えてます。
で、今まではXQueryをJavaにハードコードしていたのですが、それをJavaのMapみたいに
キーで値を取得するような雰囲気でDBに格納しちゃいました。

なので、クライアントに結果を返す直前では本クエリの前に余計(?)なクエリを1本実行し、
準備を整えてから本クエリを発行して値を取得する、という流れになっています。

苦し紛れで実装したのですが、それでOKだったかなぁ?と、
ドキュメントをまとめながら実装を見つめ直したりしています。

あと2日以内に提出する予定ですが、
スッキリするような何かいい案が見つかりますかねぇ。。。。

【XML】DB2でXSLT

内容が単純だったこともあって、
思っていたよりXSLTの作成には時間は掛かりませんでした。
参考サイトは↓こちら。

サンプルで覚えるXSLTプログラミング - @IT

で、XSLTを作成し、Javaプログラム内で変換ロジックを実装して、
テストコードを走らせてみる、、、

TransformerFactory factory = TransformerFactory.newInstance();
// XSLファイルからtranceformerを取得
Transformer transformer =
factory.newTransformer(new StreamSource("sample.xsl"));
// 出力するエンコーディングを設定
transformer.setOutputProperty("encoding", "UTF-8");
// XMLファイルをXSLTで変換して出力
transformer.transform(new StreamSource("sample.xml"),
new StreamResult(System.out));


が、うまくいかず。
正しい整形式のXMLを使用しているにもかかわらず<aiueo value="123"/>というタグがあると、
変換して出力するロジックの箇所で「</aiueo>で終わらんとアカンで」と言われて失敗。
また、スタンドアロンのJavaプログラム(mainから)ではうまくいくのに、
Webアプリで試すと失敗する。
という訳の分からんエラーで丸1日潰れました。

今日は木曜日。
そろそろリミットなので、XSLTは諦めて元に戻すかなぁという考えが頭をよぎり始めた頃、
下記のページでXSLTの記述を発見!!(つーか見落としていた)

新しくなった DB2 バージョン 9.5 での pureXML 機能強化の概要 - developerWorks

まさに神のお告げのような内容でした。


さっそくDB2のXSLTRANSFORMスカラー関数を実装する。
変換元となるターゲットのXML文書は、生データとする為にタグの脚色を削ぎ落としてテーブルへ格納。
そして、XSLTスタイル・シートを格納するテーブルを新たに用意。
それらを以下のように結合して、DB2のXSLTエンジンを利用することにしました。

-- XMLTABLE:XMLDOC(XML文書を格納)
-- XSLTTABLE:XSLTDOC(XSLTスタイル・シートを格納)

SELECT XSLTRANSFORM(XMLDOC USING XSLTDOC) FROM XMLTABLE, XSLTTABLE WHERE ......


するとXSLTで記述した変換内容に沿って見事に新しいXML文書が!!
ギリギリで解答を見つけることができて、ホッとしました。

これで、理論上は様々なクライアントアプリに対応するXML文書を吐き出すことができるようになりました。
もう提出まであまり時間が無いので、これから他のクライアントを追加するかどうかは少し考えますが、とりあえずドキュメントの作成を開始します。

あとちょっとだぁ!!


参考URL
XMLプログラミング・コンテスト
新しくなった DB2 バージョン 9.5 での pureXML 機能強化の概要 - developerWorks
XSLTRANSFORM スカラー関数 - DB2 Version 9.5 for Linux, UNIX, and Windows
演習 8: XSLT スタイルシートを使用した変換 - DB2 Version 9.5 for Linux, UNIX, and Windows

今までXML Schemaの無い整形式のXML文書で開発してきた結果、コンテスト用のアプリはほぼほぼ完成したのですが、対応するクライアントアプリのバリエーションを増やす際にSchema無しでは実装が難しく、面倒が多くなってきたのでSchemaを作ることにしました。

XMLからスキーマ生成 - hakutoitoi's blog

めんどくさがりなkはXML Schemaを簡単に作成できないかと情報を探していたら、上記のブログに突き当たったので参考にさせてもらったところ、おかげさまで予想外にXML SchemaとDTDをサクッと作成することができました。
※とりあえず素のXMLデータ(マスターXMLデータ)用

Trang - Multi-format schema converter based on RELAX NG
Trang - 日本語翻訳されたページ

D:\trang-20081028>java -jar trang.jar master.xml master.xsd
D:\trang-20081028>java -jar trang.jar master.xml master.dtd

で、次は各クライアント用に素のXMLデータをXSLTで変換してあげようと思うのですが、
XSLTはさすがに自分で書かないとダメなんですよね、当たり前ですが。
※仕様は自分の頭の中にあるので。。。

これがまたXSLTがムズイのなんのって。

過去に軽く勉強したことはありますが、その当時もウンウン唸ってたましたが、
今回も唸ってます。


今は変換結果をIEのパーサで確認していますが(IEでエエのか?ってのはありますが)、
最終的にはこれをJavaアプリ内で実現する必要がありますねー。
ってどうやってやるんだっけな?
これも調査しておかないと、、、、


とまぁ、ちゃんとXML関連の技術を使って真っ当な道を辿ろうとすると、
結構大変なんだと思ってきました。
つーか、周辺技術も含めて本格的に勉強しないといけない気がしてきました。
コンテスト応募の為のナンパな気持ちじゃ太刀打ちできないかも、です。


提出ドキュメントもまだ書き始めていないので、土曜日までデータ標準化を頑張ってみて、
うまくいかないようであれば、現在完成している段階のデータ&アプリコードで、
提出する手筈を整えるようにします。

カテゴリ

ウェブページ

  • /img
Powered by Movable Type 6.0.1

このアーカイブについて

このページには、過去に書かれた記事のうちXMLカテゴリに属しているものが含まれています。

前のカテゴリはSQLです。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。