Основы XML

       

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


Как любое значение атрибута, значение, которое вы присваиваете нумерованному типу, должно представлять собой строку в кавычках, отвечающую правилам, описанным в разделе "Правила для корректного задания значений атрибутов" в лекции 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 – при этом вы можете свободно использовать символ левой угловой скобки (<) внутри символьных данных элемента.)


Содержание раздела