- •Содержание
- •Правила создания xml- документа
- •Иерархическая структура xml-документа
- •ОтображениеXml-документов вWeb
- •ОтображениеXml-документа с использованием таблицы каскадных стилей
- •Cоздание валидныхxml-документов
- •ДобавлениеDtd
- •Форма записи объявления типа элемента (dtd)
- •Задание содержимого элемента
- •Последовательная модель содержимого элемента
- •Выборочная модель содержимого элемента
- •Задание смешанного содержимого
- •Задание к лабораторной работе
- •Содержание отчета по лабораторной работе
- •Контрольные вопросы
- •Рекомендуемая литература
- •Приложение а
- •Издательство «нефтегазовый университет»
- •625000, Г. Тюмень, ул. Володарского, 38
- •625039, Г. Тюмень, ул. Киевская, 52
ДобавлениеDtd
Объявление типа документа имеет следующую обобщенную форму записи:
<!DOCTYPE Имя DTD>
Здесь Имя указывает на имя Элемента. Например, объявление типа документа, рассмотренного в предыдущем разделе, может выглядеть следующим образом:
<!DOCTYPE INVENTORY DTD>
Здесь DTD следует заменить реальным содержимым.
Форма записи объявления типа элемента (dtd)
<!ELEMENT Имя опись_содержимого>
Здесь Имя есть имя объявляемого типа элемента. Опись_содержимого - это описание содержимого, которое определяет, что может содержать элемент.
Задание содержимого элемента
Если элемент имеет содержимое, он может непосредственно содержать только определенные дочерние элементы, но не символьные данные. В тексте документа вы можете разделять дочерние элементы пробелами, чтобы улучшить восприятие документа, но процессор будет игнорировать символы пробела и не передаст их приложению.
Рассмотрим следующий пример 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>
Модель содержимого может иметь одну из следующих форм:
Последовательная;
Выборочная.
Последовательная модель содержимого элемента
Последовательная форма модели содержимого указывает, что элемент должен иметь заданную последовательность дочерних элементов. Например:
<!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>
Выборочная модель содержимого элемента
Выборочная форма модели содержимого указывает, что элемент должен иметь любой из серии допустимых дочерних элементов, разделяемых символом |. Например:
<!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) )>