Главная Обратная связь

Дисциплины:

Архитектура (936)
Биология (6393)
География (744)
История (25)
Компьютеры (1497)
Кулинария (2184)
Культура (3938)
Литература (5778)
Математика (5918)
Медицина (9278)
Механика (2776)
Образование (13883)
Политика (26404)
Правоведение (321)
Психология (56518)
Религия (1833)
Социология (23400)
Спорт (2350)
Строительство (17942)
Технология (5741)
Транспорт (14634)
Физика (1043)
Философия (440)
Финансы (17336)
Химия (4931)
Экология (6055)
Экономика (9200)
Электроника (7621)






Упражния для самостоятельной работы. 1. Создайте XML-документ c общими внутренними сущностями на тему “Магазин автомашин”



1. Создайте XML-документ c общими внутренними сущностями на тему “Магазин автомашин”

2. Отобразите документ в браузере

 

 

Лабораторная работа №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-документ с внутренними параметрическими сущностями а затем с внешними, для этого сделайте следующее:



1. Откройте новый файл в вашем текстовом редакторе и введите текст 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>

2. Теперь можно обращаться к этой параметрической сущности путем включения в 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>

3. Воспользуйтесь командой Save (Сохранить) текстового редактора, для сохранения документа на вашем жестком диске, присвоив ему имя VnutParSush. xml

4. Откройте файл в вашем браузере и вас ложно получится то что представлено на рисунке 2.11

Рисунок 2.11

5. Теперь создайте 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


Эта страница нарушает авторские права

allrefrs.ru - 2018 год. Все права принадлежат их авторам!