ПБД (9) - Лекция №4 - XML

Материал из Кафедра ИУ5 МГТУ им. Н.Э.Баумана, студенческое сообщество
Версия от 08:15, 21 ноября 2012; Bit (обсуждение | вклад) (Bit переименовал(-а) страницу ПБД (9) - Лекция №4 - Модели данных (продолжение) в ПБД (9) - Лекция №4 - XML без оставления перенаправления)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
Перейти к навигации Перейти к поиску

Модель полуструктурированных данных

Полуструктурированные данные используются для:

  • информация о документе (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-документами;
  • позволяют использовать пространства имён.