
- •Введение
- •1Правила создания xml- документа
- •1.1Иерархическая структура xml-документа
- •1.2Отображение xml-документов в Web
- •1.3Отображение xml-документа с использованием таблицы каскадных стилей
- •2Cоздание валидных xml-документов
- •2.1Добавление dtd
- •2.2Форма записи объявления типа элемента (dtd)
- •2.3Задание содержимого элемента
- •2.3.1Последовательная модель содержимого элемента
- •2.3.2Выборочная модель содержимого элемента
- •2.4Задание смешанного содержимого
- •3Задание к лабораторной работе
- •4Содержание отчета по лабораторной работе
- •Рекомендуемая литература
- •Приложение а
2.1Добавление dtd
Объявление типа документа имеет следующую обобщенную форму записи:
<!DOCTYPE Имя DTD>
Здесь Имя указывает на имя Элемента. Например, объявление типа документа, рассмотренного в предыдущем разделе, может выглядеть следующим образом:
<!DOCTYPE INVENTORY DTD>
Здесь DTD следует заменить реальным содержимым.
2.2Форма записи объявления типа элемента (dtd)
<!ELEMENT Имя опись_содержимого>
Здесь Имя есть имя объявляемого типа элемента. Опись_содержимого - это описание содержимого, которое определяет, что может содержать элемент.
2.3Задание содержимого элемента
Если элемент имеет содержимое, он может непосредственно содержать только определенные дочерние элементы, но не символьные данные. В тексте документа вы можете разделять дочерние элементы пробелами, чтобы улучшить восприятие документа, но процессор будет игнорировать символы пробела и не передаст их приложению.
Рассмотрим следующий пример XML-документа, описывающий одну книгу:
<?xml version="1.0"?>
<!DOCTYPE BOOK
[
<!ELEMENT BOOK (TITLE, AUTHOR)>
<!ELEMENT TITLE (#PCDATA)>
<!ELEMENT AUTHOR (#PCDATA)>
]
>
<BOOK>
<TITLE>The Scarlet Letter</TITLE>
<AUTHOR>Nathaniel Hawthorne</AUTHOR>
</BOOK>
Модель содержимого может иметь одну из следующих форм:
Последовательная;
Выборочная.
2.3.1Последовательная модель содержимого элемента
Последовательная форма модели содержимого указывает, что элемент должен иметь заданную последовательность дочерних элементов. Например:
<!ELEMENT BOOK (TITLE, AUTHOR, PAGES)>
Соответственно, следующий элемент будет валидным:
<BOOK>
<TITLE>The Adventures of Huckleberry Finn</TITLE>
<AUTHOR>Mark Twain</AUTHOR>
<PAGES>298</PAGES>
</BOOK>
А следующий не будет валидным из-за того, что порядок дочерних элементов не соответствует объявленному:
<BOOK>
<AUTHOR>Mark Twain</AUTHOR>
<TITLE>The Adventures of Huckleberry Finn</TITLE>
<PAGES>298</PAGES>
</BOOK>
2.3.2Выборочная модель содержимого элемента
Выборочная форма модели содержимого указывает, что элемент должен иметь любой из серии допустимых дочерних элементов, разделяемых символом |. Например:
<!ELEMENT FILM (STAR | NARRATOR | INSTRUCTOR) >
Такое объявление делает корректными следующие элементы:
<FILM >
<STAR>Morgan Attenbury</STAR>
</FILM>
<FILM >
< NARRATOR >Bertram Wooster</ NARRATOR >
</FILM>
<FILM >
< INSTRUCTOR >Stinker Pike</ INSTRUCTOR >
</FILM>
Следующий элемент не будет валидным, поскольку может содержать только один из дочерних элементов
<FILM ><!--Неправильный элемент!-- >
<STAR>Morgan Attenbury</STAR>
< NARRATOR >Bertram Wooster</ NARRATOR >
</FILM>
Вы можете изменить любую из этих форм модели содержимого, используя знак вопроса (?), знак плюс (+), и звездочку (*), значения которых описаны в таблице 1.
Таблица 1 – Значения символов, задающих опись содержимого элемента
Символ |
Значение |
? |
Ни одного или один из предшествующих элементов |
+ |
Один или несколько из предшествующих элементов |
* |
Ни одного или несколько из предшествующих элементов |
Например, следующее объявление означает, что элемент BOOK должен иметь один дочерний элемент TITLE, один или несколько элементов AUTHOR и что дочерний элемент PAGES является необязательным:
<!ELEMENT BOOK (TITLE, AUTHOR+, PAGES?)>
Соответственно, каждый из следующих элементов будет правильным:
<BOOK>
<TITLE>The Adventures of Huckleberry Finn</TITLE>
<AUTHOR>Mark Twain</AUTHOR>
<PAGES>298</PAGES>
</BOOK>
<BOOK>
<TITLE>Moby-Dick</TITLE>
<AUTHOR>Herman Melville</AUTHOR>
<AUTHOR>Nathaniel Hawthorne</AUTHOR>
</BOOK>
Можно воспользоваться символами ?, + или * для модификации всей модели содержимого, помещая символы непосредственно после закрывающихся скобок:
<!ELEMENT FILM (STAR | NARRATOR | INSTRUCTOR) +>
Такое объявление делает корректными следующие элементы:
<FILM >
<STAR>Morgan Attenbury</STAR>
< NARRATOR >Bertram Wooster</ NARRATOR >
</FILM>
<FILM >
<STAR>Sean Connery</STAR>
<STAR>Meg Ryan</STAR>
</FILM>
<FILM >
< INSTRUCTOR >Stinker Pike</ INSTRUCTOR >
</FILM>
Можно формировать более сложные модели содержимого путем вложения выборочной модели внутрь последовательной, либо последовательной модели в выборочную:
<!ELEMENT FILM (TITLE, CLASS, (STAR | NARRATOR | INSTRUCTOR) )>