XML関連の命令

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

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

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


XMLの基本

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

試しに簡単なXMLを書いてみます。
XML=『
<データ>
  <名前>クジラ飛行机</名前>
  <年齢>20</年齢>
  <仕事>雑用係</仕事>
</データ>』

XMLの、『データ!年齢』を、XMLテキストデータ取得して、表示。
これを実行すると、年齢の20という値が得られます。
そして、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テキストデータ取得
表示
のように書くと、小見出しを抜き出すことが出来ます。

戻る