Основы XML




Задание содержимого элемента - часть 2


Следующий элемент Документ, однако, не будет валидным, поскольку порядок дочерних элементов не соответствует объявленному:

<MOUNTAIN> <!-- Неправильный элемент! --> <STATE>New Mexico</STATE> <NAME>Wheeler</NAME> <HEIGHT>13161</HEIGHT> </MOUNTAIN>

Пропуск дочернего элемента или использование одного и того же типа дочернего элемента более одного раза также недопустимо. Как вы видите, это достаточно строгий вид объявления.

  • Выборочная. Выборочная форма модели содержимого указывает, что элемент может иметь любой из серии допустимых дочерних элементов, разделяемых символом |. Например, следующее DTD указывает, что элемент FILM может состоять из одного дочернего элемента STAR, или одного дочернего элемента NARRATOR, или одного дочернего элемента INSTRUCTOR:

    <!DOCTYPE FILM [ <!ELEMENT FILM (STAR | NARRATOR | INSTRUCTOR)> <!ELEMENT STAR (#PCDATA)> <!ELEMENT NARRATOR (#PCDATA)> <!ELEMENT INSTRUCTOR (#PCDATA)> ] >

    Следовательно, следующий элемент Документ будет валидным:

    <FILM> <STAR>Robert Redford</STAR> </FILM>

    как и элемент:

    <FILM> <NARRATOR>Sir Gregory Parsloe</NARRATOR> </FILM>

    а также элемент:

    <FILM> <INSTRUCTOR>Galahad Threepwood</INSTRUCTOR> </FILM>

    Следующий элемент Документ не будет валидным, поскольку вы можете включить только один из дочерних элементов:

    <FILM> <!-- Неправильный элемент! --> <NARRATOR>Sir Gregory Parsloe</NARRATOR> <INSTRUCTOR>Galahad Threepwood</INSTRUCTOR> </FILM>

    Вы можете изменить любую из этих форм модели содержимого, используя символы: знак вопроса (?), знак плюс (+) и звездочка (*), значения которых описаны в следующей таблице:

    СимволЗначение
    ?Ни одного или один из предшествующих элементов
    +Один или более из предшествующих элементов
    *Ни одного или более из предшествующих элементов

    Например, следующее объявление означает, что вы можете включить один или более дочерних элементов NAME, и что дочерний элемент HEIGHT является не обязательным:




    Содержание  Назад  Вперед