XML、Extensible Markup Language
直訳すると拡張しやすいマークアップ言語
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
「マークアップ言語ってなんやねん!」
→ 書いてある内容に意味や命令を与えられる形式言語です。 例えば、
重役「早くして!」 同期「早くして!」
どっちかやばいかよくわかりますね。
こういう内容に意味や明示的な命令を与えられる形式の言語の総称です。
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
つまり・・ "拡張しやすい" "内容に意味とか命令与えられるぜ" "言語" がXMLです。
実際に先ほどの例をXMLにして見てみましょう。
<?xml version="1.0"?> <重役>早くして!</重役>
<?xml version="1.0"?> <同期>早くして!</同期>
最初の行の呪文はこの文章はXMLですっていう宣言です。
そのあとから見てみるとそれぞれ- "早くして!"という言葉が <重役> </重役> と <同期> </同期> に囲まれているのがわかります。 この<>囲みをタグといいます。(実際には<>は半角です)
このファイルをアプリケーション側で どう扱うかが自由という点でExtensibleです。
重役からの言葉なので赤くしてもいいですし 音を発するようにしてもいい。
タグで囲われた内容にさらに意味を持たせたい場合、
<重役 声の大きさ="8">早くして!</重役>
とタグに属性="値"を定義することができます。
csv,json等と同様に様々なアプリケーションのInput/Outputとして使えるので覚えておきましょう。
妥当なXMLと整形式のXML
DTD(Document Type Definition) というものを利用して文書の定義を行うことができます。
アプリケーションのデータ交換仕様としてDTDが作成されていたりします。
XMLがDTDの定義をきちんと満足している場合、そのXMLを妥当なXMLといいます。
DTDには従っていないけれど、XMLの仕様を満足しているものを整形式のXMLといいます。
※htmlはXMLっぽいんですが、整形式のxmlではないhtmlが書けます。