
- •Часть №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.
- •Напечатайте следующий тест:
Лабораторная работа №7 Параметрические внутренние и внешние примитивы
Цель работы:
Изучить параметрические внутренние и внешние примитивы
Xод работы:
Объявление параметрического внутреннего разбираемого примитива
Обычно для объявления элементов и атрибутов используются параметрические
сущности. Ссылки на параметрические сущности могут включаться только в DTD.
Объявление для параметрического внутреннего разбираемого примитива имеет следующую общую форму записи:
<!ENTITY % ИмяПримитива ЗначениеПримитива>
Следующее DTD объявляет параметрический внутренний разбираемый примитив с именем author, который содержит три объявления разметки: комментарий, объявление типа элемента и объявление списка атрибутов. Содержимое примитива (т.е. замещающий его текст) помещается в конец DTD посредством ссылки на параметрический примитив (%author;);
<!DOCTYPE BOOK
[
<!ENTITY % author
"<!-- информация об авторе -->
<!ELEMENT AUTHOR (#PCDATA)>
<!ATTLIST AUTHOR Nationality CDATA 'American'>"
>
<!ELEMENT BOOK (TITLE, AUTHOR)>
<!ELEMENT TITLE (#PCDATA)>
%author;
]
Объявление параметрического внешнего разбираемого примитива
Объявление для параметрического внешнего разбираемого примитива имеет следующую форму записи:
<!ENTITY % ИмяПримитива SYSTEM СистемЛитерал>
Системный литерал задает URI файла, содержащего данные параметрического примитива. В настоящее время URI практически аналогичен стандартному унифицированному указателю ресурса Internet (URL). Вы можете использовать как полностью заданный URI, например:
<!ENTITY % declarations
SYSTEM "http://bogus.com/documents/Declarations.dtd">
Либо вы можете использовать частичный URI, задающий местонахождение относительно местонахождения XML-документа, содержащего URI, например:
<!ENTITY % declarations SYSTEM "Declarations.dtd">
Вы можете использовать параметрические внешние разбираемые примитивы для хранения группы взаимосвязанных объявлений. Допустим, вы занимаетесь продажей книг, CD-ROM, плакатов и другой продукции. Вы можете поместить объявления для каждого вида продукции в отдельный файл. Это позволит вам объединять эти группы объявлений различными способами. Например, вы хотели бы создать XML-документ, который описывает только имеющиеся у вас в наличии книги и CD-ROM. Для этого вы можете поместить объявления для книг и CD-ROM в DTD документа с помощью параметрических внешних разбираемых примитивов, как показано в следующем примере XML-документа:
<?xml version="1.0" encoding="windows-1251" ?>
<!DOCTYPE INVENTORY
[
<!ELEMENT INVENTORY (BOOK | CD)*>
<!ENTITY % book_decls SYSTEM "Book.dtd">
<!ENTITY % cd_decls SYSTEM "CD.dtd">
%book_decls;
%cd_decls;
]
>
<INVENTORY>
<BOOK>
<BOOKTITLE>The Marble Faun</BOOKTITLE>
<AUTHOR>Nathaniel Hawthorne</AUTHOR>
<PAGES>473</PAGES>
</BOOK>
<CD>
<CDTITLE>Concerti Grossi Opus 3</CDTITLE>
<COMPOSER>Handel</COMPOSER>
<LENGTH>72 minutes</LENGTH>
</CD>
<BOOK>
<BOOKTITLE>Leaves of Grass</BOOKTITLE>
<AUTHOR>Walt Whitman</AUTHOR>
<PAGES>462</PAGES>
</BOOK>
<!-- дополнительные виды продукции… -->
</INVENTORY>
Вот содержимое файла примитива Book.dtd:
<!ELEMENT BOOK (BOOKTITLE, AUTHOR, PAGES)>
<!ELEMENT BOOKTITLE (#PCDATA)>
<!ELEMENT AUTHOR (#PCDATA)>
<!ELEMENT PAGES (#PCDATA)>
А вот содержимое файла примитива CD.dtd:
<!ELEMENT CD (CDTITLE, COMPOSER, LENGTH)>
<!ELEMENT CDTITLE (#PCDATA)>
<!ELEMENT COMPOSER (#PCDATA)>
<!ELEMENT LENGTH (#PCDATA)>
Создайте XML-документ с внутренними параметрическими сущностями а затем с внешними, для этого сделайте следующее:
Откройте новый файл в вашем текстовом редакторе и введите текст XML-документа, листинг которого представлен ниже
Листинг 2.7
<?xml version =" 1.0" standalone="yes"?>
<!DOCTYPE DOCUMENT [
<!ENTITY % BR "<!ELEMENT BR EMPTY>">
<!ELEMENT DOCUMENT (CUSTOMER)*>
<!ELEMENT CUSTOMER (NAME,DATE.ORDERS)>
<!ELEMENT NAME (LAST_NAME.FIRST_NAME)>
<!ELEMENT LAST_NAME (#PCDATA)>
<!ELEMENT FIRST_NAME (#PCDATA)>
<!ELEMENT DATE (#PCDATA)>
<!ELEMENT ORDERS (ITEM)*>
<!ELEMENT ITEM (PRODUCT.NUMBER.PRICE)>
<!ELEMENT PRODUCT (#PCDATA)>
<!ELEMENT NUMBER (#PCDATA)>
<!ELEMENT PRICE (#PCDATA)>
]>
В данном случае объявляется параметрическая сущность BR, которая вводится в определение DTD в виде конструкции <! ELEMENT BR EMPTY>
Теперь можно обращаться к этой параметрической сущности путем включения в DTD объявления <! ELEMENT BR EMPTY>,измените листинг 2.7 следующим образом:
<?xml version ="1.0" standalone="yes"?>
<!DOCTYPE DOCUMENT [
<!ENTITY % BR "<!ELEMENT BR EMPTY>">
<!ELEMENT DOCUMENT (CUSTOMER)*>
<!ELEMENT CUSTOMER (NAME.DATE.ORDERS)>
<!ELEMENT NAME (LAST_NAME.FIRST_NAME)>
<!ELEMENT LAST_NAME (#PCDATA)>
<!ELEMENT FIRST_NAME (#PCDATA)>
<!ELEMENT DATE (#PCDATA)>
<!ELEMENT ORDERS (ITEM)*>
<!ELEMENT ITEM (PRODUCT.NUMBER.PRICE)>
<!ELEMENT PRODUCT (#PCDATA)>
<!ELEMENT NUMBER (#PCDATA)>
<!ELEMENT PRICE (#PCDATA)>
%BR;
]>
<DOCUMENT>
<CUSTOMER>
<NAME>
<LAST_NAME >Smith </LAST_NAME >
<FIRST_NAME >Sam</FIRST_NAME >
</NAME>
<DATE>October 15. 2003</DATE>
<ORDERS>
<ITEM>
<PRODUCT>Tomatoes</PRODUCT>
<NUMBER>8</NUMBER>
<PRICE>$1.25</PRICE>
</ITEM>
<ITEM>
<PRODUCT>Oranges</PRODUCT>
<NUMBER>24</NUMBER>
<PRICE>$4.98</PRICE>
</ITEM>
</ORDERS>
</CUSTOMER>
</DOCUMENT>
Воспользуйтесь командой Save (Сохранить) текстового редактора, для сохранения документа на вашем жестком диске, присвоив ему имя VnutParSush. xml
Откройте файл в вашем браузере и вас ложно получится то что представлено на рисунке 2.11
Рисунок 2.11
Теперь создайте XML-документ с внешними параметрическими сущностями, для этого прочитайте информацию ниже и выполните задания.
Если параметрическая сущность находится во внешнем подмножестве DTD, на нее можно ссылаться в определениях DTD, в том числе при объявлении элементов. Ниже рассматривается соответствующий пример. Для данного документа используется внешнее подмножество DTD, ch04_07.dtd:
<?xml version = "1.0" standalone="no"?>
<!DOCTYPE DOCUMENT SYSTEM "chO4_O7.dtd">
<DOCUMENT>
<CUSTOMER>
<NAME>
<LAST_NAME>Smith</LAST_NAME>
<FIRST_NAME>Sam</FIRST_NAME>
</NAME>
<DATE>October 15, 2003</DATE>
<ORDERS>
<ITEM>
<PRODUCT>Tomatoes</PRODUCT>
<NUMBER>8</NUMBER>
<PRICE>$1.25</PRICE>
</ITEM>
<ITEM>
<PRODUCT>Oranges</PRODUCT>
<NUMBER>24</NUMBER>
<PRICE>$4.98</PRICE>
</ITEM>
<ITEM>
<PRODUCT>Aspa ragus</PRODUCT>
<NUMBER>12</NUMBER>
<PRICE>$2.95</PRICE>
</ITEM>
<ITEM>
<PRODUCT>Lettuce</PRODUCT>
<NUMBER>6</NUMBER>
<PRICE>$11.50</PRICE>
</ITEM>
</ORDERS>
</CUSTOMER>
</DOCUMENT>
Во внешнем подмножестве DTD, ch04_07.dtd, будут выполнены структурные изменения, в результате чего элемент <DOCUMENT> сможет включать не только элементы <CUSTOMER>, но также и элементы <BUYER> и <DISCOUNTER>. Каждый из рассматриваемых новых элементов, <BUYER> и <DISCOUNTER>, снабжен моделью содержимого, идентичной модели для элемента <CUSTOMER> (то есть эти элементы включают элементы <NAME>, <DATE> и <ORDERS>). В целях небольшой экономии времени эта модель содержимого (NAME,DATE,ORDERS) будет назначена параметрической сущности record:
<!ENTITY % record "(NAME.DATE.ORDERS)">
<!ELEMENT DOCUMENT (CUSTOMER | BUYER | DISCOUNTER)^
Теперь можно обращаться к параметрической сущности record в произвольном месте. Это означает, что ее можно использовать для объявления элементов <CUSTOMER>, <BUYER> и <DISCOUNTER>:
<!ENTITY % record "(NAME.DATE.ORDERS)">
<!ELEMENT DOCUMENT (CUSTOMER | BUYER | DISCOUNTER)*>
<!ELEMENT CUSTOMER %record;>
<!ELEMENT BUYER %record:>
<!ELEMENT DISCOUNTER %record;>
<!ELEMENT NAME (LAST_NAME.FIRST_NAME)>
<!ELEMENT LAST_NAME (#PCDATA)>
<!ELEMENT FIRST_NAME (#PCDATA)>
<!ELEMENT DATE (#PCDATA)>
<!ELEMENT ORDERS (ITEM)*>
<!ELEMENT ITEM (PRODUCT.NUMBER.PRICE)>
<!ELEMENT PRODUCT (#PCDATA)>
<!ELEMENT NUMBER (#PCDATA)>
<!ELEMENT PRICE (#PCDATA)>
Теперь документ выглядит и анализируется так, как это и предполагалось: можно использовать элементы <CUSTOMER>, <BUYER> и <DISCOUNTER> внутри элемента <DOCUMENT>, причем все они имеют одну и ту же модель содержимого.
Откройте новый файл в вашем текстовом редакторе и введите текст XML-документа, листинг которого представлен ниже
Листинг 2.8
<?xml version = "1.0" standalone="no"?>
<!DOCTYPE DOCUMENT SYSTEM "ch04_07.dtd">
<DOCUMENT>
<CUSTOMER>
<NAME>
<LAST_NAME>Smith</LAST_NAME>
<FIRST_NAME>Sam</FIRST_NAME>
</NAME>
<DATE>October 15. 2003</DATE>
<ORDERS>
<ITEM>
<PRODUCT>Tomatoes</PRODUCT>
<NUMBER>8</NUMBER>
<PRICE>$1.25</PRICE>
</ITEM>
<ITEM>
<PRODUCT>Oranges</PRODUCT>
<NUMBER>24</NUMBER>
<PRICE>$4.98</PRICE>
</ITEM>
</ORDERS>
</CUSTOMER>
<BUYER>
<NAME>
<LAST_NAME>Jones</LAST_NAME>
<FIRST_NAME>Po11y</FIRST_NAME>
</NAME>
<DATE>October 20, 2003</DATE>
<ORDERS>
<ITEM>
<PRODUCT>Bread</PRODUCT>
<NUMBER>12</NUMBER>
<PRICE>$14.95</PRICE>
</ITEM>
<ITEM>
<PRODUCT>Apples</PRODUCT>
<NUMBER>6</NUMBER>
<PRICE>$1.50</PRICE>
</ITEM>
</ORDERS>
</BUYER>
<DISCOUNTER>
<NAME>
<LAST_NAME >Weber</LAST_NAME>
<FIRSTJAME>Bill</FIRSTJAME>
</NAME>
<DATE>October 25, 2003</DATE>
<ORDERS>
<ITEM>
<PRODUCT>Asparagus</PRODUCT>
<NUMBER>12</NUMBER>
<PRICE>$2.95</PRICE>
</ITEM>
<ITEM>
<PRODUCT>Lettuce</PRODUCT>
<NUMBER>6</NUMBER>
<PRICE>$11.50</PRICE>
</ITEM>
</ORDERS>
</DISCOUNTER>
</DOCUMENT>
Воспользуйтесь командой Save (Сохранить) текстового редактора, для сохранения документа на вашем жестком диске, присвоив ему имя ch04_07.xml
Откройте файл в вашем браузере и у вас должно получиться то что представлено на рисунке 2.12
Рисунок 2.12
Упражния для самостоятельной работы
Создайте два XML- документа: один с внутренними параметрическими сущностями, а другой с внешними.
Отобразите их в браузере