- •Основной критерий для валидного документа
- •Требования корректности формирования и валидности
- •Преимущества использования валидных xml-документов
- •Добавление dtd
- •Форма записи dtd
- •Создание dtd
- •Объявление типов элементов
- •Форма записи объявления типа элемента
- •Описание содержимого элемента
- •Задание содержимого элемента
- •Символ Значение
- •Задание смешанного содержимого
- •Объявление атрибутов
- •Форма записи объявления списка атрибутов
- •Тип атрибута
- •Задание маркерного типа
- •Задание нумерованных типов
- •Объявление значения по умолчанию
- •Использование внешних подмножеств dtd
- •Использование только внешнего подмножества dtd
- •Использование и внешних, и внутренних подмножеств dtd
- •Условия игнорирование разделов внешнего подмножества dtd
- •Преобразование корректно сформированного документа в валидный
- •Сделаем документ валидным
Преобразование корректно сформированного документа в валидный
В этом разделе вы попытаетесь на практике применить полученные при изучении этой лекции знания, преобразовав корректно сформированный документ в валидный. Вы модифицируете документ Inventory.xml, созданный вами в лекции 2, чтобы сделать его валидным. Вы также добавите новый элемент и два атрибута, чтобы освоить описанные в этой лекции приемы.
Сделаем документ валидным
В вашем текстовом редакторе откройте документ Inventory.xml, созданный вами в лекции 2.
Непосредственно перед элементом Документ – с именем INVENTORY – введите следующее объявление типа документа:
<![INCLUDE[
<!-- необязательный блок объявлений разметки,
который временно восстановлен -->
<!ATTLIST BOOK Category CDATA "fiction">
<!ELEMENT TITLE (#PCDATA)>
<!ELEMENT AUTHOR (#PCDATA)
]]>
Совет. При выполнении модификации в ходе данного упражнения вы можете ориентироваться на полностью модифицированный документ, который приведен в Листинге 5.1 в конце этой лекции.
Обратите внимание, что имя следующего за DOCTYPE ключевого слова совпадает с именем элемента Документ, INVENTORY. DTD состоит только из внутреннего подмножества, которое определяет элементы и атрибуты документа следующим образом:
элемент Документ, INVENTORY, имеет содержимое. Он может включать ни одного или несколько дочерних элементов BOOK;
элемент BOOK также имеет содержимое. Оно должно включать строго по одному из следующих элементов, в порядке, перечисленном в объявлении документа: TITLE, AUTHOR, BINDING, PAGES и PRICE;
элемент TITLE имеет смешанное содержимое. Он может включать символьные данные вместе с ни одним или с несколькими элементами SUBTITLE;
элементы AUTHOR, BINDING, PAGES и PRICE также имеют смешанное содержимое. Эти элементы, однако, могут включать только символьные данные без дочерних элементов;
элемент BOOK имеет атрибут нумерованного типа с именем InStock, который является обязательным атрибутом и может принимать значения либо "yes", либо "no";
элемент AUTHOR имеет атрибут строкового типа с именем Born, который является не обязательным и не имеет значения по умолчанию.
Добавьте следующий дочерний элемент SUBTITLE в элемент TITLE для книги Моби-Дик:
<BOOK>
<TITLE>Moby-Dick
<SUBTITLE>Or, the Whale</SUBTITLE>
</TITLE>
Добавьте обязательный атрибут InStock каждому элементу BOOK, присвоив ему значения "yes" или "no", как показано ниже:
<BOOK InStock="yes">
<TITLE>The Adventures of Huckleberry Finn</TITLE>
<AUTHOR>Mark Twain</AUTHOR>
<BINDING>mass market paperback</BINDING>
<PAGES>298</PAGES>
<PRICE>$5.49</PRICE>
</BOOK>
Добавьте не обязательный элемент Born к одному или нескольким элементам. Хотя вы можете присвоить этому атрибуту любую синтаксически правильную строку в кавычках, в данном случае он должен хранить дату рождения автора. Пример:
<AUTHOR Born="1835">Mark Twain</AUTHOR>
Чтобы отразить новое имя файла, которое вы собираетесь присвоить, измените комментарий в начале документа с:
<!-- Имя файла: Inventory.xml -->
на
<!-- Имя файла: Inventory Valid.xml -->
Воспользуйтесь командой Save As (Сохранить как) вашего текстового редактора, чтобы сохранить копию модифицированного документа под именем Inventory Valid.xml.
Законченный документ представлен в Листинге 5.1.
<?xml version="1.0"?>
<!-- File Name: Inventory Valid.xml -->
<!DOCTYPE INVENTORY
[
<!ELEMENT INVENTORY (BOOK)*>
<!ELEMENT BOOK (TITLE, AUTHOR, BINDING, PAGES, PRICE)>
<!ATTLIST BOOK InStock (yes|no) #REQUIRED>
<!ELEMENT TITLE (#PCDATA | SUBTITLE)*>
<!ELEMENT SUBTITLE (#PCDATA)>
<!ELEMENT AUTHOR (#PCDATA)>
<!ATTLIST AUTHOR Born CDATA #IMPLIED>
<!ELEMENT BINDING (#PCDATA)>
<!ELEMENT PAGES (#PCDATA)>
<!ELEMENT PRICE (#PCDATA)>
]
>
<INVENTORY>
<BOOK InStock="yes">
<TITLE>The Adventures of Huckleberry Finn</TITLE>
<AUTHOR Born="1835">Mark Twain</AUTHOR>
<BINDING>mass market paperback</BINDING>
<PAGES>298</PAGES>
<PRICE>$5.49</PRICE>
</BOOK>
<BOOK InStock="no">
<TITLE>Leaves of Grass</TITLE>
<AUTHOR Born="1819">Walt Whitman</AUTHOR>
<BINDING>hardcover</BINDING>
<PAGES>462</PAGES>
<PRICE>$7.75</PRICE>
</BOOK>
<BOOK InStock="yes">
<TITLE>The Legend of Sleepy Hollow</TITLE>
<AUTHOR>Washington Irving</AUTHOR>
<BINDING>mass market paperback</BINDING>
<PAGES>98</PAGES>
<PRICE>$2.95</PRICE>
</BOOK>
<BOOK InStock="yes">
<TITLE>The Marble Faun</TITLE>
<AUTHOR Born="1804">Nathaniel Hawthorne</AUTHOR>
<BINDING>trade paperback</BINDING>
<PAGES>473</PAGES>
<PRICE>$10.95</PRICE>
</BOOK>
<BOOK InStock="no">
<TITLE>Moby-Dick
<SUBTITLE>Or, the Whale</SUBTITLE>
</TITLE>
<AUTHOR Born="1819">Herman Melville</AUTHOR>
<BINDING>hardcover</BINDING>
<PAGES>724</PAGES>
<PRICE>$9.95</PRICE>
</BOOK>
<BOOK InStock="yes">
<TITLE>The Portrait of a Lady</TITLE>
<AUTHOR>Henry James</AUTHOR>
<BINDING>mass market paperback</BINDING>
<PAGES>256</PAGES>
<PRICE>$4.95</PRICE>
</BOOK>
<BOOK InStock="yes">
<TITLE>The Scarlet Letter</TITLE>
<AUTHOR>Nathaniel Hawthorne</AUTHOR>
<BINDING>trade paperback</BINDING>
<PAGES>253</PAGES>
<PRICE>$4.25</PRICE>
</BOOK>
<BOOK InStock="no">
<TITLE>The Turn of the Screw</TITLE>
<AUTHOR>Henry James</AUTHOR>
<BINDING>trade paperback</BINDING>
<PAGES>384</PAGES>
<PRICE>$3.35</PRICE>
</BOOK>
</INVENTORY>
Листинг 5.1. Parts.xml
Если вы хотите проверить валидность вашего документа, воспользуйтесь сценарием проверки XML-документа на валидность, приведенным в разделе "Проверка валидности XML-документа" в лекции 9.
|
© 2003-2007 INTUIT.ru. Все права защищены. |