все ясно: они содержат простые символьные данные. Атрибут
image
несколько сложнее, он предоставляет гораздо больше информации. Типом этого атрибута является
ENTITY
, значит текст, который он содержит, является не просто символьными данными: он задает имя сущности, связанной с данным атрибутом. Иначе говоря, с атрибутом
image
связывается сущность.
Анализируя определение сущности
products
, обрабатывающая программа может понять, что это — неразбираемая внешняя сущность формата
jpg
, которая хранится в файле
prod.jpg
и для обработки которой можно использовать приложение
jpg-viewer.exe
.
Вторым способом использования нотаций является присвоение определенного формата содержимому элемента. Один (но не более чем один) из атрибутов элемента может иметь тип
NOTATION
. Значением этого атрибута должно быть имя нотации, которое и будет задавать формат содержимого элемента.
Пример
Листинг 1.6. Использование нотаций для определения формата содержимого элемента
<!DOCTYPE root [
<!ELEMENT root (#PCDATA)>
<!ATTLIST root
type NOTATION (rtf|htm|txt) #REQUIRED>
<[NOTATION rtf SYSTEM "winword.exe">
<!NOTATION htm SYSTEM "iexplore.exe">
<!NOTATION txt SYSTEM "notepad.exe">
]>
<root type="htm">
<![CDATA[
<html>
<head>
...
</head>
<body>
...
</body>
</html>]]>
</root>
В этом документе определяется три нотации, три формата данных:
rtf
,
htm
и
txt
. Атрибут
type
элемента
root
указывает формат данных, которые содержатся в этом элементе — в данном случае это
"htm"
(что, очевидно, соответствует HTML-документу).
Несмотря на то, что нотации являются довольно мощным механизмом, ввиду очевидной сложности, широкого распространения их использование не получило. Почти того же самого эффекта можно добиться более простыми способами, например, используя в элементах дополнительные атрибуты.
Символьные данные в XML-документах
Каковы бы ни были структура и синтаксис текстового документа, основой его всегда являются символы. Для хранения и обработки текста на компьютерах, которые по своей природе являются цифровыми устройствами, каждому символу нужно поставить в соответствие числовой код.
Проблема многих языков заключается в том, что для них существует несколько альтернативных кодировок символов. Например, для кириллицы существуют такие кодировки, как CP-866, KOI8-R, CP-1251, ISO-8859-5, кодовая страница Macintosh и другие, но вместе с тем не существует единого стандарта, принятого де-факто. В итоге, для того, чтобы быть уверенным, что документ будет прочтен, его нужно представлять в трех или четырех кодировках, что очень неудобно.
Для того чтобы решить эти и некоторые другие проблемы, был создан стандарт Unicode. Unicode присваивает уникальный код любому символу, независимо от платформы, независимо от программы, независимо от языка. Символам кириллицы Unicode присваивает коды в диапазоне от
#x400
до
#x4ff
. Таблица кодов для кириллицы может быть найдена в формате PDF на Web-сайте Unicode: