Перечисляемые атрибуты со значением по умолчанию 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Перечисляемые атрибуты со значением по умолчанию



Иногда бывает удобно объявить для атрибута значение по умолчанию. Скорее всего, вам уже приходилось делать это раньше при построении форм с раскрывающимися списками. Например, если большинство рецептов в вашей поваренной книге относится к итальянской кухне, атрибут recipe будет часто относиться к категории Italian. В этом случае категорию Italian можно назначить по умолчанию:

<! ATTLIST recipe category (Italian | French | Japanese | Chinese) " Itaian ">

Если атрибут category не задан явно, по умолчанию ему присваивается значение Italian.

Типы атрибутов

Атрибут элемента может объявляться с определенным типом, перечисленными в табл. 3.

 

Таблица 3. Типы атрибутов

Тип атрибута Описание
CDATA (Character set of data) значением атрибута могут быть любые символьные данные
ID значением атрибута должен быть уникальный идентификатор элемента
IDREF значением элемента является ссылка на элемент по его ID
IDREFS тоже что и IDREF, но с возможностью ссылок не по одному идентификатору, а по нескольким
NMTOKEN значением атрибута может быть последовательность символов, в чём-то схожая с именем (отсюда и названием — name token). Это строка, которая содержит любую комбинацию тех символов, которые разрешено использовать для имен XML
NMTOKENS значением атрибута является список значений
ENTITY значение используется для ссылки на внешнюю сущность
ENTITIES позволяет задать список внешних сущностей, разделённых пробелами
NOTATION значением атрибута может быть одна из ранее определённых нотаций
NOTATIONS позволяет задать список нотаций
ENUMERATION задаёт список возможных альтернатив значений

 

Типы атрибутов описаны далее.

Атрибуты CDATA

Очень часто атрибуты содержат общие символьные данные. Такие атрибуты называются атрибутами CDATA. Следующий пример уже встречался в начале этого раздела:

<! ATTLIST recipe category CDATA # REQUIRED >

Атрибуты ID, IDREF и IDREFS

Идея однозначного представления данных (например, информации о пользователе или товаре, хранящейся в базе данных) посредством идентификаторов неоднократно встречалась в предыдущих главах книги. Идентификаторы также часто используются в XML, поскольку перекрестные ссылки между документами применяются не только в общих задачах обработки данных, но и в World Wide Web (гиперссылки).

Идентификаторы элементов присваиваются атрибуту ID. Допустим, вы хотите связать с каждым рецептом уникальный идентификатор. Соответствующий фрагмент DTD может выглядеть так:

<!ELEMENT recipe (title, description, ingredients, process)>

<!ATTLIST recipe recipe-id ID #REQUIRED>

<!ELEMENT recipe-ref EMPTY>

<!ATTLIST recipe-ref go IDREF #REQUIRED>

После этого объявление элемента recipe в документе может выглядеть так:

<recipe recipe-id="ital003">

<title>Spaghetti alla Carbonara</title>

Рецепт однозначно определяется идентификатором ital003. Следует помнить, что атрибут redpe-id относится к типу ID, поэтому ital003 не может использоваться в качестве значения атрибута recipe-id другого элемента, в противном случае документ будет считаться синтаксически неверным. Теперь допустим, что позднее вы захотели сослаться на этот рецепт из другого документа -- скажем, из списка любимых рецептов пользователя. Именно здесь в игру вступают перекрестные ссылки и атрибут IDREF. Атрибуту IDREF присваивается идентификатор, используемый для ссылок на элемент, -- по аналогии с тем, как URL используется для идентификации страницы в гиперссылке. Рассмотрим следующий фрагмент кода XML:

<favoriteRecipes>

<recipe-ref go="ital003">

</favoriteRecipes>

В процессе обработки документа XML элемент заменяется более наглядной ссылкой на рецепт с указанным идентификатором (например, названием рецепта). Вероятно, он будет отформатирован в виде гиперссылки, чтобы упростить переход к указанному рецепту.

Атрибуты ENTITY и ENTITIES

Данные в документах XML не всегда являются текстовыми -- документ может содержать и двоичную информацию (например, графику). На такие данные можно ссылаться при помощи атрибута entity. Например, в описании элемента description можно указать атрибут recipePicture с графическим изображением:

<!ATTLIST description recipePicture ENTITY #IMPLIED>

Также можно объявить сразу несколько сущностей, заменив ENTITY на ENTITIES. Значения разделяются пробелами.

Атрибуты NMTOKEN и NMTOKENS

Атрибуты NMTOKEN представляют собой строки из символов, входящих в ограниченный набор. Объявление атрибута с типом NMTOKEN предполагает, что значение атрибута соответствует установленным ограничениям. Как правило, значение атрибута NMTOKEN состоит из одного слова:

<! ATTLIST recipe category NMTOKEN # REQUIRED >

Можно объявить сразу несколько атрибутов, заменив NMTOKEN на NMTOKENS. Значения разделяются пробелами.

Объявления сущностей

Объявление сущности напоминает команду define в некоторых языках программирования, включая PHP. Ссылки на сущности кратко упоминались в предыдущем разделе «Знакомство с синтаксисом XML». На всякий случай напомню, что ссылка на сущность используется в качестве замены для другого фрагмента содержания. В процессе обработки документа XML все вхождения сущности заменяются содержанием, которое она представляет. Существует два вида сущностей: внутренние и внешние.

Внутренние сущности

Внутренние сущности напоминают строковые переменные, связывающие имя с фрагментом текста. Например, если вы хотите определить имя для ссылки на информацию об авторских правах, можно объявить сущность следующего вида:

<!ENTITY Copyright "Copyright 2000 YourCompanyName. All Rights Reserved.">

В процессе обработки документа все экземпляры &Соруright заменяются текстом «Copyright 2000 YourCompanyName. All Rights Reserved». Весь код XML в заменяющем тексте обрабатывается так, словно он присутствовал в исходном документе.

Внутренние сущности удобны в ситуациях, когда вы планируете использовать сущность в относительно небольшом количестве документов XML. При большом количестве документов лучше воспользоваться внешними сущностями.

Внешние сущности

Внешние сущности используются для ссылок на содержание, находящееся в другом файле. Сущности этого типа могут содержать текстовую информацию, но также могут ссылаться и на двоичные данные (например, графику). Возвращаясь к предыдущему примеру, допустим, что вы решили сохранить информацию об авторских правах в отдельном файле, чтобы упростить ее редактирование в будущем. Ссылка на созданный файл выглядит следующим образом:

<! ENTITY Copyright SYSTEM " http:// yoursite. com / administer / copyright. xml ">

При последующей обработке документа XML все ссылки &Соруright заменяются содержимым документа copyright.xml. Весь код XML в заменяющем тексте обрабатывается так, словно он присутствовал в исходном документе.

Внешние сущности также удобно использовать для ссылок на графические изображения. Например, если вы хотите включить в документ XML графический логотип, создайте внешнюю сущность:

<!ENTITY food_picture SYSTEM http://yoursite.com/food/logo.gif>

Как и в предыдущем примере, все ссылки &food_picture заменяются графическим изображением, на которое указывает ссылка. Поскольку данные являются двоичными, а не текстовыми, они не интерпретируются.

Задание на лабораторную работу:

1. Изучить требования для создания корректного документа

2. Выучить виды XML–документов

3. Выучить назначение и структуру DTD

4. Изучить область применения DTD

5. Научиться использовать DTD

6. Изучить виды сущностей DTD и научиться применять их

 

Ст руктура отчёта:

1. Титульный

2. Содержание

3. Описание целей и задача

4. Описание системы

5. Структура нормализованной БД (IDEF1x)

6. XML и DTD файлы

 

Пример лабораторной работы №1:

Тема: В качестве примера в данном методическом указании будет рассмотрена КИС для Фитнес центра.

XML файл:

Описание: Создаем три таблицы: client(клиенты), employee(сотрудники) и contract(контракт) (см. рисунок 1) и описываем их с помощью XML.

 

Рис. 1. Структура БД

 

<?xml version="1.0" encoding="utf-8"?>

<!DOCTYPE fitness SYSTEM "fit.dtd">

<list1>

<client>

<name>Ivan Vasil'evich Gagarin</name>

<birth>25.01.1980</birth>

<IDcard>011777</IDcard>

<telephone>8913123213</telephone>

 </client>

<client>

<name>Pavel Sergeevich Kvasha</name>

<birth>13.08.1991</birth>

<IDcard>011888</IDcard>

<telephone>8913523814</telephone>

 </client>

</list1>

<list2>

 <employee>

<name>Gennadiy Vital'evich Kotov</name>

<position>administrator</position>

<telephone>89321312616</telephone>

<email>devilcat666@mail.ru</email>

 </employee>

 <employee>

<name>Alisa Dmitreevna Orehova</name>

<position>administrator</position>

<telephone>89609257643</telephone>

<email>orehova7643@mail.ru</email>

</employee>

 </list2>

 <list3>

<contract>

<IDcard>011777</IDcard>

<contract_date>01.09.2012</contract_date>

<term>30 days</term>

</contract>

<contract>

<IDcard>011888</IDcard>

<contract_date>24.11.2012</contract_date>

<term>90 days</term>

</contract>

</list3>

</ fitness >

DTD файл:

Описание: посредством набора объявлений описываем схему документа для XML, его класс с точки зрения синтаксических ограничений и объявляем конструкцию.
<?xml version="1.0"?>

<!DOCTYPE fitness [

<!ELEMENT fitness(list1, list2, list3)>

<!ELEMENT list1(client+)>

<!ELEMENT client(name, birth, IDcard, telephone)

<!ELEMENT name(#PCDATA)>

<!ELEMENT birth (#PCDATA)>

<!ELEMENT IDcard(#PCDATA)>

<!ELEMENT telephone(#PCDATA)>

<!ATTLIST client id_cl ID #REQUIRED>

<!ELEMENT list2(employee+)>

<!ELEMENT employee(name, place,telephone, email)>

<!ELEMENT name (#PCDATA)>

<!ELEMENT position(#PCDATA)>

<!ELEMENT telephone (#PCDATA)>

<!ELEMENT email (#PCDATA)>

<!ATTLIST employee id-emp ID #REQUIRED>

<!ELEMENT list3(contract+)>

<!ELEMENT contract(IDcard, contract_date, term)>

<!ELEMENT IDcard(#PCDATA)>

<!ELEMENT contract_date(#PCDATA)>

<!ELEMENT term(#PCDATA)>

<!ATTLIST contract id-contr ID #REQUIRED>

]>

Л абораторная № 2

 

Т ема: «Изучение XML схем»

Задание: Описать структуру реляционной БД, состоящую не менее чем из 3 таблиц, с помощью XML Schema. И создать XML–файл с заполненной БД.

Цель: Изучить основы формата XML Schema

Теоретические основы:

Введение в XML Schema

XML Schema – это основанная на XML альтернатива DTD. Она предназначена для описания структуры XML документа.

XML Schema предназначена, подобно DTD, для определения строительных блоков XML документа. Она определяет:

· представленные в документе элементы;

· атрибуты, которые могут встречаться в документе;

· какие элементы являются дочерними;

· последовательность, в которой дочерние элементы представляются;

· количество дочерних элементов;

· являются ли документы пустыми или могут включать текст;

· типы данных для элементов и атрибутов;

· значение по умолчанию для элементов и атрибутов.



Поделиться:


Последнее изменение этой страницы: 2021-01-14; просмотров: 50; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.19.31.73 (0.042 с.)