Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
k5.doc
Скачиваний:
3
Добавлен:
13.11.2019
Размер:
287.23 Кб
Скачать

Задание нумерованных типов

Как любое значение атрибута, значение, которое вы присваиваете нумерованному типу, должно представлять собой строку в кавычках, отвечающую правилам, описанным в разделе "Правила для корректного задания значений атрибутов" в лекции 3. Помимо этого, значение должно совпадать с одним из имен, приведенных в списке типов атрибутов. Эти имена могут иметь одну из следующих двух форм записи.

  • Открывающая скобка, вслед за которой идет список элементарных имен, разделенных символами | , после чего следует закрывающая скобка. Напомним, что элементарное имя – это имя, состоящее из одной или нескольких букв, цифр, точек (.), тире (–) или символов подчеркивания (_), а также может включать одно двоеточие (:), но не на первом месте. Например, если вы хотите ограничить значения атрибута Class словами "fictional", "instructional" или "documentary", то можете определить это атрибут как нумерованный тип следующим образом:

  • <!ATTLIST FILM

  • Class (fictional | instructional | documentary)

  • "fictional"

Вот законченный XML-документ, демонстрирующий использование атрибута Class:

<?xml version="1.0"?>

<!DOCTYPE FILM

[

<!ELEMENT FILM (TITLE, (STAR | NARRATOR | INSTRUCTOR) )>

<!ATTLIST FILM

Class (fictional | instructional | documentary) "fictional">

<!ELEMENT TITLE (#PCDATA)

<!ELEMENT STAR (#PCDATA)

<!ELEMENT NARRATOR (#PCDATA)

<!ELEMENT INSTRUCTOR (#PCDATA)

]

>

<FILM Class="instructional">

<TITLE>The Use and Care of XML</TITLE>

<NARRATOR>Michael Young</NARRATOR>

</FILM>

Если вы опустили атрибут Class, ему будет по умолчанию присвоено значение "fictional". Присвоение атрибуту Class значения, отличного от "fictional", "instructional" или "documentary" приведет к ошибке.

  • Ключевое слово NOTATION, за которым идет пробел, затем открывающая скобка, затем список имен нотаций, разделяемых символами | , после чего следует закрывающая скобка. Каждое из этих имен должно точно соответствовать имени нотации, объявленному в DTD. Нотация описывает формат данных или идентифицирует программу, применяемую для обработки определенного формата (подробнее о нотациях будет рассказано в лекции 6).

Например, в вашем DTD объявлены нотации HTML, SGML и RTF. Тогда вы можете ограничить значения атрибута Format одним из этих имен нотаций с помощью следующего объявления:

<!ELEMENT EXAMPLE_DOCUMENT (#PCDATA)>

<!ATTLIST EXAMPLE_DOCUMENT

Format NOTATION (HTML | SGML | RTF) #REQUIRED>

В дальнейшем вы можете использовать элемент Format для указания формата определенного элемента EXAMPLE_DOCUMENT, как в следующем примере:

<EXAMPLE_DOCUMENT Format="HTML">

<![CDATA[

<HTML>

<HEAD>

<TITLE>Mike’s Home Page</TITLE>

</HEAD>

<BODY>

<P>Welcome!</P>

</BODY>

</HTML>

]]>

</EXAMPLE_DOCUMENT>

Присвоение атрибуту Format значения, отличного от "HTML", "SGML" или "RTF", приведет к ошибке. (Обратите внимание на использование здесь раздела CDATA – при этом вы можете свободно использовать символ левой угловой скобки (<) внутри символьных данных элемента.)

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]