私はXMLの目的を理解していますが、それがいかに悪いのかと不満を言う人はいつもいますか?私はそれについて何が本当に悪いのか本当に理解していませんか?私は通常、「肥大化した」と「遅い」という言葉を投げかけます。
しかし、プログラマーとして、あなたは主に何のためにそれを使用しますか?そして、あなたは本当にそれを「悪い」と考えますか?...それがそうであるならば、ひどい多くの人々がそれをデータの輸送に使用します...
私はXMLの目的を理解していますが、それがいかに悪いのかと不満を言う人はいつもいますか?私はそれについて何が本当に悪いのか本当に理解していませんか?私は通常、「肥大化した」と「遅い」という言葉を投げかけます。
しかし、プログラマーとして、あなたは主に何のためにそれを使用しますか?そして、あなたは本当にそれを「悪い」と考えますか?...それがそうであるならば、ひどい多くの人々がそれをデータの輸送に使用します...
回答:
Xmlは、低レベルでデータ検証を実施する機能を備えたプラットフォームに依存しない、人間が読み取れるデータ転送プロトコルであるように設計されたものに最適です。この方法でXmlを使用している人が本当に不満を持っているとは思いません。最も簡潔なワイヤー形式ですか?いいえ。しかし、さらに悪い選択肢があります。カスタムバイナリ形式を読むのと同じくらい速いですか?いいえ。ただし、ビジネスパートナーは、使用しているスタックに関係なくそれを読み取ることができます。
ただし、問題は、人間(特にエンタープライズアーキテクトとして知られる品種)が悪であり、良いものを取り、悪いものにすることです。Xmlの場合、今世紀の初めには、XmlがあらゆるIT問題の普遍的なハンマーと見なされました。委員会による小さなデザインを振りかけると、SOAPやoXMLのような恐ろしい怪物になります。どちらも敵に望まれるべきではなく、友人や同僚に気にしないでください。
XMLは、多くのフレーバーと用途を備えた単なるツールです。XMLはいくつかの点で優れており、他の点では得策ではありません。問題の1つは、人々が名前空間と無秩序に散らばっている不必要に複雑な「エンタープライズ」XMLを見たことだと思います(SOAP、誰か?)。人間用のXML形式を設計するための秘Theは、データを読みにくくすることなく、データに本当の意味を追加することです。
人々が問題とすることの1つは、XMLが文字または欠落しているブラケットで時々窒息することです。しかし、それにも利点と欠点の両方があります。利点は、半無効な構文のさまざまなケースを異なる方法で解釈できるHTMLのようなあいまいさがないことです。
欠点は、作成するのが少し難しく、学習するのが難しいことです。HTMLがXMLと同じくらい厳格であればWebがそれほど高速にならなかったという議論があることに同意しますが、今日それができたら嬉しいと主張します。:)
また、あなたがそれを適切に適用するための感覚と判断力を持っているという理由だけで、すべてに使用しないでください。持っているものがすべてXMLである場合、あなたは常にあなたが望むものから離れたXSLT変換になる傾向があります。:)
私は、人間がそれと対話する必要がある場合にのみ、形式が本当に重要であると主張します。何かをシリアライズし、それを別のプログラムが使用する場所に送信するプログラムを作成している場合、それが可能な限り効率的である限り、誰がそれがどのように見えるか気にしますか?バイナリ形式またはバニーとユニコーンを使用してください。
2つの理由:
<Problem:Worsening> <Problem:TimeDescription>Now</Problem:TimeDescription> <Problem:Posessive>they have</Problem:Posessive> <Problem:Quantity>many, many</Problem:Quantity> <Problem:WorseningDescription>more problems</Problem:WorseningDescription> </ProblemWorsening>
私は通常、「肥大化した」と「遅い」という言葉を投げかけます。
これは、最もコンパクトな構文ではありませんが、明らかに最も表現力のある構文です。人間が読める?言語の設計方法に依存します。ほとんどの人はXMLの言語を設計せず、オブジェクトをXMLとしてシリアル化します。
…なぜ多くの人々がそれを使用するのですか?
それはいたるところにあります。XQueryでXMLデータベースをクエリし、XHTMLまたはAtomとしてXSLTで結果を変換し、他のWebサービスからAtomまたは他のXML形式を取得し、XFormsを使用してユーザーからXMLを取得し、XMLSchemaで検証し、NGまたはSchematronを緩和し、それを処理できますXProc、XQuery Updateを使用してデータベースに保存します。これらのツールはすべてXMLを理解するため、異なる表現間でマッピングする必要はありません。
XMLはシリアル化テクノロジではなく、汎用の情報セットです。
ここで、異なる内部表現を持つ異なるベンダーによって作成された異なるシステム間のデータ交換に使用します。データを往復するXML変換/交換システムを構築します。そのためにはうまくいきます。
XMLは本質的に悪くはありませんが、XMLを使用して「良い」ソリューションを設計することは簡単ではないことを認識しています。
私の経験では、人々は技術自体ではなく、その使用方法に不満を持っています。
人々が不満を言う肥大化した遅いビットは、通常、そこから情報を取得するために使用されるライブラリ/メソッドです。
私は、ディスクに保存したい少量の構造化された情報を保存するために使用します(データベースまたはバイナリシリアル化なし)、または別のアプリケーションに渡します(基本的にSOAPも記述します)。
その理由:
複数の異種システムが通信に使用できる標準の「インターフェース」。そして、「人間」が読み取り可能です(種類、5 MB XMLをじっと見てみてください)
その悪い理由:
その肥大化、大きなサイズ=より多くの帯域幅=より多くの$$
他の理由があります、誰もが異なる不満を持っています...
<advanceAcceptanceIndicator>Y</advanceAcceptanceIndicator>
比率データ/マークアップが非常に低い...これを「肥大化」と呼びます。たとえば、JSonは半分だけ肥大化していますadvanceAcceptanceIndicator: "Y"
。また、タグ間のテキストが有効であるという事実もあるため、Xmlを読み取るときは、このcruftの処理方法を決定する必要があります。\n\t\t\t
解決策は、通常、これを無視することです。
value
?)はおそらく2人の間に空白を挿入したくなるので、おそらく優れているタグ。
他のテクノロジーと同様に、利用可能なツールとライブラリは多数あります。
私はXMLが好きではありません、特にそれはファンキーだからです、人々がそれが人間が読むことができると言うとき、彼らは冗談を言うか、または属性にxmlを埋め込もうとしたときに実際にxmlを読んだことはありません... xmlエンティティは本当にそれを作ります読めない。さらに、冗長な終了タグと、フリーテキストとデータを混在させる機能のために、どのくらいのスペースが無駄になるかは驚くべきことです...
しかし:
また、ほとんどの場合、優先順位の利点があります。すでにWebサービスをXmlで提供していて、新しいサービスを要求するとき...それはおそらくあなたが知っていることなのでXmlで行われるでしょう。
data Person = Person { surname :: String, firstName :: String, age :: Int }
そして、もしPerson "Doe" "John" 42
それが読めば、たくさんの手間を省くことができますが、カンマ区切りに近いです。
XMLは、人間が管理する必要のあるファイルには適していません。マークアップとコンテンツの間には視覚的な分離がないため、読みにくくなっています。特別な目的のエディターなしで正しく書くのは退屈です。XMLドキュメントのエラーは致命的です。XMLドキュメントを部分的に処理することはできません。XMLファイルが無効な場合、結果のエラーメッセージは役に立たないことがよくあります。
人間が保守する必要のあるファイルについては、JSON、YAML、またはインタープリター言語(Python、Ruby、Groovyなど)のソースコードのいずれかを使用することをお勧めします。従来のコード用のXML構成を作成する優れた方法は、Groovy MarkupBuilderを使用することであることがわかりました。別の良い選択は、ドメイン固有の言語を作成することです。これは、Ruby、Groovy、および他の多くの言語で非常に簡単に行えます。