69054

Объявление типа документа

Лекция

Информатика, кибернетика и программирование

Определение типа документа DTD (Document Type Definition) является той основой, на которой создаются документы XML. DTD представляет собой набор правил, определяющий инструкции, которые могут быть переданы анализатору (parser) для обработки им этого документа.

Русский

2014-09-29

134 KB

3 чел.

 12

Лекция 4-02

4.1.5. Объявление типа документа 

4.1.6. Определение элемента4.1.7. Определение атрибутов элемента

 4.1.7.1. Строковые атрибуты

 4.1.7.2. Маркированные атрибуты

 4.1.7.3. Атрибуты перечислимого типа

 4.1.7.4. Обработка пробелов и определение языка содержимого элемента

4.1.8. Определение сущности

 4.1.8.1. Анализируемые сущности

 4.1.8.2. Неанализируемые сущности

 4.1.8.3. Параметрические сущности

4.1.9. Определение нотации 

4.1.10. Условные разделы

4.1.5. Объявление типа документа

Определение типа документа DTD (Document Type Definition) является той основой, на которой создаются документы XML.

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

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

  •  element – определение элемента;
  •  attlist – определение списка атрибутов элемента;
  •  entity – определение сущности;
  •  notation – определение нотации.

Объявление типа документа помещается в начало XML-документа (сразу после объявления документа XML) и имеет следующий  синтаксис:

<!DOCTYPE 

>

Объявление типа документа может быть внутренним, внешним и смешанным.

Во внутреннем DTD правила для элементов задаются следующим образом:

<!DOCTYPE имя [ 

правила структуры документа

]>

При использовании внешнего DTD предложение DOCTYPE имеет один из следующих форматов:

<!DOCTYPE имя SYSTEM "URI">

<!DOCTYPE имя PUBLIC "владелец" "URI">

Можно также дополнять внешние определения внутренними, например:

<!DOCTYPE имя PUBLIC "владелец" "URI" [ 

правила структуры документа

]>

Здесь параметр имя  определяет имя корневого элемента документа XML. Значение SYSTEM в DTD означает, что пользователь использует собственное (системное) внешнее DTD, которое загружается с помощью  URI (Universal Resource Identifier – универсальный идентификатор ресурса). Внешнее DTD – это текстовый файл с расширением .dtd, который содержит правила структуры документа XML.

Примеры системного DTD:

<!DOCTYPE JDATA SYSTEM "javadata.dtd">

<!DOCTYPE book SYSTEM "http://www.site.com/dtds/book.dtd">

Параметр PUBLIC означает, что в документе используется общедоступное DTD (например, DTD для языка HTML). В этом случае, помимо URI, указывается и объявление владельца DTD в формате, принятом в языке SGML. Если DTD является стандартом ISO (International Standard Organization – Международная организация стандартизации), то объявление начинается символами "ISO". Если DTD не является стандартом ISO, но официально принято группой стандартизации, то объявление начинается с символа "+", если же DTD не принято группой стандартизации – то с символа "-". Далее обычно указывается владелец данного DTD, наименование DTD и язык DTD, разделенные символами  "//".

Пример общедоступного DTD для спецификации XHTML 1.1:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"

"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> 

Документы XML, имеющие внутреннее или внешнее DTD и соответствующие требованиям этого DTD, а также являющиеся правильными документами XML, называются действительными (valid)  документами XML. 

4.1.6. Определение элемента

Определение элемента задает имя и тип содержимого элемента в следующем виде:

<!ELEMENT имя тип-содержимого>

Параметр имя задает имя элемента.  В качестве типа-содержимого элемента может быть указано:

  •  EMPTY, в случае, когда элемент обязан быть пустым (без содержимого);
  •  ANY, в случае, когда элемент может содержать что угодно;
  •  список, определяющий элементы-потомки и порядок их следования;
  •  смешанное содержимое.

Пример:

Использование значений ANY и EMPTY в содержимом элемента:

<?xml version="1.0" encoding="Windows-1251"?>

<!DOCTYPE message [

<!ELEMENT message ANY>

<!ELEMENT text ANY>

<!ELEMENT empty-line EMPTY>

]>

определяет документ с корневым элементом message, в котором могут встречаться также элемент text и empty-line, причем элементы message и text  могут содержать любые данные и любые из объявленных элементов, а элемент empty-line всегда должен быть пустым.

Пример документа, построенного в соответствии с этим объявлением:

<message>

<empty-line/>

<text>

      Поздравляю с днем рождения!

    </text>

</message>

В третьем случае содержимое элемента определяется при помощи формальных правил, которые очень похожи на шаблоны, используемые в регулярных выражениях. Эти формальные правила  используются для описания содержимого элемента –  последовательности элементов-потомков описываемого элемента.

Количество, с которым элемент может появляться в этой последовательности, формально записывается с использованием символов-модификаторов "*", "?" и "+", которые имеют следующие значения:

  •  a? означает, что элемент a может быть пропущен в последовательности;
  •  a  означает, что элемент a должен присутствовать в последовательности на этом месте ровно один раз;
  •  a*  задает последовательность из нуля или более элементов a;
  •  a+  задает последовательность из одного или более элементов a.

Кроме того, содержимое может моделироваться как перечисление и выбор элементов.

Элементы перечисляются через запятую в круглых скобках, например (a, b, с) означает последовательность, состоящую из элементов a, b и c. Такая запись означает, что первым должен идти элемент a, затем сразу же за ним элемент b и элемент c.

Выбор элемента задается аналогично перечислению, но в качестве разделителя используется символ "|". Например, (a | b | c) задает выбор одного из трех элементов a, b или c.

При записи выбора и перечисления элементы могут также указываться с использованием модификаторов количества, например, выражение

(a* | b? | c | d+)

определяет содержимое, как последовательность, состоящую из нуля или более элементов a или одного элемента b, который может быть пропущен, или ровно одного элемента c, или последовательностью, состоящей из одного или более элементов d.

Помимо этого, формальные правила могут использовать при записи другие формальные правила, например, выражение

((a|b), (c|d))

задает содержимое, первым элементом которого является a или b, вторым — элемент c или d.

Содержимое элементов может быть смешанным, т.е. включать только символьные данные, которые обозначаются при помощи ключевого слова #PCDATA (parsable character data –  анализируемые символьные данные), либо символьные данные или элементы-потомки. Например, определение:

<!ELEMENT product (#PCDATA)>

означает, что элемент product должен содержать только символьные данные, а определение

<!ELEMENT format (#PCDATA|bold|italic)>

означает, что элемент format может содержать в качестве дочернего элемента либо символьные данные, либо элемент bold, либо элемент italic.  

Пример определения элементов:

<?xml version="1.0" encoding="Windows-1251"?>

<!DOCTYPE message [

<!ELEMENT message (from, to+,

(subject?, empty-line*, text)+)>

<!ELEMENT from (#PCDATA)>

<!ELEMENT to (#PCDATA)>

<!ELEMENT subject (#PCDATA)>

<!ELEMENT empty-line EMPTY>

<!ELEMENT text (#PCDATA)>

]>

Данное DTD определяет, что корневой элемент message содержит следующие элементы:  from и to, после которых идет последовательность элементов subject, empty-line и text. Элементы from должен быть обязательно заданы один раз, элемент  to один раз и более, а последовательность элементов subject, empty-line и text может задаваться один или более раз. Элемент subject может быть задан один раз или пропущен, элемент   empty-line может быть  задан один или более раз, или пропущен, а элемент text должен быть обязательно задан один раз.

Пример документа XML, созданного в соответствии с описанным выше DTD:

<message>

<from>me@myAddress.com</from>

<to>you@yourAddress.com</to>

<subject>Поздравление</subject>

<empty-line/>

<text>

       Поздравляю с днем рождения!

    </text>

<empty-line/>

<empty-line/>

<text>

       Желаю здоровья и счастья!

    </text>

</message>

4.1.7. Определение атрибутов элемента

Список атрибутов некоторого элемента задается следующим образом:

<!ATTLIST элемент

атрибут-1 тип-1 значение-1

атрибут-2 тип-2 значение-2...

>

В этом определении параметр элемент задает имя элемента, для которого определяется данный список атрибутов, атрибут-i  имя i-го атрибута, тип-i  тип i-го атрибута и значение-i  значение i-го атрибута.

Параметр значение-i определяет, как и какие значения должны быть присвоены атрибуту. Параметр может принимать одно из следующих значений:

  •  ключевое слово #REQUIRED, которое показывает, что этот атрибут должен всегда присутствовать в элементе и иметь некоторое значение;
  •  ключевое слово #IMPLIED, которое показывает, что атрибут является необязательным и может отсутствовать в элементе;
  •  ключевое слово #FIXED, за которым следует значение, заключенное в кавычки (задает атрибут, который всегда должен иметь одно и то же фиксированное значение);
  •  значение, заключенное в кавычки, которое определяет значение атрибута по умолчанию.

Параметр тип-i определяет тип атрибута. В XML существуют три различных типа атрибутов:

  •  строковые атрибуты (String Type);
  •  маркированные атрибуты (Tokenized Type);
  •  перечислимые атрибуты (Enumerated Type).

4.1.7.1. Строковые атрибуты

Строковые атрибуты (тип  CDATA) могут   принимать в качестве значения любые символьные строки, например, атрибут href элемента a в HTML имеет тип CDATA:

<a href="http://www.microsoft.com">…</a>

Описание атрибута href для элемента a будет выглядеть следующим образом:

<!ATTLIST a

href CDATA #REQUIRED

>  

4.1.7.2. Маркированные атрибуты

Маркированные атрибуты имеют один из следующих фиксированных значений типов:

  •  ID  уникальный идентификатор для элемента в документе. Значение ID должно состоять из имени – буквы или символа подчеркивания, за которыми могут следовать другие символы;
  •  IDREF  указывает на элемент с заданным значением ID;
  •  IDREFS указывает на два и более элемента в документе при помощи списка ID, в котором элементы списка отделены друг от друга пробелами;
  •  ENTITY  указывает на внешнюю сущность (значение должно состоять из имени, а также должно соответствовать имени внешней сущности);
  •  ENTITIES  указывает на две и более внешних сущностей при помощи списка сущностей, в котором элементы списка отделены друг от друга пробелами;
  •  NMTOKEN  принимает значение имени (в отличие от значений типа CDATA, которые могут содержать любые символы, значения NMTOKEN могут содержать только буквы, цифры, а также ".", "-", "_" и ":");
  •  NMTOKENS  принимает значение двух или более имен, разделенных пробелами.

Пример задания атрибутов ID, IDREF и IDREFS:

<?xml version="1.0" encoding="Windows-1251"?>

<!DOCTYPE e-mail [

  <!ELEMENT e-mail (address+, letter*, proposal*)>

   <!ELEMENT address (#PCDATA)>

    <!ATTLIST address name ID #REQUIRED>

   <!ELEMENT letter (#PCDATA)>

    <!ATTLIST letter

from IDREF #REQUIRED

  to IDREF #REQUIRED

  subject CDATA #IMPLIED

>

   <!ELEMENT proposal (#PCDATA)>   

<!ATTLIST proposal

from IDREFS #REQUIRED

to IDREF #REQUIRED

subject CDATA #IMPLIED

>

]>

<e-mail>

<address name="Ivanov">ivanov@post.com</address>

<address name="Petrov">petrov@post.com</address>

<address name="Sidorov">sidorov@post.com</address>

<letter from="Ivanov" to="Petrov"

subject="Поздравление">

Поздравляю с днем рождения!

</letter>

<proposal from="Petrov Sidorov" to="Ivanov">

Предложение Иванову от Петрова и Сидорова

</proposal>

</e-mail>

Пример задания атрибутов NMTOKEN и NMTOKENS:

<?xml version="1.0" encoding="Windows-1251"?>

<!DOCTYPE user-list [

<!ELEMENT user-list  user+>

<!ELEMENT user EMPTY>

         <!ATTLIST user

               name NMTOKENS #REQUIRED

              birth_date NMTOKEN #REQUIRED

               address NMTOKENS #REQUIRED

>

]>

<user-list>

 <user name="Иванов Иван Иванович"

  birth_date="01:12:1979"

address="Country:Украина City:Киев

Street:Полевая Building:56 Flat:12"/>

<user name="John Smith" birth_date="24:08:1979"

address="Country:USA City:New-York

Street:1-th Avenue Building:125 Flat:84"/>  

</user-list>  

Если дату рождения первого пользователя представить в виде 01/12/1979, то при анализе документа будет зафиксирована ошибка, поскольку символ "/" является недопустимым в значениях атрибутов типа NMTOKEN.

4.1.7.3. Атрибуты перечислимого типа

Атрибуты перечислимого типа представляются списком значений. Атрибуты могут принимать одно значение из списка значений, предоставляемых в объявлении. Тип  перечисления  может  задаваться  нотациями (notation type) и собственно перечислениями (enumeration). Перечисление –  это одно или несколько имен, которые разделены пробелами и символами "|". Перечисление задает несколько возможных вариантов значения атрибута, например ("черный"|"белый"). Хотя в качестве значения можно использовать ключевые слова #IMPLIED или #REQUIRED, обычно используется значение по умолчанию. Нотации будут рассмотрены далее.

Пример объявления атрибутов перечислимого типа:

<!ELEMENT font  (#PCDATA)>

<!ATTLIST font

face (Arial|Times_New_Roman|Courier_New)"Arial"

 size (10pt|12pt|14pt|18pt) "12pt"

 style (normal|bold|italic) "normal"

 >

4.1.7.4. Обработка пробелов и определение языка содержимого элемента

Специальный атрибут, называемый xml:space, может быть присоединён к элементу для того, чтобы уведомить процессор о намерении сохранить пробел в данном элементе для использования приложением. Если данный атрибут объявляется, он должен быть задан как перечислимый тип, значениями которого могут быть либо "default" или "preserve", либо одно из значений, например:

<!ATTLIST poem  xml:space (default|preserve) 'preserve'>

или

<!ATTLIST pre xml:space (preserve) #FIXED 'preserve'>.

Значение "default" указывает, что для данного элемента принимаются режимы обработки по умолчанию пробелов в данном приложении, а значение "preserve" задает режим  сохранения в приложении всех пробелов. Это определение действует для всех элементов  внутри содержимого элемента,  для которого  оно задано, если только оно не переопределяется другим экземпляром атрибута xml:space. Обычно атрибут xml:space указывается, если необходимо сохранить исходное форматирование документа, например, при выводе программы или стихов.

При обработке документа также часто используется идентификация естественного или формального языка, на котором написано содержимое. Для определения языка содержимого элемента и языка значений атрибутов в элемент документа может быть вставлен специальный атрибут xml:lang. Значением атрибута являются коды языков, например, uk, ru, en, en-US или en-GB.

В правильных документах этот атрибут, как и некоторые другие, обязан быть объявлен, если используется.

Пример использования атрибутов xml:space и xml:lang:

<?xml version="1.0" encoding="Windows-1251"?>

<!DOCTYPE program-book [

<!ELEMENT program-book  

(name, language, description, program)+>

 <!ATTLIST program-book

     xml:space (default|preserve) 'default'

  >

<!ELEMENT name (#PCDATA)>

 <!ATTLIST name

     xml:lang (en|ru) 'en'

  >

<!ELEMENT language (#PCDATA)>

 <!ATTLIST language

     xml:lang (en|ru) 'ru'

  >

<!ELEMENT description (#PCDATA)>

 <!ATTLIST description

     xml:lang (en|ru) 'ru'

  >

   <!ELEMENT program (#PCDATA)>

    <!ATTLIST program

     xml:space (preserve) #FIXED 'preserve'

  >

]>

<program-book>

<name>add2.c</name>

<language xml:lang="en">C</language>

<description>Сложение     двух      чисел</description>

<program>

int main(void)

{

 int a1, a2, sum;

 printf("Введите слагаемые:");

 scanf("%d %d", &amp;a1, &amp;a2);

 sum = a1 + a2;

 printf("Сумма:", sum);

 }

</program>

</program-book> 

Если в процессоре XML производится нормализация текста (удаление лишних пробелов и форматирование по ширине страницы), то в выводимом документе будут удалены лишние пробелы в содержимом дескриптора <description>, а содержимое дескриптора <program> будет выведено без переформатирования. В дескрипторах <name> и <description> по умолчанию используется соответственно английский и русский язык, а для дескриптора <language> явно определен английский язык.

4.1.8. Определение сущности

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

&имя;

Используемые в документе XML сущности могут быть двух типов:

  •  анализируемые внутренние и внешние сущности (parsed entities) воспринимаются и обрабатываются как данные XML;
  •  неанализируемые  внешние сущности (unparsed entities) данные не обрабатываемые XML (например, изображения или бинарные файлы, которые используются в данном документе).

4.1.8.1. Анализируемые сущности

Внутреннее определение сущности, задаваемое  во внутреннем DTD, может быть только анализируемой сущностью и имеет следующий формат

<!ENTITY имя "значение">

где параметр имя задает имя сущности, которое будет использоваться в ссылке на сущность в документе XML, а литерал значение – это значение сущности, на которое будет заменяться ссылка на сущность в документе XML.

Пример определения и использования внутренней сущности:

<?xml version="1.0" encoding="Windows-1251"?>

<!DOCTYPE guide [

<!ENTITY kpi 'НТУУ "КПИ"'>

<!ELEMENT guide (#PCDATA)>

]>

<guide>

В 1998 году Национальному техническому университету

Украины "Киевский политехнический институт"

(&kpi;) исполнилось 100 лет.

В настоящее время в &kpi; обучается свыше

30 тыс. студентов.

</guide>

При обработке документа все ссылки на сущность будут заменены значением сущности:

В 1998 году Национальному техническому университету Украины "Киевский политехнический институт" (НТУУ "КПИ") исполнилось 100 лет. В настоящее время в НТУУ "КПИ" обучается свыше 30 тыс. студентов.   

Определение внешней анализируемой сущности имеет один из следующих форматов:

<!ENTITY имя SYSTEM "URI">

<!ENTITY имя PUBLIC "владелец" "URI">

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

В предыдущем примере, можно заменить внутреннее определение сущности внешним определением:

<!ENTITY kpi SYSTEM "kpi.ent">  

Файл kpi.ent содержит значение сущности. Если в значении сущности используются буквы не латинского алфавита, их необходимо представлять, как сущности символов Unicode, поэтому содержимое файла kpi.ent для сущности 'НТУУ "КПИ"' будет иметь следующий вид:

&#x041D;&#x0422;&#x0423;&#x0423; "&#x041A;&#x041F;&#x0418;"  

4.1.8.2. Неанализируемые сущности

Для неанализируемой сущности (которая может быть только внешней сущностью) определение имеет один из следующих форматов:

<!ENTITY имя SYSTEM "URI" NDATA имя-нотации>

<!ENTITY имя PUBLIC "владелец" "URI" NDATA имя-нотации>

Здесь параметры имя, "URI" и "владелец" имеют тот же смысл, что и для анализируемой сущности, а параметр имя-нотации задает имя нотации. Нотации определяют формат неанализируемых экземпляров, формат элементов, которые породили атрибут нотации, или приложение, которому адресуется инструкция процесса. Нотации рассматриваются в следующем разделе.

4.1.8.3. Параметрические сущности

Еще одним видом сущности являются параметрические сущности или сущности-параметры. Сущности этого типа используются только во внешних DTD для более гибкого описания логической структуры документа. Ссылки на параметрические сущности в DTD имеют следующий вид:

%имя;

Объявление параметрической сущности имеет следующий формат:

<!ENTITY % имя "значение-1 значение-2…">

Параметр имя определяет имя параметрической сущности, а параметры значение-i определяют значения сущностей. В качестве значения сущностей могут использоваться данные типа CDATA, а также параметрические сущности.

Пример использования параметрических сущностей:

Ниже приведены фрагменты DTD спецификации HTML 4.01 (файл strict.dtd), описывающие элемент  br:

<!ENTITY % StyleSheet "CDATA">

<!ENTITY % Text "CDATA">

<!ENTITY % coreattrs

 "id    ID    #IMPLIED             

class     CDATA    #IMPLIED        

  style     %StyleSheet;  #IMPLIED  

 title     %Text;   #IMPLIED"

>

<!ELEMENT BR EMPTY>

<!ATTLIST BR

   %coreattrs;                          

>

4.1.9. Определение нотации

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

Определение нотации может быть представлено в одном из следующих форматов:

<!NOTATION имя SYSTEM "URI">

<!NOTATION имя PUBLIC "владелец" "URI ">

<!NOTATION имя PUBLIC "владелец">

Существует два основных способа применения нотаций:

  •  объявление неанализируемых сущностей и использование их имен в атрибутах типа ENTITY или ENTITIES;
  •  указание имени нотации в атрибуте типа NOTATION.

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

Пример использование неанализируемых сущностей в атрибутах элементов:

<!DOCTYPE menu [

<!ELEMENT menu (menuitem*)>

<!ELEMENT menuitem EMPTY>

<!ATTLIST menuitem

image ENTITY #REQUIRED

title CDATA #REQUIRED

href CDATA #REQUIRED

>

<!NOTATION gif SYSTEM "gif-viewer.exe">

<!NOTATION jpg SYSTEM "jpg-viewer.exe">

<!ENTITY news SYSTEM "news.gif" NDATA gif>

<!ENTITY products SYSTEM "prod.jpg" NDATA jpg>

<!ENTITY support SYSTEM "support.gif" NDATA gif>

]>

<menu>

<menuitem image="news" title="News" href="news.htm"/>

<menuitem image="products" title="Products"

href="products.htm"/>

<menuitem image="support" title="Support"

href="support.htm"/>

</menu>

В этом примере определения нотации с именами gif и jpg определяют приложения для обработки изображений форматов .gif  и .jpeg, а сущности с именами определяют соответственно ссылки на нотации с именами gif и jpg. В элементах menuitem значения атрибутов image являются соответственно сущностями news, products и support.

Таким образом, анализируя определение сущности, например, products, обрабатывающая программа определит, что это –  неанализируемая внешняя сущность формата jpg, которая хранится в файле prod.jpg и для обработки которой нужно использовать приложение jpg-viewer.exe.

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

Пример использования нотаций для определения формата содержимого элемента:

<!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>

<title>Welcome Page</title>

</head>

<body>

 <h1>Добро пожаловать на наш сайт!</h1>

</body>

</html>

]]>

</root>

В этом документе определяется три нотации и, соответственно, три формата данных: rtf, htm и txt. Значение htm атрибута type элемента root определяет формат данных, и, соответственно программу, которая будет вызываться для обработки этого документа.  

4.1.10. Условные разделы

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

 <! [INCLUDE! [

<!ELEMENT имя (#PCDATA)>

]]>

<! [ IGNORE [

<!ELEMENT имя (#PCDATA)>

]]>

При использовании первого формата определение с именем имя будет включено в DTD, при использовании второго формата – исключено из DTD.

Пример определения условных разделов:

<!ENTITY % draft 'INCLUDE'>

<!ENTITY % final 'IGNORE'>

<![%draft;[

<!ELEMENT book (comments*, title, body, supplements?)>

]]>

<![%final;[

<!ELEMENT book (title, body, supplements?)>

]]>

Параметрическая сущность  с именем draft будет включена в DTD, а Параметрическая сущность  с именем final – исключена из DTD.

Файл: file:///web/1/5fan/public_html/www/files/13/5fan_ru_69054_cb2e8bc79f9ab9f67e68b86ba9a10c2f.doc   Создан: 2008-01-31T08:49:00Z Модифицирован: 2008-01-31T08:49:00Z     Автор:


 

А также другие работы, которые могут Вас заинтересовать

38303. Европейский Парламент 40 KB
  14 ДЕС депутаты Европарламента избираются прямым всеобщим голосованием. Ряд существенных уточнений в порядок избрания депутатов Европарламента вносятся ДФЕС. Общее число членов Европарламента равно 751 750 1. Состав Европарламента и квоты отдельных государств фиксируются Европейским Советом по предложению Европарламента.
38304. Роль свободи в розвитку особистості 106 KB
  Вище сказане зумовлює актуальність проведеного мною дослідження на тему: Свобода – основна умова розвитку особистості . Мета дослідження: з'ясувати ролі свободи у формуванні особистості та будуванні громадянського суспільства. Вікові та індивідуальні фактори становлення свободи особистості Демократизація суспільства а отже і освіти вимагають від психологопедагогічної науки пошуку нових шляхів якісного вдосконалення виховання підростаючої особистості.
38305. Земельне право 1.82 MB
  Земельне право – самостійна галузь права представляє собою сукупність правових норм регулюючих: стосунки по використанню і охороні землі як природного ресурсу; умови і засоби виробництва в цілях організації раціонального використання і охорони землі; поліпшення і відтворення родючості ґрунтів; охорону прав і законних інтересів суб'єктів земельних стосунків. Таким своєрідним предметом земельного права є земельні правовідносини які мають наступні ознаки: поперше випливають із спеціальної правосуб'єктності суб'єктів земельного права із...
38307. Инвестирование. Сущность инвестиций 126.5 KB
  Инвестиции представляют собой вложения капитала с целью последующего его увеличения. В коммерческой практике принято различать следующие типы инвестиций: инвестиции в физические активы; инвестиции в денежные активы; инвестиции в нематериальные незримые активы. Инвестиции в ценные бумаги принято называть портфельными инвестициями а инвестиции в физические активы чаще именуют инвестициями в реальные активы. Различают: реальные финансовые и инновационные инвестиции.
38308. Банковское инвестирование и кредитирование 96.56 KB
  Инвесторы для получения кредита предоставляют в банк бизнесплан по реализации проекта 3. Вложения средств банком может осуществляться по разным схемам и на разных этапах реализации проекта 4. проекта то есть анализа техникоэкономического обоснования инвестиционного мероприятия предусмотренного проектом.