はい、XML は人間が判読できますが、カンマ区切りのテキスト ファイルとプロパティ ファイルも同様です。
XML は肥大化しており、解析しにくく、コードを変更するのが難しく、それに加えて、XML に関して考えられる問題が他にも山ほどあります。
私の質問は、XML の最も魅力的な性質は何ですか???
はい、XML は人間が判読できますが、カンマ区切りのテキスト ファイルとプロパティ ファイルも同様です。
XML は肥大化しており、解析しにくく、コードを変更するのが難しく、それに加えて、XML に関して考えられる問題が他にも山ほどあります。
私の質問は、XML の最も魅力的な性質は何ですか???
CSV ファイルのようなものに対する主な利点の 1 つは、階層データを簡単に表現できることです。これを行うには、XML のような自己記述型のツリー構造か、SWIFT や EDI などの事前定義された形式が必要です (これらのいずれかを扱ったことがある場合は、XML を簡単に解析できることがわかるでしょう)。比較において)。
実際に解析が非常に簡単な理由の 1 つは、「肥大化」しているためです。これらの終了タグは、要素の終了を開始に正確に一致させ、ツリーがアンバランスになったときに解決できることを意味します。JSON などの「軽量」の代替では、これを行うことはできません。
解析が簡単なもう 1 つの理由は、最初から Unicode エンコーディングを完全にサポートしているためです。そのため、ターゲット システムのデフォルト コード ページが何であるか、またはマルチバイト文字をエンコードする方法について心配する必要はありません。その情報はすべて文書内に含まれています。
また、定義済みの記述および検証メカニズム (XSD) や強力で宣言的な変換メカニズム (XSLT) など、それに付随する他の成果物についても忘れないでください。
それは 90 年代後半で、インターネットは猛暑でしたが、企業のシステムはインターネットに近づくことができませんでした。彼らは CORBA に数え切れないほどの時間を費やし、Enterprise JavaBeans を使用してこれらの古いシステムが新しいシステムと通信できるようにする計画を立てていました。
それに伴い、ほとんどすべてのマークアップ言語の前身である SGML が登場します (GML は省略します)。SGML は HTML の定義方法を定義するために既に使用されていましたが、HTML には特定のタグがあり、Netscape が特定の Web ページを適切に表示するために使用する必要がありました。
しかし、説明が必要な他のデータがある場合はどうなるでしょうか? あはは!
したがって、XML が構造化されており、その構造を自由に定義できることを考えると、(非オブジェクト指向の観点で) 自然にインターフェースを構築できます。他のインターフェース言語がすでに行っていることは何もしませんが、人々が独自の定義を設計できるようになりました。
X12 や HL7 などのインターフェース言語は確かに存在していましたが、XML を使用すると、人々はそれを個々の AIX または AS/400 システムに合わせて調整することができました。
そして、HTML によるタグ言語の優位性により、使いやすさから XML が最前線に押し出されるのは自然なことでした。
馬の口から直接、XML の設計目標は次のとおりでした。
- XML は、インターネット上で直接使用できる必要があります。
- XML は、さまざまなアプリケーションをサポートします。
- XML は SGML と互換性があります。
- XML 文書を処理するプログラムを作成するのは簡単です。
- XML のオプション機能の数は、絶対最小限、理想的にはゼロに保つ必要があります。
- XML ドキュメントは人間が判読でき、合理的に明確でなければなりません。
- XML 設計は迅速に準備する必要があります。
- XML の設計は、形式的かつ簡潔でなければなりません。
- XML ドキュメントは簡単に作成できる必要があります。
- XML マークアップの簡潔さはほとんど重要ではありません。
それが普及した理由は、クロスプラットフォームのデータ交換フォーマットの標準が必要だったからです。XML は少し肥大化しているかもしれませんが、テキスト データを区切るための非常に単純な方法であり、既存の SGML システムの大部分と下位互換性がありました。
XML と CSV を比較することはできません。CSV はデータを表す方法が非常に限られているためです。CSV は、基本的な行と列のテーブル以外のものを処理することはできず、階層の概念もありません。
XML の解析はそれほど難しくありません。適切な XML ユーティリティを記述したり見つけたりすれば、コードで処理することも難しくありません。
XML の解析は難しくありません。実際、すべての言語で使用できる優れた API が大量にあることを考えると、XML は非常に単純です。
XML 自体は肥大化していないため、必要に応じて簡潔にすることができますが、それを維持するかどうかはスキーマ次第です。
XML は、カンマ区切りのテキストでは決してできなかった、またはすべきではない方法で、階層的なデータセットを処理します。
XML は自己文書化/記述型であり、人間が判読できます。なぜそれが標準なのですか?何よりもまず、標準化できるからです。CSV は、無限のバリエーションがあるため、標準ではありません (また標準にすることもできません)。
多くの利点があり、欠点はほとんどありません。主な問題は、ファイルのサイズが大きくなり、処理が遅くなることです。ただし、次のような利点があります。
標準化されたクエリ言語である XPath をサポートしているという事実はどうですか? それは私にとってかなり便利です。
XMLは、データを表現するための非常に簡単な方法を提供します。構文解析はかなり簡単です。これは非常に規則的な文法であり、再帰下降構文解析に適しています。これにより、データのコンシューマーとプロデューサーは、それぞれのアプリケーションと内部についてあまり詳しく知ることなく、情報を簡単に交換できます。
ただし、これはデータを表現するための非常に非効率的な方法であり、ひどく悪用される可能性があります。この例は、特定のオブジェクトのコンストラクターとプロパティをエクスポートする代わりに、プログラムでXMLを作成し、結果のXMLを単一のコンストラクターに渡す必要があるオブジェクトインターフェイスです。同様に、XMLは、追加のカタログシステムを作成せずにランダムアクセスを必要とする可能性のある大規模なデータセットには適していません(つまり、XMLで1000ページのドキュメントがある場合、999ページに到達するためにファイルのほぼ全体を解析する必要があります、ページデータが順序付けられていると仮定すると)、実際のページデータを別のファイルに配置し、XMLを使用してファイル内の正しいファイルまたは位置を指す方がよいでしょう。
XML が構造化されているだけでなく、属性と要素が相互作用する方法によって、人間が簡単に理解できるやや変わった構造が作成されるということは、まだ言及されていません。
XML ツリーを構造的に最も近い有向非巡回グラフと比較すると、典型的な DAG は各ノードで ID と値のみを保持していることに気付くかもしれません。XML にはこれも含まれます (ID に対応する gi/タグと、値に対応するノードのテキスト)。ただし、各ノードは、任意の量の追加のメタデータ (要素) も運ぶことができます。これは、余分な次元を持つのと非常によく似ています。DAG が分岐ごとに 2 次元でフラットに広がると考えると、XML ドキュメントは 3 次元でフラットに広がり、属性だけを含むサブツリーに下向きに広がります。
これは、構造に対するオプションの曲げです。子要素のリストと同じように属性のリストをたどると、2 次元ツリーに戻ります。それらを完全に無視すると、含まれるデータの全体的な「形状」をより純粋に表す単純化されたノード/値ツリーが得られます。ただし、メタデータが必要な場合は、追加の次元があります。
まともなインデントがあれば、これは人間が生データを目で見るだけで理解できるものであり、XML は潜在的に複雑な構造のための小型の視覚化ツールになります。アプリケーションのデータ交換に視覚化ツールが組み込まれているということは、プログラマーが関係者は、データが使用される可能性が高い方法を表す構造を構築する可能性が高くなります。
XML が普及する前の時代を覚えていますか? データは簡単に交換できませんでした。あるプログラムは .csv ファイルを受け取り、次は .xls、次は EBSIDIC 形式のファイルを受け取ります。XML には弱点がありますが、構造化されているため、解析および変換が可能です。
ご指摘のとおり、CSV ファイルはかなり移植性があります。しかし、彼らには何の意味もありません。column(14) は私にとって何を意味しますか? <customer id="14"/> とは対照的に?
XML が非常に一般的で便利な理由として、XML 固有の性質がいくつかあります。
XML はツリーを表し、ツリーのような構造はプログラミングで非常に一般的なパターンです。これは、今日の安価なコンピューティング パワーと帯域幅によって可能になった、CSV のようなレコード ベースの表現からの進化的な飛躍です。
XML は、人的要因 (プレーン テキストであり、かなり読みやすい) とコンピューティングの実用性 (簡潔さ、解析の容易さ、表現力、拡張性など) との間で適切なバランスをとっています。
CSV は人間が読める形式ですが、それが唯一の良い点です。非常に柔軟性がなく、値に意味が割り当てられていません。もし私が今システムの設計を始めたら、間違いなく代わりにYAMLを使用するでしょう。
クロスプラットフォームです。これを使用して、VxWorksの下でCで実行されているロボット制御プログラムとデータをエンコードして実行しますが、オフラインプログラミングはドットネットの下で行われます。XMLは両方で簡単に解析できます。
XML の人気は、他のマークアップ言語に由来しています。HTML は人々が最もよく知っている言語ですが、ウィキやスタックオーバーフロー ポスト フォームで使用されるような「マークダウン」言語を目にすることが増えています。
HTML は、テキストの書式設定という興味深い仕事をしましたが、不十分でした。成長しました。人々は、あらゆるものにタグを追加したいと考えていました。<まばたき>誰か?レイアウト、スタイル、さらにはデータ。
XML は拡張可能なマークアップ言語であり (当然ですよね?)、誰もが独自のタグを作成できるように設計されており、RECORD タグが異なる意味を持っている場合に備えて、RECORD タグが私の RECORD タグに干渉しないように設計されています。 HTML が持つエンコーディングとタグの一致とエスケープの問題。
当初、HTML を既に知っていて、マークアップを使用してデータを整理するというおなじみの概念が好きな人に人気がありました。
構造化されています。
それが与える主な利点は、階層データのシステムに依存しない表現です。カンマ区切りのテキストファイルとプロパティファイルは、XMLが使用された多くの場所でより適切ですが、複雑なデータ構造とデータ型、文字セットの認識、および標準ドキュメントを表す機能により、優れたアプリケーション間交換形式として使用できました。
言語に対する私のマイナーな改善提案は、エンドタグの動作方法を変更することです。<の代わりに、の</>
ようにタグを終了できる場合、どれだけの帯域幅とディスク容量が節約されるか想像してみてください。タグを重ねることは許可されていないので、なぜ標準が必要以上のテキストを要求するのかわかりません。実際、なぜアングルブラケットを使用するのですか?<my_tag>blah</>
my_tag>blah</my_tag>
山かっこの醜さは、それが何であったかを示す良い例です:JSON。JavaScript Object Notationは、はるかに少ない入力でXMLのほとんどの目標を達成します。XMLを耐えられるようにするもう1つの代替構文は、GroovyとRubyで使用されるBuilder構文です。それははるかに自然で読みやすいです。
以前の標準のいくつかと比較して、それは夢です。HDF(Hierarchical Data Format)ファイルまたはFITSを作成してみてください。FITSは、ディスクドライブが発明される前に標準化されていました。ファイルをブロックサイズにパディングすることを心配する必要があります。
CSVでさえそれほど単純ではありません。簡単な質問ですが、ドイツ語のCSVファイルの区切り文字は何ですか?
XMLに関する苦情の多くは、XMLを使用して、データが数ミリ秒しか存在しないマシン間でデータを直接転送する人々からのものです。多くの分野で、データは50〜100年間持続する必要があり、実行したマシンよりもはるかに価値があります。時々クロージングタグ税を払う価値があります。
これは、その主な利点の1つであるテキスト形式です。通常、すべてのバイナリ形式ははるかに小さいですが、それらを「読み取る」ためのツールが常に必要です。XMLファイルを開いて編集し、好みに合わせて変更するだけです。しかし、それは肥大化したフォーマットであると私は主張しますが、それをかなりうまく圧縮することができます.... Windows Office XMLフォーマットの仕様を見ると、一見オープンに見えるのは素晴らしいことだと想像できます。
フリードリヒよろしく
その人気は元々、十分な大企業が支持を得て業界で広く採用されるのに十分なほど悪くない方法で適切な問題を解決したという事実に起因していると思います。この時点では、XMLを中心に多くのコンポーネント開発が投資されているため、ランドスケープにかなり強く組み込まれています。MS BizTalk Server(およびBizTalk自体)に付属しているHIPPAおよびその他のEDI XMLスキーマとアダプターは、XMLの上に徐々に構築されてきた山の良い例です。
多くの言語と互換性があります
XML が広く採用されるようになった主な 2 つの要素は、「人間が読みやすいこと」と「Sun Microsystem」です。それらは、XML よりも柔軟性が高く、解析が容易で、詳細度が低い、クロス言語、クロスプラットフォームのデータ交換フォーマットでした (そして今も存在します)。ASN.1など。
使用可能なツールがあるため、XML の方言のパーサーを作成する方が、任意の方言のパーサーを作成するよりも簡単です。
たとえば、DOM パーサーの使用は、特に普及した Java では、lexx や yacc よりもはるかに簡単です。