ПБД (9) - Лекция №4 - XML: различия между версиями
ILobster (обсуждение | вклад) |
Bit (обсуждение | вклад) м (Bit переименовал(-а) страницу ПБД (9) - Лекция №4 - Модели данных (продолжение) в ПБД (9) - Лекция №4 - XML без оставления перенаправления) |
(нет различий)
|
Текущая версия от 08:15, 21 ноября 2012
Модель полуструктурированных данных
Полуструктурированные данные используются для:
- информация о документе (XML);
- интеграция информации:
- нет фиксированной схемы;
- данные хранят информацию о своей структуре;
- структура изменчива, меняется со временем или по необходимости.
Полуструктурированный граф:
- корень - вся БД;
- конечные вершины - хранимые атомарные атрибуты;
- промежуточные вершины - объекты (структура данных);
- дуги - смысл, назначение, связь данных.
Граф по нашему примеру можно построить такой:
Для упрощения показаны лишь некоторые сущности, атрибуты и связи.
XML
XML (Extensible Markup Language) - расширяемый язык данных, используется для линейной записи полуструктурированных данных. И ещё для разметки текста. Чтобы не рисовать тот граф, можно описать всё в XML.
XML бывает двух видов:
- формально-правильный (well-formed);
- действительный (valid).
Оба чувствительны к регистру.
Формально-правильный XML
Например:
<?xml version="1.0" encoding="UTF8" standalone="yes"?>
<sometag></sometag> <!-- парный тег -->
<sometag /> <!-- тоже парный, но не требует закрытия>
Требования к XML:
- только один корневой элемент;
- строгая иерархия вложенности;
- все теги (которые парные) должны быть закрыты.
Наш пример:
<?xml version="1.0" encoding="UTF8" standalone="yes"?>
<db>
<film idf="f1" toact="a1" tos="s1">
<name>Bridge to Terabithia</name>
<year>2007</year>
<len>96</len>
<type>must see</type>
</film>
<film idf="f2" toact="a2">
<name>The Matrix</name>
<year>1999</year>
<len>136</len>
<type>bloody have to see dat</type>
</film>
<actor ida="a1" tof="f1">
<fio>
<family>Robb</family>
<fname>Anna</fname>
<secname>Sophia</secname>
</fio>
</actor>
<actor ida="a2" tof="f2">
<fio>
<family>Reeves</family>
<fname>Keanu</fname>
<secname>Charles</secname>
</fio>
</actor>
<studio ids="s1" tof="f1">
<name>Walden Media</name>
</studio>
</db>
Действительный XML
DTD (Document Type Definition) - определение типов документов. Содержит определённый набор допустимых тегов, атрибутов, правил вложения.
<!ELEMENT название содержимое>
Элементы:
- $$+$$ - должен быть хотя бы один или больше;
- $$*$$ - может быть ни одного или сколько угодно;
- $$?$$ - строго один или ни одного.
А если ничего нет, то строго один.
Наш пример:
<!ELEMENT db (film*, actor*, stud+)>
<!ELEMENT film (name, year, len?, type?)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT year (#PCDATA)>
<!ELEMENT len (#PCDATA)>
<!ELEMENT type (#PCDATA)>
Атрибуты:
<!ATLIST элемент
атрибут1 тип параметры
атрибут2 тип параметры
атрибут3 тип параметры
>
Типы атрибутов:
- CDATA - текст;
- ID - идентификатор;
- IDREF - ссылка;
- IDREFS - ссылки (через пробел);
- NMTOKEN - лексема;
- NMTOKENS - лексемы.
Параметры:
- #REQUIRED - обязательный;
- #IMPLIED - необязательной;
- #FIXED - фиксированный.
Пример:
<!ATTLIST film idf ID #REQUIRED toact IDREFS tos IDREF>
<!ATTLIST actor ida ID tof IDREFS>
<!ATTLIST studio ias ID tof IDREFS>
Также можно указать значение по умолчанию и перечень допустимых значений:
<!ATTLIST p align (left|center|right) "left">
Сочетание обоих видов
Они могут сочетаться.
Первый вариант
С непосредственной вставкой:
<?xml version="1.0" encoding="UTF8" standalone="yes"?>
<!DOCTYPE db [
<!ELEMENT ...>
<!ATTLIST ...>
]>
<db>
...
</db>
Второй вариант
С включением внешнего файла:
<?xml version="1.0" encoding="UTF8" standalone="no"?>
<!DOCTYPE db SYSTEM "file.dtd">
<db>
</db>
И сам этот file.dtd:
<!ELEMENT ...>
<!ATTLIST ...>
XSD
XSD (XML Schema Definition) - это схемы XML.
Их свойства:
- добавлена работа с нормальными типами данных (int, bool, string и остальные);
- позволяют накладывать ограничения (год не может быть меньше 1500);
- сами являются XML-документами;
- позволяют использовать пространства имён.