0

xmlファイルでは、これはOKです:

<target name="test">
    <exec executable="app">
        <arg value="run"/>
        <arg value="stop"/>
    </exec>     
</target>

しかし、これをxmlファイルに入れることはそうではありません(少なくともそれは検証が言うことです):

<target name="test">
    <exec executable="app">
        <arg value="run"/>
        <arg value="stop"/>
    </exec>     
</target>
<target name="test">
    <exec executable="app">
        <arg value="run"/>
        <arg value="stop"/>
    </exec>     
</target>

同じ xml ファイルに複数のターゲット要素を次々に含めることが違法なのはなぜですか?

4

2 に答える 2

2

「なぜ」という質問は答えにくいものです。SGML にあったため、部分的には XML でそのようになっています。単一のドキュメント コンテナー要素を強制することにはいくつかの利点がありますが、考えられる主な利点は次のとおりです。ルート要素の終了後にコメントや処理命令が存在する可能性があるという事実によって、終了に達したときに知っていることは多少損なわれます。

最後に要素を追加し続けるログ ファイルなどのストリーミング コンテキストで XML 形式を使用する場合は、多少面倒です。

この問題の一般的な解決策は、複数の最上位要素を含むファイルが整形式のドキュメントではなく、整形式の外部解析済みエンティティであることを確認することです。したがって、log.xml数十の最上位要素を含むファイルを生成すると、それをドキュメントとして解析することはできませんが、解析された外部エンティティを参照する 1 つの静的な小さなドキュメントを作成することができlog.xml、指定された領域に戻ることができます。

wrapper.xml

<!DOCTYPE wrapper [
<!ENTITY thelog SYSTEM "log.xml">
]>
<wrapper>
&thelog;
</wrapper>

次に、解析すると、パーサーは、ファイルにあったすべての要素を含むwrapper.xmlルート要素を持つドキュメントを構築します。wrapperlog.xml

于 2013-01-17T21:35:05.577 に答える
0

有効な xml ファイルには 1 つの (そして 1 つのみの) ルート要素が含まれている必要があるためです。

ウィキペディアのルート要素の記事、またはこの引用を抽出したこのW3C 推奨ペーパーを参照してください。

[定義: ルートまたはドキュメント要素と呼ばれる要素が 1 つだけ存在し、その一部が他の要素のコンテンツに表示されない。]

于 2013-01-17T21:07:36.767 に答える