Основы XML

       

Задание смешанного содержимого


Если элемент имеет смешанное содержимое, он может включать символьные данные. Если же вы зададите в объявлении один или несколько типов дочерних элементов, он может содержать любые из этих дочерних элементов в любом порядке и с любым количеством вхождений (нуль и более). Другими словами, при смешанном содержимом вы можете задавать типы дочерних элементов, но не можете задавать порядок или количество вхождений дочерних элементов, а также задавать обязательность включения для определенных типов дочерних элементов.

Чтобы объявить тип элемента смешанного содержимого, вы можете воспользоваться одной из следующих форм модели содержимого.

  • Только символьные данные. Чтобы объявить тип элемента, который может содержать только символьные данные, используйте модель содержимого (#PCDATA). Так, следующее объявление указывает, что для элемента SUBTITLE допускаются только символьные данные: <!ELEMENT SUBTITLE (#PCDATA)>

    Следующие два элемента в соответствии с данной декларацией являются корректными:

    <SUBTITLE>A New Approach</SUBTITLE> <SUBTITLE></SUBTITLE>

    Заметим, что элемент, который в соответствии с объявлением должен содержать символьные данные, может и не иметь никаких символов – т.е. быть пустым.

    Примечание. Ключевое слово PCDATA относится к синтаксически анализируемым (разбираемым) символьным данным. Из лекции 3 вам известно, что XML-процессор синтаксически разбирает символьные данные внутри элемента – т.е. сканирует элемент в поиске XML-разметки. В связи с этим вы не можете использовать левую угловую скобку (<) или знак амперсанда (&) или символы ]]> как часть символьных данных, поскольку синтаксический анализатор будет интерпретировать каждый из этих символов или группы символов как разметку. Однако вы можете использовать любые символы с помощью ссылки на символ или на предопределенный примитив (см. лекцию 6), либо с помощью раздела CDATA (см. лекцию 4).

  • Символьные данные с необязательными дочерними элементами. Чтобы объявить тип элемента, который может содержать символьные данные плюс ни одного или несколько дочерних элементов, перечислите каждый тип дочернего элемента после ключевого слова PCDATA в модели содержимого, разделяя их символами ( и помещая звездочку (*) в конце всей модели содержимого. Каждое имя элемента может появляться в модели содержимого только один раз. Например, следующее объявление указывает, что элемент TITLE может содержать символьные данные плюс ни одного или несколько дочерних элементов SUBTITLE: <!ELEMENT TITLE (#PCDATA | SUBTITLE)*>

    В соответствии с этим объявлением следующие элементы TITLE являются допустимыми:

    <TITLE> Moby-Dick <SUBTITLE>Or, the Whale</SUBTITLE> </TITLE> <TITLE> <SUBTITLE>Or, the Whale</SUBTITLE> Moby-Dick </TITLE> <TITLE> Moby-Dick </TITLE> <TITLE> <SUBTITLE>Or, the Whale</SUBTITLE> <SUBTITLE>Another Subtitle</SUBTITLE> </TITLE> <TITLE></TITLE>



Содержание раздела