1

| に頭を悩ませるのに苦労しています。どの要素を別の要素に含めることができるかを定義するために DTD で使用される文字。私はかなり長い間グーグルを試しましたが、私が理解できる方法でそのトピックに取り組んでいる主要な結果はありませんでした.鮮やかに見つめている壁の前に座っているだけかもしれません.

次の例を想像してください。「response」という名前の要素があり、タグ「character」と「player」の順序付けられていない未定義の数、または正確に 1 つのタグ「base」と未定義の量の「option」タグのいずれかを含めることができます。次のように:

<response>
    <character>text</character>
    <player>text</player>
    <character>text</character>
</response>

有効です。また:

<response>
    <base>text</base>
    <option>other elements</option>
    <option>other elements</option>
    <option>other elements</option>
</response>

も有効です。ただし、character/player タグと base/option タグを混在させることはできません。DTDで次のことを試しました:

<!ELEMENT response ((character*, player*)
                   |(base, option*))>

ただし、これは適切な検証にはつながりませんでした。ある種の

<!ELEMENT response (character*, player*, 
                    base*, option*)>

私の階層でキャラクター - >プレイヤー - >キャラクターを実行すると、編集者も泣きます。w3schools と他のいくつかのページは、次のようなことを教えてくれます

<!ELEMENT response (character | player | base 
                   | option)*>

混合コンテンツになり、好きなようにタグに何かを入れることができます(または、少なくとも、それが私が信じていることです)が、これは私が望んでいるものでも、編集者も満足していないようです.

だから、誰かが|の適切な使い方を教えてくれたらとてもうれしいです。DTD で要素を定義するときの文字。前もって感謝します。

編集:宣言から - もちろん false - #REQUIRED タグを編集しました。私のコードではそれらを使用しませんでした。これを書くのを台無しにしました。

[編集: 質問のタイトルの「混合コンテンツ」への誤った参照を削除しました。]

4

1 に答える 1

1

あなたはとても近かった!これを試して:

<!ELEMENT response ((character|player)*|(base,option*))>

#REQUIREDが宣言から削除されていることにも注意してください。属性宣言( )でのみ必要ですATTLIST。あなたがそれを削除した場合、あなたの最後の試みも同様に機能したでしょう:

<!ELEMENT response (character | player | base | option)*>
于 2012-08-21T14:51:54.980 に答える