ПБД (9) - Лекция №4 - XML: различия между версиями
ILobster (обсуждение | вклад) (Новая страница: «== Модель полуструктурированных данных == Полуструктурированные данные используются дл...») |
ILobster (обсуждение | вклад) |
||
Строка 144: | Строка 144: | ||
===== Первый вариант ===== | ===== Первый вариант ===== | ||
С непосредственной вставкой: | |||
<syntaxhighlight lang="xml"> | <syntaxhighlight lang="xml"> | ||
Строка 157: | Строка 159: | ||
===== Второй вариант ===== | ===== Второй вариант ===== | ||
С включением внешнего файла: | |||
<syntaxhighlight lang="xml"> | <syntaxhighlight lang="xml"> |
Версия от 18:42, 3 октября 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-документами;
- позволяют использовать пространства имён.