伸び縮みマークアップ言語 XML
■ 情報をデータ化する

■ データの利用目的とデータ化する情報

情報などをXML文書にする場合、データを個人で利用するのか、 会社などで利用するのか(複数で利用)、インターネットで公開するのか(不特定多数で利用) を決めておきます。
利用目的を明確にしておくことで、作業コストを最小限に抑える事ができます。

利用目的を決めたら、次にデータ化する情報を決めていきます。
情報をデータ化する作業は手間も時間もかかるため、できるだけ最も必要とされるであろう 情報を選んでデータ化することが大切です。 最も必要な情報はどれか、またその次に必要なのは・・などというように最小限の 情報だけを選んでいきます。

■ データを構造化する

データ化する情報を選んだら、それらに名前をつけておきます。
例えば、「氏名」や「ID」などXML文書の要素名になる名前をつけます。

それらの情報を利用目的なども考慮した上で、優先度の高い順に書きだしグループ化します。 情報に名前をつけ、さらにグループ化することで情報が構造化されます。

情報
これらに名前をつける(要素名)
▼▼
データ
名前をつけたデータをグループ化
▼▼
グループ名をつけることで階層ができる(構造化)

データの構造化

■ 階層化のルール

情報と情報の関係やつながりを考慮してルールを書き出しておきます。
DTDを使用しない整形式XML文書を利用するにしても、データを共有して利用したり 複数で作成したりする場合には、このルールが必要になります。

階層構造のルール
・XXは必ず1回以上出現する...
・LLは必須項目...等

XML Schema
DTDをXMLで利用する際の問題点として、DTDの構文はXMLの構文と違う、名前空間に対応できない、 数値型などの必要なデータ型がない、などという事があります。 そのため、DTDの代わりに、XML SchemaやRELAXというスキーマ言語が開発され注目されています。 XML SchemaはXMLと同じ構文を使用し、名前空間に対応し、データ型を定義できるなど、DTDにはない特徴を持っています。

■ 階層構造の作成

■ データを階層化する

XML文書を作成する上で、データの構造を階層化する作業はとても重要な事です。例として 雑誌などは見出しや小見出し、本文などにより、階層構造を知る事ができます。XML文書化する情報を どのように階層化するのかわからないようなときは、同じような情報や、関連性のある情報などを グループにしてみるとわかりやすいでしょう。グループができたら、情報と情報の関係を考えてみます。

  • 情報と情報が主従の関係にあるもの
  • 別の情報に含まれるもの
  • 1つの情報に複数の内容が含まれるもの(情報を分割する事が必要)

表形式のデータを階層化する場合、Excelなどを使用して作成する事ができ、 下表のようにデータが項目ごとに分かれているために、楽に構造化することが可能です。

商品名 商品コード 価格 サイズ
ニットのセーター NS001 ¥4,650 ベージュ L
5分袖カーディガン CD001 ¥3,900 ブラック M

上の例では、商品名、商品コード、価格、色、サイズが要素となります。 ではルート要素を「会員情報」に、そして個々の会員データを、氏名 フリガナ 住所 電話番号 メール 職業、として 構造化し、ツリー構造で表してみましょう。

データをツリー構造で表す
■ データからXML文書を作成する

■ 会員データを構造化する

ここでは、会員データ1件を1つのXML文書にまとめ、その全データを1つにまとめるXML文書を作成します。 このような方法で情報を管理すると更新などがしやすく、また、1人分のデータを1つのXML文書で記述するので わかりやすくなります。

■ タグの名称(要素名、属性名)を決める

文書に記述したい情報を選び、タグの名称を決めます。
ここでは、以下の情報をXML文書に使用します。

  • 氏名
  • フリガナ
  • 住所
  • 電話番号
  • メール
  • 職業

これらの情報を、データの意味を考慮しながら階層化します。 ここでは1人分のデータを1つのXML文書にしていき、記述されたXML文書全てを 1つのXML文書にまとめて読み込みます。

■ 情報からデータ構造を作成する

ここでは1人分のデータを1つのXML文書にするので、1人分の データ構造を作成します。 まず、タグの名称を決め(上の項目参照)他のXML文書との構造なども一緒に ツリー構造で考えます。 あまり複雑にならないためにも、なるべく浅い階層にします。

■ ルート要素を決定する

複数のXML文書を、1つのXML文書に組み込むときに、ルート要素はとても重要です。 今作成しているXML文書のルート要素を「会員情報」とします。
そして、ルート要素の中に記述した「外部実体参照」(後述)で、 各XML文書からデータを参照し、メインXML文書で一覧できるようにします。

外部実体参照

■ 会員情報の記述ルールを定義したDTDを作成する

■ DTDを作成

ツリー構造を参考に、会員情報の記述ルールを定義したDTDを作成します。 DTDを記述する事で、複数でXML文書作成の作業を行う事が可能になります。

ツリー構造

■ DTDを記述

ツリー構造を見てもわかるように、ここではルート要素は「会員情報」なので

<!DOCTYPE 会員情報[
   ・・・・・・・・・
]>

と <!DOCTYPE 会員情報[  と ]> を記述します。

■ 各要素の親子関係を記述

<!DOCTYPE 会員情報[
 <!ELEMENT 会員情報 (会員データ*)>
 <!ELEMENT 会員データ (氏名,住所,電話番号,メール,職業)>

]>

ルート要素である、「会員情報」の下に個々の会員データがあるので
<!ELEMENT 会員情報 (会員データ*)>
と記述して会員情報と、会員データの親子関係を表します。会員データ要素は 複数になる事がわかっているので、 * を記述して 出現回数を0件以上と指定します。同様に
<!ELEMENT 会員データ (氏名,住所,電話,メール,職業)>
と、「会員データ」要素と、その下にある各要素との親子関係を記述します。

■ 要素の宣言

<!DOCTYPE 会員情報[
 <!ELEMENT 会員情報 (会員データ*)>
 <!ELEMENT 会員データ (氏名,住所,電話番号,メール,職業)>
 <!ELEMENT 氏名 (#PCDATA)>
 <!ELEMENT 住所 (#PCDATA)>
 <!ELEMENT 電話 (#PCDATA)>
 <!ELEMENT メール (#PCDATA)>
 <!ELEMENT 職業 (#PCDATA)>

]>

会員データの下にある、各要素を宣言します。
これらは全て文字データなので、 #PCDATAを指定します。

■ 属性の宣言

<!DOCTYPE 会員情報[
 <!ELEMENT 会員情報 (会員データ*)>
 <!ELEMENT 会員データ (氏名,住所,電話番号,メール,職業)>
 <!ELEMENT 氏名 (#PCDATA)>
 <!ELEMENT 住所 (#PCDATA)>
 <!ELEMENT 電話 (#PCDATA)>
 <!ELEMENT メール (#PCDATA)>
 <!ELEMENT 職業 (#PCDATA)>
 <!ATTLIST 氏名 フリガナ CDATA #REQUIRED>
]>

属性を宣言します。
「氏名」要素に「フリガナ」属性を追加します。
<!ATTLIST と >
の間に、氏名 フリガナを記述し CDATA  で文字データである事を指定、そして#REQUIREDで 属性である「フリガナ」が必須である事を指定します。

#REQUIREDと#IMPLIED
#REQUIREDはしてした属性が必須である事を表しています。それとは違い、#IMPLIEDは 属性を省略する事もある場合に指定します。

以上でメインXML文書のDTDは完成です。

■ 個々のXML文書を作成する

メインXML文書に読み込むための、各会員データファイルを作成します。
メインXML文書に記述したDTDを参考にして会員データをタグ付けします。

■ データを記述する

▼ XML宣言を記述する

はじめにXML宣言を記述します。

<?xml version="1.0" encoding="Shift_JIS"?>

▼ ルート要素を記述

ルート要素を記述します。
メイン文書に組み込むXML文書のルート要素は「会員データ」なので、 「会員データ」と記述します。 XML文書を結合した後のルート要素は「会員情報」となります。

<?xml version="1.0" encoding="Shift_JIS"?>
<会員データ>
</会員データ>

▼ ルート要素の間にタグを記述する

DTDで定義したとおりに、各タグをルート要素の間に記述していきます。

<?xml version="1.0" encoding="Shift_JIS"?>
<会員データ>
 <氏名></氏名>
 <住所></住所>
 <電話></電話>
 <メール></メール>
 <職業></職業>
</会員データ>


▼ 属性を記述する

DTDで定義したとおり、「フリガナ」は属性として設定します。

<?xml version="1.0" encoding="Shift_JIS"?>
<会員データ>
 <氏名 フリガナ=""></氏名>
 <住所></住所>
 <電話></電話>
 <メール></メール>
 <職業></職業>
</会員データ>

▼ 要素に内容を追加する

タグ内にデータを追加します。

<?xml version="1.0" encoding="Shift_JIS"?>
<会員データ>
 <氏名 フリガナ="ナマエジロウ">名前次郎</氏名>
 <住所>東京都0-0</住所>
 <電話>000-0000-0000</電話>
 <メール>namae@ykr414.com</メール>
 <職業>会社員</職業>
</会員データ>

▼ コメントを記述する

文書内にコメントを記述します。(必ずしも必要ではありません。)

<?xml version="1.0" encoding="Shift_JIS"?>
<!-- 会員データ -->
<会員データ>
 <氏名 フリガナ="ナマエジロウ">名前次郎</氏名>
 <住所>東京都0-0</住所>
 <電話>000-0000-0000</電話>
 <メール>namae@ykr414.com</メール>
 <職業>会社員</職業>
</会員データ>

以上全てを記述し終えたら、後から見てそれとわかるような名前をつけて 保存します。XML文書なので拡張子は「.xml」として下さい。 同様に、会員データの数だけXML文書を保存して、名前をつけて保存しておいてください。
ここでは、記述し終えたファイルに「namae.xml」として保存しておきます。

■ 外部実体参照

■ 外部実体宣言

別のXML文書をメインXML文書へ、外部実体参照という方法で呼び出します。 そのためには、外部実体宣言を行わなければなりません。 外部実体宣言の構文は、以下のようになります。

<!ENTITY 実体名 SYSTEM "URL">

実体名には任意の名前を
その後ろに、SYSTEMキーワードを指定します。
URLにはファイルのURLを記述してください。

■ 外部実体宣言の記述

作成した「namae.xml」を外部実体宣言します。
実体名に、「namae」その後ろに続いて「SYSTEM」そして、URLに、 「namae.xml」を記述します。(メインのXML文書と会員データのXML文書はこの場合、同じフォルダに 設置しておく必要があります。) 実体名である、「namae」の位置には任意の名前を付けることができますが、 ファイル名と同じ名前を指定すると、わかりやすいでしょう。

<?xml version="1.0" encoding="Shift_JIS"?>
<!-- 会員情報 -->
<!DOCTYPE 会員情報[
 <!ELEMENT 会員情報 (会員データ*)>
 <!ELEMENT 会員データ (氏名,住所,電話番号,メール,職業)>
 <!ELEMENT 氏名 (#PCDATA)>
 <!ELEMENT 住所 (#PCDATA)>
 <!ELEMENT 電話 (#PCDATA)>
 <!ELEMENT メール (#PCDATA)>
 <!ELEMENT 職業 (#PCDATA)>
 <!ATTLIST 氏名 フリガナ CDATA #REQUIRED>
<!-- 外部実体宣言 -->
 <!ENTITY namae SYSTEM "namae.xml">
]>

■ 外部実体参照

外部実体宣言で指定したXML文書のデータを外部実体参照で呼び出します。 呼び出す位置に「&実体名;」と記述するだけで、ファイルのデータを呼び出すことができます。 ここで、指定する実体名は外部実体宣言で指定した実体名を同じものでなければなりません。

&実体名;

■ 外部実体参照の記述

XML文書の要素がDTD通りになるように、メインXML文書のルート要素「会員情報」 の内側に外部実体参照を記述します。 その他の会員データのファイルも作成して、同様に外部実体宣言と外部実体参照を記述します。 下記の例では、「namae.xml」と「namae2.xml」を外部実体参照でメインXML文書に呼び出し、 そのメインXML文書を「main.xml」として保存しています。

<?xml version="1.0" encoding="Shift_JIS"?>
<!-- 会員情報 -->
<!DOCTYPE 会員情報[
 <!ELEMENT 会員情報 (会員データ*)>
 <!ELEMENT 会員データ (氏名,住所,電話番号,メール,職業)>
 <!ELEMENT 氏名 (#PCDATA)>
 <!ELEMENT 住所 (#PCDATA)>
 <!ELEMENT 電話 (#PCDATA)>
 <!ELEMENT メール (#PCDATA)>
 <!ELEMENT 職業 (#PCDATA)>
 <!ATTLIST 氏名 フリガナ CDATA #REQUIRED>
<!-- 外部実体宣言 -->
 <!ENTITY namae SYSTEM "namae.xml">
 <!ENTITY namae2 SYSTEM "namae2.xml">
]>
<!-- 本文 -->
<会員情報>
&namae;
&namae2;

</会員情報>

«««« back           next »»»»
 
XMLとは
XML文書作成の大まかな流れ
XML文書の記述
XML文書ブラウザでの表示
XSLTスタイルシートの適用
XSLTの構造
XML文書の宣言
文字コードの設定
タグ付けのルール
要素名・属性の指定について
階層構造
実体参照・文字参照について
その他・コメントや処理
DTDの記述
名前空間の指定
情報をデータ化する
階層構造の作成
データからXML文書を作成する
会員情報の記述ルールを定義したDTD..
個々のXML文書を作成する
外部実体参照
テンプレートルール
XSLTスタイルシートを記述する 【ノード】
構造を変換する仕組み
テンプレートルールの定義
テンプレートの動作確認
XPathの仕組み  【XPathの関数】
XPathの表記方法
テキストの抽出  xsl:value-of
ノードのコピー  xsl:copy-of
テキストの生成  xsl:text
コメントの生成  xsl:comment
要素の生成  xsl:element
属性の生成  xsl:attribute
属性値の生成  【属性値テンプレート】
出力方法の指定  xsl:output
変数1  xsl:variable
変数2  xsl:param
変数3  xsl:with-param
繰り返し処理  xsl:for-each
再帰処理  xsl:if test
データの並べ替え  xsl:sort
データに番号をつけて出力  xsl:number
条件式に一致時のみ変換処理を実施 xsl:if
複数条件を設定して処理 xsl:choose
XSLTに別のXSLT.. xsl:import xsl:include
XSLT関数について
データを1件表示
データを決められた件数だけ表示
テキストと要素混在時のテキスト抽出法
データを全て表示する
表示するデータを並べ替える
条件式を設定して表示を変える
データを表にして表示する
複数件のデータを1つの表にして表示
リンクを加える  xsl:element xsl:attribute
データをCSV形式で出力する
DOM(Document Object Model)
DOMとjavascript
ノードにアクセスする
ノードにアクセスする 2
ノードにアクセスする 3
XSLTスタイルシートを読み込む
XSLTスタイルシートの切り替え
DOMとjavascriptで検索機能を作成する 1
DOMとjavascriptで検索機能を作成する 2
DOMとjavascriptで検索機能を作成する 3
DOMとjavascriptで検索機能を作成する (XSLTスタイルシート適用)
SVG(Scalable Vector Graphics)
SVG(Scalable Vector Graphics)の基本
「g」タグによるグループ化
図形の座標変換 transform属性
アニメーションを作成する animate要素
アニメーションを作成する animate要素2
イベント
DOMとJavaScriptを使用したイベント処理
XMLとXSLTからSVGを生成する
msxsl.exeのオプション
エラーメッセージの表示
LINK
XML(eXtensible Markup Language) バナーはダウ
ンロードして
お使い下さい。




Copyright © 2004 - ykr414 . All Rights Reserved.