私は、やや疑わしい XML の擁護者になりがちです。私は XML ベースの Web サービスを日常的に使用しており、XML ベースの Web サービスは私のキャリアの大部分を占めてきました (そして、私が書いた本の基礎となっています) にもかかわらず、広く使われすぎていると思います。私は、ツールボックスに多くのツールを用意し、仕事に最適なツールを使用する必要があると考える考え方に属しがちです。XML が優れたソリューションとなるものはたくさんあります。しかし、そうでないものもたくさんありますし、おそらくひどい選択になるものもあります。
XML を批判して回避することに熱心な人がいるのと同じように、XML を称賛して使用することに熱心な人もいます (またはそれ以上に熱心な人もいます)。上記でさりげなく言及しているケースでは、ほとんどの場合、Web ベースのテクノロジについて話していることになります。このような場合、通常、XML パーサーや DOM マニピュレーターは既に利用可能になっているので、それを利用しても害はありません。複雑さはすでに存在していたので、複雑さを増していません。Flash と AIR は機能のために XML を多用しますが、それらは XML 風のマークアップ (XML 自体ではない場合、HTML または XHTML) の解析がすべてのアプリケーションのコア部分である環境を対象としています。これらのテクノロジでは、別の種類のデータ表現言語を導入すると、複雑さが増します。XML を使用することは完全に理にかなっています。
ここに例があります...ここで問題となっている言語はPerlです。これは私が主に使用しているためですが、Perlの側面は要点とは関係ありません:私は深いデータをダンプする既存のモジュールの拡張に取り組んできました構造。シリアル化、プラットフォーム間での移植性など、多くのことに役立ちます。また、デバッグ用の一般的なツールでもあります。それを拡張したい理由は、本当に大規模で複雑な構造 (ORM や MOP フレームワークによって生成されたものなど) はかなり複雑になる可能性があるためです。そこで、私が最初に考えたのは、データを HTML に変換できる拡張機能を作成して、ある程度制御できるようにすることでした。そこで、いろいろな要素がどの要素につながっているのか、などを図で表せたらいいなと思いました。合理的で中立的な形式を選択すれば、それらの両方をかなり簡単に導き出すことができるはずだと思いました。
その形式?XML。この場合、ネイティブの Perl シリアライゼーション構造よりも、または別の中間表現 (YAML や JSON など) を使用するよりも優れているのはなぜでしょうか? 有効で整形式の XML があれば、XSLT を使用して簡単に (X)HTML または SVG に変換できるからです。必要に応じてプレーン テキストに変換することもできます (ユーザーの選択に応じて、HTML フラグメントまたはきれいにワードラップされたプレーン テキストを出力することを選択する XSLT スタイルシートが既にあります)。
この特定の問題を解決する方法はたくさんありますが、この場合にXML がもたらす利点により、(少なくとも、私の好みとニーズにとっては) XML を選択することをお勧めします。XSLT は、明確に定義され、十分に文書化されている (W3C のドキュメントに関しては意見が異なるかもしれませんが、このテーマに関する本は不足していません) XML をほとんど何でも変換するためのツールです。この特定の問題については、XML の表現力と、私の最終的なターゲット形式 (XHTML および SVG) 自体が XML であるという事実を組み合わせることで、XML を選択することが明確になりました。一方、(コンサルタントとして) クライアントに、または (会社の従業員/チーム メンバーとして) 上司/チームに、XML を使用すべきではないことを勧めたことが何度もありました。何らかのタスクに使用されます。理由が明らかな場合もあります。XML を使用してもデータの (再) 利用性が向上しない、彼らはまだプロジェクトで XML を使用しておらず、これはその依存関係を導入する必要があるものではなかった、などです。 . 理由がより微妙な場合もあります。アプリケーションの構成を保存/取得する方法を決定しようとしている場合、それは本当に XML である必要がありますか? 他のアプリケーションがこれを読み取り/解析する必要がある可能性はほとんどないため、データの移植性/再利用は問題になりません。データが本質的にかなりフラットな場合は、おそらくキーと値のペアのファイルで管理できます。データがより複雑または複雑な場合は、YAML で問題ない可能性があります。
一般に、XML は、最良の選択である場合を除いて、データ表現には最悪の選択です。JSON と YAML についても同じことが言えます。これらのアプローチを最大限に活用する最善の方法は、それらすべてに精通し、快適に使用できるようにし、目の前の仕事に最適なツールを知ることです。あなた。