Web教材一覧> ハードウエアとソフトウェア> マークアップ言語
XML、XML宣言、DTD、妥当なXML文書、整形式のXML文書、XMLパーサ、SAX、XML Schema、XSL、XSLT、XLink、XPointer、CSV、JSON、YAML
XML(eXtended Markup Language)は、マークアップ言語です。XMLで記述された文書をXML文書といいます。XML文書は、人間が読んでもわかりやすいし、コンピュータ処理にも適した形式であり主にデータ交換やデータベースに使われています。
XMLの特徴を理解するために、簡単なXML文書を掲げます。
<?xml version="1.0" encoding="UTF-8" ?> XML宣言
<!DOCTYPE 注文リスト [ DTD
<!ELEMENT 注文リスト (発注者, 発注日, 注文)>
<!ELEMENT 発注者 (#PCDATA)>
<!ELEMENT 発注日 (#PCDATA)>
<!ELEMENT 注文 (商品名, 商品コード, 個数)>
<!ELEMENT 商品名 (#PCDATA)>
<!ELEMENT 商品名 (#PCDATA)>
<!ELEMENT 数量 (#PCDATA)>
] >
<注文リスト> XML本体
<発注者>木暮商事</発注者>
<発注日>20070420</発注日>
<注文>
<商品名>HALパソコン</商品名>
<商品コード>4912345987652</商品コード>
<個数>3</個数>
</注文>
<注文>
<商品名>目立テレビ</商品名>
<商品コード>4935791864204</商品コード>
<個数>5</個数>
</注文>
</注文リスト>
DTDあるいはXML Schema(後述)があり、それに合致していることが検証されているXML文書です。
上の例では省略していますが、発注者や発注日は先頭に1回だけ必ず記述する、商品コードがあれば商品名は省略できる、個数は100以下の正整数であるなどの定義ができます。商取引など正確さを重視する文書では妥当なXML文書であることが求められます。業界でDTDが標準化しており、各文書では、それに準拠していることだけを記述すればよいようになっています。
DTDの記述がないXML文書です。XML本体が、表面的な形式がXMLの文法に合致しているだけのXML文書です。正確性をあまり重視しない文書では、文書作成を簡単にするために、整形式文書にするのが通常です。
HTML文書はHTMLブラウザでWebページとして表示することだけを想定しています。それを加工するのはJavascriptなどで処理内容をプログラムする必要がありました。
XML文書は表示や加工に関する情報をもっていません。XML文書は広い分野での情報交換に用いられており、XML文書を取扱うために,多様な言語や機能があります。
オフィスソフト用の文書ファイルフォーマット規格。ISO/IEC 26300、JIS X 4401(オフィス文書のためのオープン文書形式)。
ワープロ(.odt)、表計算(.ods))、プレゼンテーション(.odp)、数式(.odf)、グラフ(.odc)、データベース(.odb)など、いわゆるオフィスソフト全般について、ソフトメーカー間の個別仕様を、XML形式データで標準化することを目的とします。
また、OpenDocument形式のファイルをODFといいます。
多くのオフィス製品が、これらと互換性を持っています。例えば Word では、ファイルのタイプとしてODF(拡張子 .odt)を指定することにより、入力・出力ができます(部分的に不一致の機能もありますが)。
表計算ソフトのスプレッドシートのセルのデータ(フォントや色、罫線などの情報は扱いません)をテキストデータに変換したものです。多様な表計算ソフトで共通に扱えます。フラットな2次元データですので、関係データベース(RDB)と相性がよいのですが、「XMLの記述例」のような階層型のデータの記述はできません。
名称は「コンマ区切り」ですが、スペース区切りにすることもできます。
そもそもは、JavaScript用に開発されましたが、他の言語でも使えます。
XMLの記述を単純にしたものです。上掲の「XMLの記述例」をJSONで記述すると、次のように簡素になります。
{ "注文リスト": { "発注者": "木暮商事", "発注日": "20070420", "注文": [ { "商品名": "HALパソコン", "商品コード": "4912345987652", "個数": 3 }, { "商品名": "目立テレビ", "商品コード": "4935791864204", "個数": 5 } ] } }
JSONが主にJavaScript用であるのに対し、YAMLは Python や Ruby などの軽量言語での利用を目的としており、それぞれの言語でYAMLを便利に使うための機能をもっています。
フロースタイル {"注文リスト": { "発注者": "木暮商事", "発注日": "20070420", "注文": [ {"商品名": "HALパソコン", "商品コード": "4912345987652", "個数": 3 }, {"商品名": "目立テレビ", "商品コード": "4935791864204", "個数": 5 } ] } } ブロックスタイル 注文リスト: 発注者: "木暮商事" 発注日: "20070420" 注文: - 商品名: "HALパソコン" 商品コード: "4912345987652" 個数: 3 - 商品名: "目立テレビ" 商品コード: "4935791864204" 個数: 5