2011-10-25 9 views
0

私はこの正確な質問とその迷惑メールに対する回答を見つけることができませんでした。重複した要素の問題のXML順

重複する要素の順序が重要なXMLスキーマを作成する必要があります。例:

<article> 
    <line>This article was</line> 
    <line>written by</line> 
</article> 

私は上記の例がかなり工夫されていることを知っていますが、私の場合を示しています。私は実行順序が重要な一連のコマンドを逆シリアル化する必要があります。これを達成するための唯一の方法は、各子要素にorder="[integer]"属性を追加することです(上の例の<line>タグ)。しかし、XML文書が手作業で入力されるようになると、それはやや重いと思われます。代わりがありますか?

+2

XSDが多すぎる場合は、XPathを使用してドキュメントをクエリし、オブジェクトのプロパティを設定してください。注文を確認するには、アプリケーションロジック(XSDではなく)を使用します。 –

+0

私は実際にXMLパーサに依存して、パーシング時に順序が維持されることを確実にしたくありません。それは非常に安全だと思いません。より良い解決策がない場合は、質問 – Clivest

+2

に記載されているように 'order'属性を使用しますか?解析中は常に注文が維持され、すべてのパーサーがそれを保持します。これはXMLデータモデルの不可欠な部分です。上の他のライブラリが気にしないかもしれないが、パーサーは決して注文を変えないかもしれないし、DOMのような基本的なデータモデルもそうでないかもしれない。 – StaxMan

答えて

3

XML仕様は、XMLパーサに配置するレポート要件に非常に不安定です。たとえば、パーサーは空白を報告する必要があると言いますが、他の文字コンテンツを報告する必要はありません。しかし、実際には、文字の内容を報告し、文字を正しい順序で保持するXMLパーサに頼ることができます。同様に、正しい順序で報告される要素に頼ることができます。スペックがこれを義務づけていない唯一の理由は、著者がそれを言う必要があまりにも明白だと思ったことです。あなたの恐れはまったく根拠がありません。

+0

マイケルの説明をありがとう。私のチームは過去10年間(MSXML、.NET System.Xml)のXMLアプリケーションを開発しており、ドキュメントオーダーを再解釈するこれらのパーサーで問題に遭遇したことはありません。 –

関連する問題