Лекция: В листинге 11.1 содержится пример XML-файла, представляющий инвентарную опись книжного магазина.
XML состоит из структурированных иерархических дескрипторов. Мы видим два дескриптора <book>, каждый из которых имеет собственные атрибуты — жанр (genre) и стиль (style) и различные характеристики — название (title), автор (author), цена (price). Фактические данные заключены внутри них. Все множество данных ограничено дескриптором <bookstore>, описывающим этот набор данных. Такой тип представления данных называют деревом документа (document tree) или деревом данных (data tree).
ПРИМЕР и ТАБЛИЦУ ПЕРЕПИСАЛА!
1: <bookstore>
2: <book genre=«novel» style=«hardcover»>
3: <title>The Handmaid's Tale</title>
4: <price>19.95</price>
5: <author>
6: <first-name>Margaret</first-name>
7: <last-name>Atwood</last-name>
8: </author>
9: </book>
34: </bookstore>
Bookstore
Genre | Style | THIe | AuFirstName | Au LastName | Price |
novel | hardcover | The Handmaid's Tale | Margaret | Atwood | 19.95 |
novel | paperback | The Poisonwood Bible | Barbara | Kingsolver | 11.99 |
XML версия более компактна и проста для использования и чтения, а также не требует применения сложных механизмов для ее просмотра.
Схемы XML ЭТО ЕСТЬ!!!
формат данных собственных дескрипторов определяют XML схемы. Рассмотрим схему определений для листинга 11.1.
Схема XML
!!! ПРИМЕР ПЕРЕПИСАЛА!!!
1: <?xml version=«1.0»?>
2: <Schema xmln s=«urn:schemas-microsoft-com:xml-data»
3: xmlns:dt=l<urn:schemas-microsoft-com:datatypes">
4: <ElementType name=«first-name» content=«textOnlyl1/>
5: <ElementType name=»last-name" content=«textOnly»/>
6: <ElementType name=«name» content=«textOnly»/>
7: <ElementType name=«price» content=«textOnly»
8: dt:type=«fixed.l4.4»/>
9: <ElementType name=«author» content=«eltOnly» order=«one»>
10: <group order=«seq»>
11: <element type=«name»/>
12: </group>
13: <group order=«seq»>
14: <element type=«first-name»/>
15: <element type=Hlast-name"/>
16: </group>
17: </ElementType>
18: <ElementType name=«title» content=«textOnlylf/>
19: <AttributeType name=»genre" dt:type=«string»/>
20: <AttributeType name=«style» dt:type=«enumeration»
21: dt:values=«paperback hardcover»/>
22: <ElementType name=«book» content=«eltOnly»>
23: <attribute type=«genre» required=«yes»/>
24: <attribute type=«style» required=«yes»/>
25: <element type=«title»/>
26: <element type=«authorH/>
27: <element type=»price"/>
28: </ElementType>
29: <EleroentType name=Hbookstore" content=«eltOnly»>
30: <element type=nbook"/>
31: </ElementType>
32: </Schema>
В дескрипторах <element type> определяются форматы данньк. В строках 4—7 объявляются элементы first-name, last-name, name и price, использующиеся далее в схеме. Определения этих элементов аналогичны объявлению переменных в заголовках страниц.
Атрибут content задает тип данных, допустимых для данного дескриптора. Атрибут dt: type определяет дополнительные свойства данных (например, вид формата, как в строке 8).
Строки 9—17 определяют другой элемент — author. Этот элемент содержит внутри себя другие дескрипторы, определенные ранее в строках 4—7. Строки 18-21 описывают дополнительные элементы и атрибуты, которые можно использовать в схеме.
В заключение строки 22—28 определяют элемент book, который включает в себя все ранее определенные элементы. Он должен соответствовать формату XML-файла. И в 29 строке определяется элемент bookstore, состоящий только из элемента book.