• 検索結果がありません。

3.XML の 記 述 3-1 XML の 記 述 の 決 まり 1 XML 文 章 であることを 宣 言 する 2 文 字 コードを 指 定 する 3 すべての 要 素 には 終 了 タグを 書 く 4 すべての 要 素 は 正 しく 入 れ 子 にする 5 XML 文 章 には 1 つのルート

N/A
N/A
Protected

Academic year: 2021

シェア "3.XML の 記 述 3-1 XML の 記 述 の 決 まり 1 XML 文 章 であることを 宣 言 する 2 文 字 コードを 指 定 する 3 すべての 要 素 には 終 了 タグを 書 く 4 すべての 要 素 は 正 しく 入 れ 子 にする 5 XML 文 章 には 1 つのルート"

Copied!
10
0
0

読み込み中.... (全文を見る)

全文

(1)

XMLとXSLTについて

総合情報基盤センター技術専門職員 畑 篤 hata@cns.toyama-u.ac.jp 1.はじめに インターネットの急速な発展に伴い、コンピ ュータを介して、組織や個人を結びつけるよう になってきました。これらの情報は主にHTML 形式の情報です。 しかし、HTML 形式の情報では、複雑なデー タ構造が記述できないなどといった、表現力に 限界があります。 そこで、注目されたのがXML 形式の情報です。 ここでは、XML の特徴及びその利用方法等に ついて紹介します。 2.XML について

2-1 XML(eXtensible Markup Language) HTML のようなシンプルなフォーマット で文章構造を記述でき、独自にタグを定義する ことができるマークアップ言語です。 2-2 XML の特徴 ・ 文章のデータに意味づけが出来る XMLでは、データ開始タグと終了タグで 括って記述することで、各データに意味付け を行います。 ・ 記述規則が比較的簡単 ・ レイアウト用の定義は含まない XML文書には、「データをどうするか?」 というような見た目のデザインを記述する ものは含まれません。XML文書をどう表示 するかはCSSやXML専用のスタイルシ ートであるXSL側で記述します。 ・ プラットフォーム独立 XMLはテキストベースなので、特定のバ イナリフォーマットのデータ形式と比較す 2-3 利用分野 ・ Webサービス 例えば、ある条件にあった物をネットワー クで検索した場合、今までは利用者自身が各 サイトに個別アクセスして検索しましたが、 Webサービスが提供されれば、各サイトに アクセスした結果をまとめ、利用者の条件に あった物を探しだすというサイトを従来より も簡単に構築することができます。 ・ EC(Electoric Commerce) ECとはインターネットなどのネットワー クを介した電子商取引のことです。 この電子商取引では企業間の流通するデー タの変換フォーマットとしてXMLが利用さ れています。また、Webベースの受発注シ ステムはコンテンツ配布とともに、サーバサ イドのアプリケーションの構築にもXMLが かかわっています。 ・ 定義ファイル 定義ファイルとはアプリケーションが動 作する条件を記述したファイルです。このフ ァイルの内容を書き換えることによって、ア プリケーション自身を変更することなく、ア プリケーションの実行内容を変更することが 出来ます。 定義ファイルとしてのXMLの利点は下記 のとおりです。 1) タグに意味づけができるので人が見 てわかりやすい 2) 定義ファイルを読み込んで構文を解 釈するパーサを作成する必要がない 3) 複雑なデータ構造を記述できる

(2)

3.XML の記述 3-1 XML の記述の決まり ① XML 文章であることを宣言する ② 文字コードを指定する ③ すべての要素には、終了タグを書く ④ すべての要素は正しく入れ子にする ⑤ XML 文章には、1 つのルート要素を書く ⑥ 指定した文字コードで保存する ⑦ 大文字、小文字を区別する ⑧ 属性値は、二重引用符で挟む タグの記述例 要素 <title>XMLの記述</title> 入れ子構造の例 <要素 a> <要素 b> <要素 c> ・・・・・・・・ </要素 c> </要素 b> <要素 d> ・・・・・・・・ </要素 d> <要素 a> 3-2 XML の記述例 <?xml version="1.0" encoding="Shift_JIS"?> <data> <mail> <code>9300221</code> <addres>中新川郡立山町前沢 2440</addres> </mail> <mail> <code>9300282</code> <addres>中新川郡舟橋村仏生寺 55</addres> </mail> <mail> <code>9300353</code> <addres>中新川郡上市町法音寺 1</addres> </mail> <mail> <code>9301312</code> <addres>上新川郡大山町上滝 523</addres> </mail> <mail> <code>9302105</code> <addres>婦負郡山田村湯 780</addres> </mail> <mail> <code>9320057</code> <addres>小矢部市本町 1-1</addres> ・・・・・・・ ・・・・・・・ ・・・・・・・ ・・・・・・・ ・・・・・・・ ・・・・・・・ </data> (開始タブ) タブ (終了タブ) 内容 要素名 要素c 要素 b 要素d 要素a

(3)

3-3 XML の Web 表示 記述したXML を Web ページで表示すると 図1のように表示されます。 図1のように、XML だけでは Web で表示し た際には、XML で記述したとおりにしか表示さ れません。レイアウト表示する場合は XSL と CSS を使って表示させます。また、Microsoft Excel2002 以降では XML 形式データを読み込 4.XSL を使って Web ページの表示の仕方 XSL(eXtensible Stylesheet Language)は XML文書からのデータを取り出し,レイアウ ト処理を行います。

XSL を使って Web ページを表示する場合、 XML 文書と XSL を関連付ける必要があります。 XML の内容文を記述する前に、

“<?xml-stylesheet type=”text/xsl” href=”使用 するXSL のファイル名”?>”を追加します。 XSL の記述内容例については、”sample.xsl” リストを用いて紹介します。 4-1 sample.htm ソース <?xml version="1.0" encoding="Shift_JIS"?> <xsl:stylesheet 図1 XMLのWeb での表示 図2 Excel2002 での XML 文書の読み込み ①

(4)

<html lang="ja"> <head> <title>sample</title> <style type="text/css"> table{border:solid 1pt black;} th{border:solid 1pt black;padding:10;} td{border:solid 1pt black;padding:10;} </style> </head> <body> <div> <xsl:apply-templates select="data" /> </div> </body> </html> </xsl:template> <xsl:template match="data"> <table> <tr><th>郵便番号</th><th>市町</th></tr> <xsl:for-each select="mail"> <tr><td><xsl:value-of select="code"/> </td> <td><xsl:value-of select="addres" /> </td></tr> </xsl:for-each> </table> </xsl:template> </xsl:stylesheet> 4-2 sample.xsl ソースの説明 ① XML 文章の宣言と文字コードの指定 ② XSL のルート要素と名前空間の明記 ①,②は XSL ファイルを記述するための決 まりごと ③ ルートノード(/)にマッチしたときのテンプ レートルールの定義 ※ テンプレートルール XML 文書をどのように変換させるかとい った処理内容 ④ 次に処理する要素の指定(”data”要素を 指定) ⑤ 要素名が”data”であるときのテンプレー トルールの定義(処理) ⑥ select 属性で指定した式で選択した要素 名がある間繰り返し処理を行う(”mail”要素 名がある間処理を繰り返す) ⑦ 要素名が”code”のとき”code”の要素内容 を取り出す ⑧ 要素名が"addres"のとき"addres"の要素 内容を取り出す ④ ⑤ ⑥ ⑦ ⑧ 図3 XSL を利用しての Web 表示

(5)

5.XML と XSLT を使ってのデータ処理 5-1 XSLT(XSL Transformations) 任意の XML 文書を読み込んで、それを加 工して出力することができます。出力方法は XML 文書とは限らず、プレーンテキストや HTML を出力することができます。 ここでは、XML と XSLT を使ってのデータ 処理例として、郵便番号から市町村役所住所 の抽出または、市町村役所住所から郵便番号 を抽出する例を使って紹介します。 mail.htm を実行すると、mail.xml が mail.xsl で変換されて表示されます。 以下に mail.htm と mail.xsl ソースを紹介し ます。 5-2 mail.htm ソース <html lang="ja"> <head> <title>郵便番号検索</title> <script type="text/VBScript"> <!-- option explicit dim useridData,luser,n,itemData dim stylesheet,fileValue dim variableNode,xmldoc,htmlData,chikan n = 1 sub rclick(n)

if n =1 then itemData="1" else itemData="2" end sub sub useridGo() useridData=myForm.setUSER.value if len(useridData)<=0 then msgbox "郵便番号または市町村名を入力してください" myForm.setUSER.value="" HTML mail.htm XML mail.xml XSL mail.xsl 変換結果 ① ②

(6)

stylesheet.async=false fileValue=stylesheet.load("mail.xsl") if fileValue=true then set variableNode=stylesheet.selectNodes("//xsl:variable") variableNode(0).text=useridData luser=len(useridData) variableNode(1).text=luser variableNode(2).text=itemData set xmldoc=createObject("MSXML2.DOMdocument") xmldoc.async=false xmldoc.load("mail.xml") htmlData=xmldoc.transformNode(stylesheet) chikan=replace(htmlData,"UTF-16","Shift_JIS") htmlData=chikan document.write(htmlData) else exit sub end if end if end sub --> </script> <style type="text/css"> <!-- body{font-family:"MS Pゴシック",sans-serif;font-size:11pt;line-height:16pt;} h1{font-family:"MS Pゴシック",sans-serif;font-size:18pt;font-weight:bold;line-height:20pt;} h2{font-family:"MS Pゴシック ",sans-serif;font-size:14pt;font-weight:bold;line-height:18pt;color:dimgray;} label{font-family:MS Pゴシック;font-size:11pt;font-weight:bold;} input{font-family:MS Pゴシック; font-size:13pt;ime-mode:inactive;font-weight:bold;text-align:center;} button{font-family:MS Pゴシック;font-size:13pt;width:100px;} --> </style> </head> <body> ③ ④ ⑤ ⑥

(7)

<h1>郵便番号検索</h1> <div>

<input type="radio" name="item" onclick="rclick(1)" checked>郵便番号検索 <input type="radio" name="item" onclick="rclick(2)">市町村検索

<form name="myForm"> <p>

<label>検索:</label><input type="text" size="10" name="setUSER"> <button onClick="useridGo()">検索実行</button> </form> </div> </body> </html> 5-3 mail.htm ソースの説明 ① 郵便番号から所在地検索する場合は、 itemData に1,所在地からの郵便番号を検索 する場合は、itemData に2を格納 ② 入力ボックスにデータが未入力であれば、 メッセージを表示 ③ DOM オブジェクトを生成し、load メソッ ドを使ってXSL ファイル(mail.xsl)の読み 込み ④ DOM の selectNode メソッドを使って、 XSL ファイル中の xsl:variable 要素の内容を 変数variableNod に格納。(検索内容,入力し た文字数,検索条件をvariableNod に格納) ⑤ Load メソッドを使って、XML ファイル (mail.xml)を読み込む ⑥XML ファイルを XSL ファイルで変換した 結果を表示

※ DOM(Document Object Model)

DOM は、文書へのアクセス方法を定義する もので、ノードを作成したり、ノードアクセ スして内容を抽出することを可能にする

5-4 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.01" encoding="Shift_JIS" indent="yes" /> <xsl:variable name="CODE">test</xsl:variable>

<xsl:variable name="LCode">0</xsl:variable>

(8)

<html lang="ja"> <head>

<title>郵便番号<xsl:value-of select="$CODE" />を検索する</title> <style type="text/css"> table{border:solid 1pt black;} th{border:solid 1pt black;padding:10;} td{border:solid 1pt black;padding:10;} </style> </head> <body> <div> <h1>郵便番号検索</h1> <h2><xsl:value-of select="$CODE" />を検索します</h2> <xsl:apply-templates select="data" /> <h6></h6> <a href="mail.htm">戻る</a> </div> </body> </html> </xsl:template> <xsl:template match="data"> <xsl:choose>

<xsl:when test ="$Item=$CHK">

<xsl:variable name="codeCount" select="count(mail[substring(addres,1,$LCode) =$CODE])" /> <h3><xsl:value-of select="$CODE" />に該当する郵便番号は <xsl:value-of select="$codeCount" />件です。</h3> <table> <tr><th>郵便番号</th><th>市町村名</th></tr> <xsl:for-each select="mail">

<xsl:if test="substring(addres,1,$LCode)= $CODE"> <tr><td><xsl:value-of select="code" /></td> <td><xsl:value-of select="addres" /></td></tr> </xsl:if> </xsl:for-each> </table> </xsl:when> ② ③ ④

(9)

<xsl:otherwise> <xsl:variablename="codeCount" select="count(mail[substring(code,1,$LCode)= $CODE])" /> <h3><xsl:value-of select="$CODE"/>に該当する市町村は <xsl:value-of select="$codeCount" />件です。</h3> <table> <tr><th>郵便番号</th><th>市町村名</th></tr> <xsl:for-each select="mail">

<xsl:if test="substring(code,1,$LCode)= $CODE"> <tr><td><xsl:value-of select="code" /></td> <td><xsl:value-of select="addres" /></td></tr> </xsl:if> </xsl:for-each> </table> </xsl:otherwise> </xsl:choose> </xsl:template> </xsl:stylesheet> 5-5 mail.xsl ソースの説明 ① XSLT の xsl:variable 要素を使って、変数 CODE,LCode,Item,CHK を宣言し、CHK 以外の変数に仮の値を格納 ② Item が 2 の場合、所在地での検索処理, 1 の場合、郵便番号での検索処理 ③ xsl:variable 要素で変数 codeCount を宣言 select 属性で一致した要素の数を codeCount に代入 ④ addres 要素または、code 要素で、前方から 入力した文字数分が一致した場合、一致した 項目内用を表形式で表示 ② ③ ④

(10)

6.おわりに 以上のようにXML はプラットフォームに関係 なくデータのやり取りができます。それゆえに、 Web クライアントを利用し、複数の異なるデー タベースの情報を組み合わせることができます。 またXSL や XSLT を利用することで、各々の 利用者に応じて異なるビューで表示することや、 利用者のニーズに応じた情報検索ならびに、情報 をフィルタリングすることもできます。 参考図書 XML+XSLT 実用スーパーサンプル集 CQ 出版社 Windows で学ぶ XML 技術評論社 図5 郵便番号での所在地検索 図6 郵便番号で所在地の検索表示例 図7 所在地での郵便番号検索 図8 所在地での郵便番号検索表示例

参照

関連したドキュメント

回転に対応したアプリを表示中に本機の向きを変えると、 が表 示されます。 をタップすると、縦画面/横画面に切り替わりま

これはつまり十進法ではなく、一進法を用いて自然数を表記するということである。とは いえ数が大きくなると見にくくなるので、.. 0, 1,

つの表が報告されているが︑その表題を示すと次のとおりである︒ 森秀雄 ︵北海道大学 ・当時︶によって発表されている ︒そこでは ︑五

手動のレバーを押して津波がどのようにして起きるかを観察 することができます。シミュレーターの前には、 「地図で見る日本

荒天の際に係留する場合は、1つのビットに 2 本(可能であれば 3

すべての Web ページで HTTPS でのアクセスを提供することが必要である。サーバー証 明書を使った HTTPS

各テーマ領域ではすべての変数につきできるだけ連続変量に表現してある。そのため

高さについてお伺いしたいのですけれども、4 ページ、5 ページ、6 ページのあたりの記 述ですが、まず 4 ページ、5