# XML関連の命令

ひまわりでは、簡単なXML関連の命令が用意されています。

『簡単な』とつけたのは、実際には、XML規格に忠実に実装されているのではなく、読み込みできる文字コードは、シフトJISのみ、XMLの構造を定義したDTD部分は、無視してしまうという、その筋から見たら使えない！と言われそうな、なんちゃってXMLなのです。

しかし、厳格な規格に沿ってない分、手軽に扱えるように設計されています。

## XMLの基本

> XMLの基本は、『<タグ名> データ </タグ名>』 という形式が基本です。
> ホームページを記述する言語HTMLとほとんど同じ構造です。
> 試しに簡単なXMLを書いてみます。

> `XML=『 <データ> <名前>クジラ飛行机</名前> <年齢>20</年齢> <仕事>雑用係</仕事> </データ>』 XMLの、『データ!年齢』を、XMLテキストデータ取得して、表示。`

> これを実行すると、年齢の２０という値が得られます。

> そして、XMLで素晴らしい点は、タグを重ねて書くことにより、ツリー構造のデータを表現できることです。
> たとえば、ゲームを作ったとします。ゲームには、キャラクターがたくさんいるときは、以下のようにデータを入れ子にすることができます。

> `XML=『 <セーブデータ> <魔法使い> <名前>レナ</名前> <レベル>16</レベル> </魔法使い> </セーブデータ> 』 ' ツリー部品にXMLの階層を表示 XMLツリーを、作る。 その、サイズは、(0,0,300,300) XMLを、XMLパス形式で取得。 その、アイテムは、それ。`

> ひまわりで、この入れ子（階層構造）になったXMLデータを取得するには、以下のように￥で区切ってパスを書いて、『XMLテキストデータ取得』命令を使います。

> `XML=『 <セーブデータ> <魔法使い> <名前>レナ</名前> <レベル>16</レベル> </魔法使い> </セーブデータ> 』 'データを得る XMLの、『セーブデータ\魔法使い\名前』を、 XMLテキストデータ取得して、表示。`

## HTML解析へ流用

> HTMLとXMLは、非常によく似ています。というか、ほとんど同じです。
> それならば、HTMLの解析にも、XML命令を使うことができます。

> たとえば、今読んでいるこのHTMLマニュアルを解析して、ツリー部品に表示してみます。

> `ランタイムのパス&『doc\index.htm』を、開く。 XMLパス形式で取得。 解析ツリーを、作る。 その、サイズは、(0,0,300,300) その、アイテムは、それ。`

> ただし、XMLでは、必ず<タグ>と</タグ>が対応していることというルールがありますので、それほど正確には解析できませんが、<HTML>要素の中に、<HEAD>と、<BODY>があり・・・と、大体の構造を知ることが出来ます。

> そこで、HTMLのページタイトルを取得するには、以下のようにします。

> `ランタイムのパス&『doc\index.htm』を、開く。 『html\head\title』を、XMLテキストデータ取得。 表示。`

> マニュアルのインデックスページですので、『日本語プログラム言語「ひまわり」』と表示されたと思います。
> それから、HTMLページの<H2>要素は、だいたいにして小見出しを表しています。
> そこで、

> `ランタイムのパス&『doc\hajimete\repeat.htm』を、開く。 『html\body\h2』を、XMLテキストデータ取得。 表示`

> のように書くと、小見出しを抜き出すことが出来ます。

戻る