2

Expressを使用してNodeJの上にjavascriptでCMSを書いています。私の目標は、過去数年間 .NET で毎日作成していたものを作成することでしたが、現在は純粋に JavaScript で作成しています。現時点では、ページをインラインで編集し (「contenteditable」属性を使用)、編集可能な div の HTML を JSON に解析して MongoDB に保存するという基本的なフローが機能しています。

もちろん逆に、必要なセクションの JSON が解析されて HTML サーバー側に戻され、jQuery を使用して JSDom ドキュメントに挿入され、ドキュメント全体がクライアントに送信されます。

これはすべて完全に機能しますが、現在、HTML が JSON として保存されている部分について質問している同僚と話し合っています。彼の意見では、これは XML であるべきですが、すべてを XML に変更する前に、この問題についてもう少し意見を聞きたいと思います。

プロセスのどの部分においても、XML は JSON よりも優れていますか? 私が知っているように、JSONを解析してHTMLに戻すのではなく、XSLTを使用してXMLをHTMLにフォーマットする必要があります。

これに関するご意見をお待ちしております。

4

4 に答える 4

2

はい、JSON は Javascript のオブジェクトに適しており、XML は保存しようとしている HTML に適しています。したがって、XML を書き留める JSON 構文である JSONML を見てください。スペックは本当に簡単なので、ここでは簡単に説明します。

  1. (ルート)ノードを表す配列から始めます
  2. この配列の最初の項目は、ノード名を表す文字列です
  3. 次の項目がオブジェクトの場合、ノードのすべての属性の列挙です。
  4. 配列の残りの部分は、ノードの子 (存在する場合) を表します。ここの各項目は、文字列 (textnode の場合) または同じ規則に従う別の配列 (elementnode の場合) のいずれかです。

これは JSONML の例です。

[
    "lcSequenceOption",
    [
        "lcAnswerContent",
        "Some answer content"
    ],
    [
        "lcSequence",
        {
            "value": 0
        }
    ]
]

これは、次の XML に変換されます。

<lcSequenceOption>
    <lcAnswerContent>Some answer content</lcAnswerContent>
    <lcSequence value="0" />
</lcSequenceOption>

JSONML では、処理命令の表記法を提供していません。JSONML に基づいてカスタム ルールを作成することはそれほど難しくありません。私が働いている組織では、「?」で始まるすべてのノード名 (ルール 2) を解釈します。処理命令として。

于 2015-11-12T14:14:22.900 に答える
1

次の理由から、BaseX のような XML データベース ソリューションを使用して XML でデータを格納する傾向があります。

  • XSLT を使用して、標準に準拠した方法で HTML などの他のマークアップ形式を生成するのに非常に適しています。
  • XPath などの標準に準拠した言語を使用してクエリを実行するのは簡単です。
  • 他のほとんどすべての形式に比較的簡単に変換できます (XSL:FO を使用した PDF など)。
  • ほぼすべてのエディターで読みやすく、理解しやすい

私には、HTML のようなマークアップ言語 (私が CMS で想定している入力データ形式) を JSON に変換し、CMS ページを「読み取り」モードでレンダリングするときに JSON を HTML に戻すのは複雑に感じます。入力形式が有効な XHTML であると仮定すると、それをネイティブ XML として保存および取得できるため、より自然に感じられます。

于 2012-08-16T11:10:00.590 に答える
0

JSONは間違いなくより「ノードネイティブ」なストレージ形式です。お気づきのように、mongo(couch、riak)でもうまく機能します。データを(文字列化された)XMLではなくJSONとして保存することのもう1つの利点は、mongoDBでプロパティのインデックス作成とクエリをいつでも開始できることです。

toJSON()アプリを適切に整理すると、ページシリアライザーをメソッドに置き換えるのは非常に簡単toXML()です。その逆も同様です。あなたの決定は確固たるものではありませんが、それはあなたにとってうまくいくようであり、「それはノードの方法です」ので、私はJSONに固執します。

誰かがそれを望んでいるなら、私はプロXMLであるいくつかの答えを見たいです。

于 2012-08-13T21:39:58.117 に答える