Добавьте примитивы в документ
- В вашем текстовом редакторе откройте документ Inventory Valid.xml, созданный вами в разделе "Преобразование корректно сформированного документа в валидный" в лекции 5.
- В начало DTD документа (блок текста, ограниченный символами [] в верхней части документа) добавьте следующие объявления примитива и нотации:
<!-- примитивы для присвоения значений элементу BINDING: --> <!ENTITY mass "mass market paperback"> <!ENTITY trade "trade paperback"> <!ENTITY hard "hardcover"> <!-- внешние примитивы, содержащие обзоры --> <!-- они будут присвоены атрибуту Review элементов BOOK --> <!NOTATION DOC SYSTEM "Microsoft Word document"> <!NOTATION TXT SYSTEM "plain text file"> <!ENTITY rev_leaves SYSTEM "Review Leaves of Grass.doc" NDATA DOC> <!ENTITY rev_faun1 SYSTEM "Review 01 of The Marble Faun.doc" NDATA DOC> <!ENTITY rev_faun2 SYSTEM "Review 02 of The Marble Faun.txt" NDATA TXT> <!ENTITY rev_screw SYSTEM "Review of The Turn of the Screw.txt" NDATA TXT>
Первые три примитива представляют собой внутренние разбираемые примитивы, которые вы можете вставлять в элементы BINDING, вместо того, чтобы вводить описание типа переплета для каждого элемента. Использование примитивов дает возможность обеспечить однозначность ваших описаний типов переплета для различных книг. Кроме того, примитивы облегчают модификацию описания. (Например, вы можете заменить "hardcover" на "hardback" для каждого элемента BINDING, в котором встречается этот тип обложки, простым редактированием примитива hard.)
Следующие (и последние) четыре примитива представляют собой общие внешние не разбираемые примитивы, которые позволяют вам подключать внешние файлы, содержащие обзоры книг для элементов BOOK.
- Добавьте атрибут Reviews в объявление списка атрибутов для элемента BOOK далее в DTD следующим образом:
<!ATTLIST BOOK InStock (yes | no) #REQUIRED Reviews ENTITIES #IMPLIED>
Reviews представляет собой не обязательный атрибут (#IMPLIED), которому вы можете присвоить имена одного или нескольких общих внешних не разбираемых примитивов. (Reviews имеет тип ENTITIES).
- В каждом элементе BINDING замените описание переплета соответствующей ссылкой на примитив. Например, вы должны изменить элемент BINDING для книги The Adventures of Huckleberry Finn с <BINDING>mass market paperback</BINDING>
на
<BINDING>&mass;</BINDING>
- Добавьте атрибуты Reviews элементам BOOK следующим образом:
- Для Leaves of Grass: <BOOK InStock="no" Reviews="rev_leaves">
- Для The Marble Faun: <BOOK InStock="yes" Reviews="rev_faun1 rev_faun2">
- Для The Turn of the Screw: <BOOK InStock="no" Reviews="rev_screw">
- Чтобы отразить новое имя файла, которое вы собираетесь присвоить, измените комментарий в начале документа с <!-- Имя файла: Inventory Valid.xml -->
на
<!-- Имя файла: Inventory Valid Entity.xml -->
- Воспользуйтесь командой Save As (Сохранить как) вашего текстового редактора, чтобы сохранить копию модифицированного документа под именем Inventory Valid Entity.xml.
Полный XML-документ представлен в Листинге 6.1.
Листинг 6.1. Inventory Valid Entity.xml (html, txt)
8. Если вы хотите проверить валидность вашего документа, воспользуйтесь сценарием проверки на валидность, приведенным в разделе "Проверка валидности XML-документа" в лекции 9.