見出し画像

AIを使ってXMLを「復権」させる(前編)

HTMLの出来のいい弟分であるXML。いろいろなところで活躍しているのですが、とっつきにくいところがあり、良く知らない人には敬遠されがち。しかし、生成AIがその立場を変えられるかも。


XMLという汎用性の高いフォーマット

XMLで書かれたデータはだいたい下のような見た目になっています。

<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
  <book>
    <title>The Hobbit</title>
    <author>J.R.R. Tolkien</author>
    <genre>Fantasy</genre>
    <price>14.95</price>
  </book>
</bookstore>

<と>で囲まれた「タグ」と言われるもので地のテキストが囲まれているところはHTMLとよく似ています。

HTMLは、1989年にバーナーズ・リーによって開発されたマークアップ言語です。XMLの歴史は、1998年にWorld Wide Web Consortium (W3C)によってXML 1.0が勧告されたことから始まります。実はどちらもSGMLというものを起源としています。しかし、親が同じでもその性格は微妙に異なります。

XMLの最大の特徴は、汎用性と拡張性にあります。人間が容易に理解できるシンプルな構文で記述され、かつ、独自タグの定義も可能なので、あらゆる種類のデータを柔軟に表現できます。

様々な目的に使われているXML

XMLの汎用性には特筆すべきものがあります。

HTML5の提案と共に利用機会が広がった画像データ形式にSVGがありますが、これがXMLをベースとしています。

もっと多くの人がお世話になっているであろうファイル形式として、MSオフィスで使われている.docx, .xlsx, .pptx形式がありますね。これらは実はXMLデータをzipで圧縮したものです。試しに、適当な.docxのファイルをコピーし、名前をtest.zipとかに変えて展開してみてください。中身が以下のようになっているのが分かるでしょう。document.xmlは紛うことなきXMLファイルです。この他、いくつものXMLファイルが組み合わさって一つのデータセットを形作っているのが確認できるはずです。

.docxファイルの中身

この他にもXMLをベースにしたデータ形式は多数存在します。

  • RSS (Really Simple Syndication): ウェブサイトの更新情報を配信するためのデータ形式です。ブログやニュースサイトなどでよく使われています。

  • MathML: 数学的な記述を表現するためのマークアップ言語です。

  • GML (Geography Markup Language): 地理的な情報を表現するためのマークアップ言語です。

  • MusicXML: 楽譜の情報を表現するためのマークアップ言語です。

情報共有と利活用のための強力な周辺技術が整備されている

データの信頼性・正確性を高めるための算段:xmllintとXML Schema

XMLをベースとしたデータ形式を設計するにあたって、どういうタグや属性を許可し、その値としてどのようなものを要求したり禁止したりするのかを詳しく取り決めておくことが望まれます。それらを明文化したものがXML Schemaと言えます。XML Schema自体がXMLで記述されます。

このXML Schemaの情報を踏まえたうえで、対象XMLファイルがルールに正しく沿っているかをチェックしてくれるツールがxmllintです。

必要な情報に効率的にたどり着くための算段:XPath

XPathはXMLやHTMLドキュメントから特定の要素や属性を効率的に選択するための強力なツールです。

XMLデータは、「ルート」に始まるツリー構造を持っています。XPathは、このツリー構造を相手にすることに特化した言語です。要素の親子関係や属性値などを指定することで、目的の情報を効率よく検索・抽出できるように設計されています。XPath自身もXMLデータとして記述されます。

データ共有の可能性を広げる算段:XSLT

XSLT(Extensible Stylesheet Language Transformations)は、XML文書を別の形式に変換するための言語です。XSLTもまたXMLで書かれます。

XMLファイルとして保存されているデータは、XSLTにより、異なる構造のXMLやHTMLやCSVなど別のデータ形式のファイルに変換できます。また、XSLTは繰り返しや条件分岐、並べ替え(ソート)、関数定義、関数の再帰呼び出しなどをサポートしており、単純なフォーマット変換だけでなく、データの部分置換や複雑な加工なども可能です。

次回予告

話の途中ですが、本記事はここまで。続きは後日の別記事に書きます。

掲載予定

  • 有用だが扱いが面倒くさかったXML

  • いまや面倒くささは簡単に克服できるようになった

  • XMLデータベースという可能性



この記事が気に入ったらサポートをしてみませんか?