Почему при использовании скриптов, приведенных в курсе Основы XML лекция Лекция 8: Отображение XML-документов с использованием связывания данных не происходит связывания XLM документа с HTML? Отображаются пустые поля. Браузер IE11 |
Создание валидных XML-документов
Форма записи DTD
Объявление типа документа имеет следующую обобщенную форму записи:
<!DOCTYPE Имя DTD>
Здесь Имя указывает на имя элемента Документ. Имя действительного элемента Документ должно в точности соответствовать имени, записанному в объявлении. (Правила, в соответствии с которыми следует выбирать имена элементов, приведены в разделе "Анатомия элемента" в "Создание корректно сформированных XML-документов" .) Например, если вы создаете объявление типа документа для документа, рассмотренного в предыдущем разделе, вам следует использовать имя INVENTORY:
<!DOCTYPE INVENTORY DTD>
(Это еще не законченное объявление типа документа. DTD следует заменить реальным содержимым.)
DTD представляет собой определение типа документа, которое содержит объявления, задающие элементы документа, атрибуты и другие компоненты. В следующем разделе вы познакомитесь с формой записи их.
Примечание. Подобно всем ключевым словам XML, DOCTYPE должно быть набрано прописными буквами.
Создание DTD
DTD состоит из символа левой квадратной скобки ([), после которой следует ряд объявлений разметки, заканчивающихся правой квадратной скобкой (]). Объявления разметки описывают логическую структуру документа; т.е. задают элементы документа, атрибуты и другие компоненты. На рисунке 5.2 приведен законченный валидный XML-документ, содержащий DTD с единственным объявлением разметки, которое определяет один тип элемента в документе, SIMPLE.
DTD в этом примере документа указывает, что документ может содержать только элементы типа SIMPLE (это единственный заданный тип элемента), и что элемент SIMPLE может иметь любое допустимое для данного типа содержимое (ключевое слово ANY ).
DTD может содержать следующие типы объявлений разметки.
- Объявления типов элементов. Они определяют типы элементов, которые может содержать документ, а также содержимое и порядок следования элементов. Об объявлениях типов элементов пойдет речь в следующем разделе.
- Объявления списков атрибутов. Каждое объявление списков атрибутов задает имена атрибутов, которые могут быть использованы с определенным типом элемента, а также типы данных и устанавливаемые по умолчанию значения этих атрибутов. Об этих объявлениях будет рассказано далее в этой лекции.
- Объявления примитивов. Вы можете использовать примитивы для хранения часто используемых фрагментов текста или для встраивания не относящихся к XML данных в ваш документ. Об объявлениях примитивов будет рассказано в "Определение и использование примитивов" .
- Объявления нотаций. Нотация описывает формат данных или идентифицирует программу, используемую для обработки определенного формата. Об объявлениях нотаций пойдет речь в "Определение и использование примитивов" .
- Инструкции по обработке. Эта тема затрагивалась в разделе "Использование инструкций по обработке" в "Добавление комментариев, инструкций по обработке и разделов CDATA" .
- Комментарии. О них говорилось в разделе "Добавление комментариев" в "Добавление комментариев, инструкций по обработке и разделов CDATA" .
- Ссылки на параметрические примитивы. Любой из приведенных выше компонентов может содержаться внутри параметрического примитива и добавляться путем ссылки на параметрический примитив. Смысл этого оператора станет вам понятен, когда вы познакомитесь с материалом из "Определение и использование примитивов" . Данный пункт приведен здесь для полноты картины.
Примечание. Типы DTD, обсуждаемые в этом разделе (и используемые в примерах в последующих разделах) относятся к внутреннему подмножеству DTD, поскольку полностью включаются в объявление типа данного документа. В конце этой лекции вы узнаете, как использовать DTD, размещенные в отдельном файле, и относящиеся к внешнему подмножеству DTD.
Объявление типов элементов
В валидном XML-документе вы должны полностью объявить тип каждого элемента, который вы используете в документе, в объявлении типа элемента внутри DTD. Объявление типа элемента указывает на имя типа элемента и допустимое содержимое элемента (часто описывающее порядок размещения дочерних элементов). Как единое целое, объявление типов элементов в DTD – подобно построению базы данных – задает полную логическую структуру документа. Таким образом, объявление типа элемента описывает содержимое данного типа элемента, в частности, указывает типы и порядок следования элементов, которые данный тип элемента может содержать.
Форма записи объявления типа элемента
Объявление типа элемента имеет следующую обобщенную форму:
<!ELEMENT Имя опись_содержимого>
Здесь Имя есть имя объявляемого типа элемента. (Свод правил по правильному заданию имен элементов приведен в разделе "Анатомия элемента" в "Создание корректно сформированных XML-документов" .) опись_содержимого – это описание содержимого, которое определяет, что может содержать элемент. В следующем разделе приведены различные типы описаний содержимого, которые вы можете использовать.
Ниже приведено объявление типа элемента с именем TITLE, для содержимого которого могут использоваться только символьные данные (дочерние элементы не допускаются):
<!ELEMENT TITLE (#PCDATA)>
А вот объявление для типа элемента с именем GENERAL, содержимое которого может быть любым:
<!ELEMENT GENERAL ANY>
В качестве последнего примера рассмотрим законченный XML-документ с двумя типами элементов. Объявление типа элемента COLLECTION указывает, что он может содержать один или несколько элементов CD, а объявление типа элемента CD указывает, что он может содержать только символьные данные. Заметим, что документ соответствует этим объявлениям, и, следовательно, является валидным:
<?xml version="1.0" encoding="windows-1251" ?> <!DOCTYPE COLLECTION [ <!ELEMENT COLLECTION (CD)+> <!ELEMENT CD (#PCDATA)> <!-- Вы также можете включать комментарии в DTD. --> ] > <COLLECTION> <CD>Mozart Violin Concertos 1, 2, and 3</CD> <CD>Telemann Trumpet Concertos</CD> <CD>Handel Concerti Grossi Op. 3</CD> </COLLECTION>
Примечание. Вы можете объявить определенный тип элемента в данном документе только один раз.
Описание содержимого элемента
Вы можете описать содержимое элемента – т.е. заполнить часть опись_содержимого в объявлении типа элемента – четырьмя различными способами.
- Пустое содержимое ( EMPTY ). Ключевое слово EMPTY указывает, что элемент должен быть пустым – т.е. не может иметь содержимого. Например:
<!ELEMENT IMAGE EMPTY>
Ниже приведены валидные элементы IMAGE, которые вы можете поместить в документ:
<IMAGE></IMAGE> <IMAGE />
- Любое содержимое ( ANY ). Ключевое слово ANY указывает, что элемент может иметь любое допустимое для этого типа содержимое. То есть элемент этого типа может содержать или не содержать дочерние элементы в любом порядке и с любым количеством вхождений, иметь или не иметь чередующиеся символьные данные. Это наиболее неопределенный тип описания содержимого и дает возможность создавать типы элементов без ограничений на их содержимое. Вот пример соответствующего объявления:
<!ELEMENT MISC ANY>
- Дочернее содержимое элемента. При таком описании типа содержимого элемент может содержать дочерние элементы, но не может непосредственно содержать символьные данные. Об этой возможности будет говориться в следующем разделе.
- Смешанное содержимое. При этом описании типа содержимого элемент может содержать любое количество смешанных данных, в том числе и чередующихся с дочерними элементами определенных типов. Эта возможность будет описана далее в данной лекции.