
- •Часть №1
- •Лабораторная работа №1 Структура xml документа
- •Лабораторная работа №2 Пространство имен и сущности
- •Лабораторная работа №3 Комментарии, разделы cdata,инструкции по обработке
- •Часть№2
- •Лабораторная работа №1 Синтаксис dtd
- •Лабораторная работа №2 Дочернее содержимое элемента, задание смешанного содержимого
- •Лабораторная работа №3 Атрибуты
- •Лабораторная работа №4 Подмножества dtd
- •Лабораторная работа №5 Валидность документа dtd
- •Валидность документа
- •Требования корректности формирования и валидности
- •Лабораторная работа №6 Общие внутренние и внешние примитивы dtd.
- •Xод работы:
- •Лабораторная работа №7 Параметрические внутренние и внешние примитивы
- •Xод работы:
- •Лабораторная работа №8 Ссылки на примитивы
- •Xод работы:
- •Использование предварительно определенных примитивов
- •Создайте xml-документ с использованием предварительно определенных примитивов и ссылками на примитивы на любую тематаку.
- •Отобразите документ в браузере Часть №3
- •Изучить встроенные простые типы данных xmlShema.
- •Xод работы:
- •Типы long, int, short и byte
- •Отобразите документ в браузере Лабораторная работа №2 Определение простых типов данных и пространство имен
- •Сужение
- •Не более чем из пяти целых чисел следующим образом:
- •Создайте xmlShema документ с простыми типами данных и пространством имен имен, для этого сделайте следующие:
- •Лабораторная работа №3 Объявление элементов и их атрибутов
- •Создание группы элементов и атрибутов в сложном типе
- •Лабораторная работа №5 Определение типа со сложным телом,
- •Лабораторная работа №6 Аннотирование схем, включение файлов схемы в другую схему
- •Часть №4
- •Лабораторная работа №1 Входной и выходной документы, инструкция обработки и корневой элемент
- •Лабораторная работа №2 Описание структуры с помощью шаблонов
- •Лабораторная работа №3 Встроенные шаблонные правила
- •Лабораторная работа №4 Модульная организация преобразования
- •Лабораторная работа №5 Инструкции управления
- •Лабораторная работа №6
- •Лабораторная работа №7
- •Лабораторная работа №8
- •Часть №5
- •Лабораторная работа №1 Интерфейс программы и создание xsd документа
- •Лабораторная работа №2
- •Лабораторная работа №3
- •Xslt трансформация
- •Лабораторная работа №4 Создание документа dtd и его применение к xml.Конвертирование dtd в Shema.
- •Напечатайте следующий тест:
Лабораторная работа №2 Дочернее содержимое элемента, задание смешанного содержимого
Цель работы:
Изучить дочерние содержимое элемента, способы задания смешанного содержимого в элементе
Ход работы:
Задание дочернего содержимого элемента
Если элемент имеет дочернее содержимое, он может непосредственно содержать только определенные дочерние элементы, но не символьные данные. В тексте документа вы можете разделять дочерние элементы символами пробела, табуляции, возврата каретки или перевода строки, чтобы улучшить восприятие документа, но процессор будет игнорировать эти символы и не передаст их приложению.
Рассмотрим следующий пример XML-документа, описывающий одну книгу:
<?xml version="1.0" encoding="windows-1251" ?>
<!DOCTYPE BOOK
[
<!ELEMENT BOOK (TITLE, AUTHOR)>
<!ELEMENT TITLE (#PCDATA)>
<!ELEMENT AUTHOR (#PCDATA)>
]
>
<BOOK>
<TITLE>The Scarlet Letter</TITLE>
<AUTHOR>Nathaniel Hawthorne</AUTHOR>
</BOOK>
В этом документе тип элемента BOOK объявлен как имеющий дочернее содержимое. (TITLE, AUTHOR), следующие за именем элемента в объявлении, составляют модель содержимого. Модель содержимого указывает на разрешенные типы дочерних элементов и их порядок. В этом примере модель содержимого указывает на то, что элемент BOOK должен иметь ровно один дочерний элемент TITLE, за которым следует ровно один дочерний элемент AUTHOR. При обработке документа процессор игнорирует три символа перехода на следующую строку, используемые для разделения дочерних элементов внутри элемента BOOK.
Модель содержимого может иметь одну из следующих основных форм.
Последовательная. Последовательная форма модели содержимого указывает, что элемент должен иметь заданную последовательность дочерних элементов. Вы отделяете имена типов дочерних элементов запятыми. Например, следующее DTD указывает, что элемент MOUNTAIN должен иметь один дочерний элемент NAME, после которого идет один дочерний элемент HEIGHT, за которым следует один дочерний элемент STATE:
<!DOCTYPE MOUNTAIN
[
<!ELEMENT MOUNTAIN (NAME, HEIGHT, STATE)>
<!ELEMENT NAME (#PCDATA)>
<!ELEMENT HEIGHT (#PCDATA)>
<!ELEMENT STATE (#PCDATA)>
]
>
Следовательно, следующий элемент Документ будет валидным:
<MOUNTAIN>
<NAME>Wheeler</NAME>
<HEIGHT>13161</HEIGHT>
<STATE>New Mexico</STATE>
</MOUNTAIN>
Следующий элемент Документ, однако, не будет валидным, поскольку порядок дочерних элементов не соответствует объявленному:
<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>
<INSTRUCTOR>Galahad Threepwood</INSTRUCTOR>
</FILM>
Наконец, вы можете формировать более сложные модели содержимого путем вложения выборочной модели содержимого внутрь последовательной модели, либо последовательной модели в выборочную модель. Например, следующее DTD задает, что каждый элемент FILM должен иметь один дочерний элемент TITLE; за ним должен следовать один дочерний элемент CLASS; после него должен идти один дочерний элемент STAR, NARRATOR или INSTRUCTOR:
<!DOCTYPE FILM
[
<!ELEMENT FILM (TITLE, CLASS, (STAR | NARRATOR |
INSTRUCTOR) )>
<!ELEMENT TITLE (#PCDATA)>
<!ELEMENT CLASS (#PCDATA)>
<!ELEMENT STAR (#PCDATA)>
<!ELEMENT NARRATOR (#PCDATA)>
<!ELEMENT INSTRUCTOR (#PCDATA)>
]
>
В соответствии с этим DTD, следующий элемент Документ будет корректным:
<FILM>
<TITLE>The Net</TITLE>
<CLASS>fictional</CLASS>
<STAR>Sandra Bullok</STAR>
</FILM>
так же, как такой:
<FILM>
<TITLE>How to Use XML</TITLE>
<CLASS>instructional</CLASS>
<INSTRUCTOR>Penny Donaldson</INSTRUCTOR>
</FILM>
Создайте валидный XML –документ с дочерними элементами, для это сделайте следующее:
Откройте новый файл в вашем текстовом редакторе и введите текст XML-документа, листинг которого представлен ниже
Листинг 2.1
<?xml version="1.0" encoding="windows-1251"?>
<!DOCTYPE library
[
<!ELEMENT library (BOOK | AUTHOR | BINDING | PAGES | PRICE )>
<!ELEMENT BOOK (#PCDATA)>
<!ELEMENT AUTHOR (#PCDATA)>
<!ELEMENT (#PCDATA)>
<!ELEMENT PAGES (#PCDATA)>
<!ELEMENT PRICE (#PCDATA)>
]
>
<library>
<PRICE>$5.49</PRICE>
<AUTHOR>Mark Twain</AUTHOR>
<PAGES>298</PAGES>
<BOOK>The Adventures of Huckleberry Finn</BOOK>
</library>
Воспользуйтесь командой Save (Сохранить) текстового редактора, для сохранения документа на вашем жестком диске, присвоив ему имя Affiliated elements.xml.
Откройте файл в вашем браузере и вас должно получиться то что представлено на
рисунке 2.3
Рисунок 2.3
Задание смешанного содержимого
Если элемент имеет смешанное содержимое, он может включать символьные данные. Если же вы зададите в объявлении один или несколько типов дочерних элементов, он может содержать любые из этих дочерних элементов в любом порядке и с любым количеством вхождений (нуль и более). Другими словами, при смешанном содержимом вы можете задавать типы дочерних элементов, но не можете задавать порядок или количество вхождений дочерних элементов, а также задавать обязательность включения для определенных типов дочерних элементов.
Чтобы объявить тип элемента смешанного содержимого, вы можете воспользоваться одной из следующих форм модели содержимого.
Только символьные данные. Чтобы объявить тип элемента, который может содержать только символьные данные, используйте модель содержимого (#PCDATA). Так, следующее объявление указывает, что для элемента SUBTITLE допускаются только символьные данные:
<!ELEMENT SUBTITLE (#PCDATA)>
Следующие два элемента в соответствии с данной декларацией являются корректными:
<SUBTITLE>A New Approach</SUBTITLE>
<SUBTITLE></SUBTITLE>
Символьные данные с необязательными дочерними элементами. Чтобы объявить тип элемента, который может содержать символьные данные плюс ни одного или несколько дочерних элементов, перечислите каждый тип дочернего элемента после ключевого слова 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>