» Xml для новичков
» Главная страница
»
К оглавлению
Определение компонентов(макроопределений)
Компонент (entity) представляет собой определения, содержимое
которых может быть повтор.но использовано в документе . В других языках
программирования подобные элементы называются макроопределениями. Создаются DTD-
компоненты при помощи инструкции !ENTITY: <!ENTITY hello ' Мы рады приветствовать Вас!' >
Программа-анализатор, просматривая в первую очередь содержимое
области DTD- определений, обработает эту инструкцию и при дальнейшем разборе
документа будет использовать содержимое DTD- компонента в том месте, где будет
встречаться его название. Т.е. теперь в документе мы можем использовать
выражение &hello; , которое будет заменено на строчку "Мы рады
приветствовать Вас"
В общем случае, внутри DTD можно задать три типа
макроопределений:
Внутренние макроопределения - предназначены для
определения строковой константы, с их помощью можно организовывать ссылки на
часто изменяемую информацию, делая документ более читабельным. Внутренние
компоненты включаются в документ при помощи амперсанта &
В XML существует пять предустановленных внутренних символьных
констант:
- < - символ "<"
- > - символ ">"
- & - символ "&"
- ' - символ апострофа "'"
- " - символ двойной кавычки """
Внешние макроопределения - указывают на содержимое
внешнего файла, причем этим содержимым могут быть как текстовые, так и двоичные
данные. В первом случае в месте использования макроса будут вставлены текстовые
строки, во втором - бинарные данные, которые анализатором не рассматриваются и
используются внешними программами <!ENTITY logotype SYSTEM "/image.gif" NDATA GIF87A>
Макроопределения правил - макроопределения параметров
могут использоваться только внутри области DTD и обозначаются специальным
символом %, вставляемым перед названием макроса. При этом содержимое компонента
будет помещено непосредственно в текст DTD- правила
Например, для следующего фрагмента документа: <!ELEMENT name (PCDATA)>
<!ELEMENT title (PCDATA | name)*>
<!ELEMENT author (PCDATA | name)*>
<!ELEMENT article (title, author)*>
<!ELEMENT book (title, author)*>
<!ELEMENT bookstore (book | article)*>
<!ELEMENT bookshelf (book | article)*>
можно использовать более короткую форму записи: <!ELEMENT name (PCDATA)>
<! ENTITY %names 'PCDATA | name'>
<!ELEMENT article (%names;)*>
<!ELEMENT book (%names;)*>
<!ENTITY %content 'book | article'>
<!ELEMENT bookstore (%content;)*>
<!ELEMENT bookshelf (%content;)*>
Макроопределения часто используются для описания параметров в
правилах атрибутов. В этом случае появляется возможность использовать одинаковые
определения атрибутов для различных элементов: <!ENTITY %itemattr 'id ID #IMPLIED src CDATA'>
<!ENTITY %bookattr "ISDN ID #IMPLIED type CDATA'>
<!ENTITY %artattr " size CDATA'>
<!ELEMENT book (title, author,content)*>
<!ATTLIST book %itemattr %bookattr;>
<!ELEMENT article (title, author, content)*>
<!ATTLIST article %itemattr %artattr;>
|