<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>IN info &#187; dtd</title>
	<atom:link href="http://www.ininfo.biz/tags/dtd/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.ininfo.biz</link>
	<description>Статьи об информационных технологиях</description>
	<lastBuildDate>Sun, 05 Feb 2012 14:57:24 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Коротко о DTD</title>
		<link>http://www.ininfo.biz/2009/02/20/dtd-first-look/</link>
		<comments>http://www.ininfo.biz/2009/02/20/dtd-first-look/#comments</comments>
		<pubDate>Fri, 20 Feb 2009 13:32:09 +0000</pubDate>
		<dc:creator>Игорь Борисов</dc:creator>
				<category><![CDATA[Web разработка]]></category>
		<category><![CDATA[XML]]></category>
		<category><![CDATA[dtd]]></category>
		<category><![CDATA[введение]]></category>

		<guid isPermaLink="false">http://www.ininfo.biz/?p=72</guid>
		<description><![CDATA[Что такое DTD (определение типа документа, document type definition), зачем оно нужно, как его читать и, главное, как его создавать &mdah; об этом Вы узнаете прочитав эту статью...]]></description>
			<content:encoded><![CDATA[<h3>Введение</h3>
<p>Спецификация <a href="http://ru.wikipedia.org/wiki/SGML" target="_blank">SGML</a> предусматривает создание новых языков разметки.<br />
<a href="http://www.w3.org/html/" target="_blank">HTML</a> и <a href=" www.w3.org/XML" target="_blank">XML</a> как раз таковыми и являются. Причём XML сам по себе предусматривает расширяемость. Документы созданные с помощью этих языков могут быть «корректными (well-formed)» и «допустимыми (valid)».</p>
<p>С проверкой документа на корректность проблем не возникает: если ошибок не выскочило и всё отобразилось так, как мы хотели, то документ корректен. Например, если в HTML-документе написать что-то вроде «<code>&lt;Z&gt;Привет!&lt;/Z&gt;</code>», то наш документ будет полностью корректен, но проигнорирован браузером. Почему? Потому что браузер ничего не знает о том, что это за «Z» такой. И если мы проверим наш документ на допустимость с помощью <a href="http://validator.w3.org/" target="_blank">валидатора</a>, то документ таковым признан не будет. А как об этом узнает валидатор и на основании чего он вынес такой вердикт?</p>
<p><span id="more-72"></span></p>
<p>Допустимость проверяется с помощью определения типа документа (DTD, document type definition). Например, для «строгого» HTML он выглядит <a href="http://www.w3.org/TR/html4/strict.dtd" title="Так выглядит файл strict.dtd" target="_blank">так</a>.</p>
<p>DTD может быть описан как внутри документа, так и вынесен в отдельный файл (аналогия с CSS: встроенные и подключаемые таблицы стилей).</p>
<h3>Объявление DTD</h3>
<p>Объявление DTD располагается перед первым (корневым) элементом документа, начинается с последовательности «<code>&lt;!DOCTYPE</code>» и заканчивается символом «<code>&gt;</code>».</p>
<p>Внутреннее DTD описывается так:</p>

<div class="wp_syntax"><div class="code"><pre class="schema" style="font-family:monospace;color: black;">&lt;!DOCTYPE catalog [
&nbsp;
]
&gt;</pre></div></div>

<p>Между квадратными скобками располагается содержимое DTD, так называемое <em>внутреннее подмножество</em>, например:</p>

<div class="wp_syntax"><div class="code"><pre class="schema" style="font-family:monospace;color: black;">&lt;!DOCTYPE catalog [
    &lt;!ELEMENT someelement (#PCDATA)&gt;
]
&gt;</pre></div></div>

<p>Если DTD вынесено в отдельный файл (обычно имеющий расширение .dtd), то его объявление в документе записывается так:</p>

<div class="wp_syntax"><div class="code"><pre class="schema" style="font-family:monospace;color: black;">&lt;!DOCTYPE catalog SYSTEM &quot;catalog.dtd&quot;&gt;</pre></div></div>

<p>Соответственно, в этом файле и прописываются все правила, так называемое <em>внешнее подмножество</em>. </p>
<p>Имя, указанное за словом «<code>DOCTYPE</code>» (в нашем случае «<code>catalog</code>»), должно соответствовать имени корневого элемента. То есть, XML-документ должен быть примерно таким:</p>

<div class="wp_syntax"><div class="code"><pre class="schema" style="font-family:monospace;color: black;">&lt;?xml version=&quot;1.0&quot;?&gt;
&lt;!DOCTYPE catalog SYSTEM &quot;catalog.dtd&quot;&gt;
&lt;catalog&gt;
  &lt;someelement&gt;Hello, world!&lt;/someelement&gt;
&lt;/catalog&gt;</pre></div></div>

<p>Вместо ключевого слова «<code>SYSTEM</code>» может быть использовано слово «<code>PUBLIC</code>», указывающее, что DTD применяется для широкого использования:</p>

<div class="wp_syntax"><div class="code"><pre class="schema" style="font-family:monospace;color: black;">&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.01//EN&quot;
    &quot;http://www.w3.org/TR/html4/strict.dtd&quot;&gt;</pre></div></div>

<p>Внутренние и внешние подмножества могут быть заданы одновременно (опять же, аналогия с CSS):</p>

<div class="wp_syntax"><div class="code"><pre class="schema" style="font-family:monospace;color: black;">&lt;!DOCTYPE catalog SYSTEM &quot;catalog.dtd&quot;[
    &lt;!ELEMENT someelement (#PCDATA)&gt;
]
&gt;</pre></div></div>

<p>Здесь, сначала зачитывается содержимое файла «<code>catalog.dtd</code>», а потом содержимое, указанное внутри квадратных скобок.</p>
<h3>Элементы документа</h3>
<p>Элементы объявляются в DTD с помощью ключевого слова «<code>ELEMENT</code>», после которого следует имя элемента и его содержимое заключенное в круглые скобки :</p>

<div class="wp_syntax"><div class="code"><pre class="schema" style="font-family:monospace;color: black;">&lt;ELEMENT book (#PCDATA)&gt;</pre></div></div>

<p>Если у элемента есть дочерние элементы, то это записывается так:</p>

<div class="wp_syntax"><div class="code"><pre class="schema" style="font-family:monospace;color: black;">&lt;!ELEMENT book (title)&gt;</pre></div></div>

<p>что соответствует документу:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="xml" style="font-family:monospace;color: black;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;color: blue;">&lt;book<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;color: blue;">&lt;title</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;color: blue;">&lt;/book<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></td></tr></table></div>

<p>Если у элемента несколько дочерних элементов, то они перечисляются через запятую и должны следовать строго в указанном порядке:</p>

<div class="wp_syntax"><div class="code"><pre class="schema" style="font-family:monospace;color: black;">&lt;!ELEMENT book (title, author)&gt;
&lt;!ELEMENT title (#PCDATA)&gt;
&lt;!ELEMENT author (#PCDATA)&gt;</pre></div></div>

<p>Приведённый выше пример читается следующим образом. Элемент «<code>book</code>» должен содержать только один элемент «<code>title</code>», за которым должен следовать только один элемент «<code>author</code>». Сами элементы «<code>title</code>» и «<code>author</code>» никаких элементов не содержат, а могут содержать лишь какой-нибудь текст.</p>
<p>С помощью следующих специальных символов можно определять количественное присутствие элемента:</p>
<ul>
<li>Символ «<code>*</code>», следующий после элемента, означает, что элемент может присутствовать один или несколько раз, или не присутствовать вовсе(от нуля до + бесконечности) </li>
<li>Символ «<code>+</code>», следующий после элемента, означает, что элемент может присутствовать один или несколько раз(от 1 до + бесконечности) </li>
<li>Символ «<code>?</code>», следующий после элемента, означает, что элемент может либо отсуствовать, либо присутствовать только один раз(0 или 1) </li>
</ul>

<div class="wp_syntax"><div class="code"><pre class="schema" style="font-family:monospace;color: black;">&lt;!ELEMENT book (title, author)&gt;
...
&lt;!ELEMENT book (title*, author)&gt;
...
&lt;!ELEMENT book (title+, author)&gt;
...
&lt;!ELEMENT book (title?, author)&gt;</pre></div></div>

<p>Если существует необходимость указать один из нескольких элементов (или title, или author &#8211; любой из них, но не оба), надо испольовать символ «<code>|</code>»:</p>

<div class="wp_syntax"><div class="code"><pre class="schema" style="font-family:monospace;color: black;">&lt;!ELEMENT book (title | author)&gt;</pre></div></div>

<p>Текст тоже равноправный участник игры. Ключевое слово «<code>PCDATA</code>» указывает на анализируемые символьные данные, поэтому любой текст содержащий символы разметки («<code>&lt;</code>», «<code>&gt;</code>» и «<code>&amp;</code>») будет трактоваться как разметка. Совместное использование текста и элементов называется <em>смешанным содержимым</em>. При объявлении смешанного содержимого, «<code>PCDATA</code>» необходимо указывать первым:</p>

<div class="wp_syntax"><div class="code"><pre class="schema" style="font-family:monospace;color: black;">&lt;!ELEMENT book (#PCDATA | title | author)&gt;</pre></div></div>

<p>Следующий фрагмент документа валиден вышеприведенному примеру:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
</pre></td><td class="code"><pre class="xml" style="font-family:monospace;color: black;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;color: blue;">&lt;book<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;color: blue;">&lt;title</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;color: blue;">&lt;/book<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;color: blue;">&lt;book<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;color: blue;">&lt;author</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;color: blue;">&lt;/book<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;color: blue;">&lt;book<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    Нет данных
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;color: blue;">&lt;/book<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></td></tr></table></div>

<p>Группы элементов заключаются в круглые скобки. Элемент «<code>book</code>» должен содержать либо текст, либо (один «<code>title</code>», один или неколько «<code>author</code>» и может быть один «<code>pubyear</code>» именно в таком порядке):</p>

<div class="wp_syntax"><div class="code"><pre class="schema" style="font-family:monospace;color: black;">&lt;!ELEMENT book (#PCDATA | (title, author+, pubyear?))&gt;
&lt;!ELEMENT disc (#PCDATA | title)*&gt;</pre></div></div>

<p>Данному примеру соответствует следующий фрагмент XML-документа:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
</pre></td><td class="code"><pre class="xml" style="font-family:monospace;color: black;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;color: blue;">&lt;disc</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;color: blue;">&lt;book<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;color: blue;">&lt;title</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;color: blue;">&lt;author</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;color: blue;">&lt;author</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;color: blue;">&lt;/book<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;color: blue;">&lt;book<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    Нет данных
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;color: blue;">&lt;/book<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></td></tr></table></div>

<p>Элемент может быть пустым. Такой элемент не может содержать не дочерних элементов ни текста (например, элемент «<code>br</code>» в HTML). Такой элемент задается с ключевым словом «<code>EMPTY</code>»:</p>

<div class="wp_syntax"><div class="code"><pre class="schema" style="font-family:monospace;color: black;">&lt;!ELEMENT photo EMPTY&gt;</pre></div></div>

<p>Элемент также может быть объявлен с ключевым словом «<code>ANY</code>» означающее, что элемент может содержать и элементы, и текст, и все это вместе, и даже быть пустым.</p>
<h3>Атрибуты элементов</h3>
<p>Элементы в XML-документе могут иметь атрибуты, которые записываются в виде «<code>имя = значение</code>» в открывающем или пустом тегах. Общее объявление атрибутов конкретного элемента начинается с ключевого слова «<code>ATTLIST</code>», после которого следует имя данного элемента и объявления самих атрибутов:</p>

<div class="wp_syntax"><div class="code"><pre class="schema" style="font-family:monospace;color: black;">&lt;!ELEMENT title (#PCDATA)&gt;
    &lt;!ATTLIST title
           id CDATA #REQUIRED
           stock CDATA #IMPLIED&gt;</pre></div></div>

<p>Ключевое слово «<code>REQUIRED</code>» указывает на то, что атрибут обязателен. Ключевое слово «<code>IMPLIED</code>», наоборот, говорит, что атрибут необязателен. </p>
<p>У атрибутов могут быть перечисленны разрешенные значения:</p>

<div class="wp_syntax"><div class="code"><pre class="schema" style="font-family:monospace;color: black;">&lt;!ATTLIST title
       readonly (yes|no) #REQUIRED&gt;</pre></div></div>

<p>Также может быть задано значение по-умолчанию:</p>

<div class="wp_syntax"><div class="code"><pre class="schema" style="font-family:monospace;color: black;">&lt;!ATTLIST title
       readonly (yes|no) #REQUIRED &quot;yes&quot;&gt;
       pubyear CDATA #IMPLIED &quot;2007&quot;&gt;</pre></div></div>

<p>Атрибут может быть и константой, то есть у него может быть только то значение, которое заявлено в объявлении атрибута. Делается это с помощью ключевого слова «<code>FIXED</code>»:</p>

<div class="wp_syntax"><div class="code"><pre class="schema" style="font-family:monospace;color: black;">&lt;!ATTLIST title
       copyright &lt;strong&gt;#FIXED &quot;udvikler&quot;&gt;</pre></div></div>

<p>Тип атрибута «<code>CDATA</code>»позволяет использовать любые символы кроме «<code>&lt;</code>», «<code>&gt;</code>», «<code>&amp;</code>», «<code>&quot;</code>» и «<code>'</code>». В случае использования, данные символы должны быть заменены на спецсимволы типа «<code>&amp;lt;</code>» и т.п. <span style="color:red;background:yellow">Внимание</span>: в DTD ключевое слово «<code>CDATA</code>» имеет другое значение, чем раздел «<code>CDATA</code>» в XML-документе!</p>
<p>Помимо типа CDATA, атрибуты могут иметь следующие типы:</p>
<ul>
<li><code>NMTOKEN</code> — может содержать только <code>буквы</code>, <code>цифры</code>, «<code>.</code>», «<code>-</code>», «<code>_</code>» и «<code>:</code>» </li>
<li><code>NMTOKENS</code> — может содержать те же символы, что и «<code>NMTOKEN</code>», а также символы <code>пробела</code>, <code>возврата каретки</code>, <code>перевода строки</code> и <code>табуляции</code></li>
</ul>

<div class="wp_syntax"><div class="code"><pre class="schema" style="font-family:monospace;color: black;">&lt;!ATTLIST title
       id CDATA #REQUIRED
       stock NMTOKEN #IMPLIED
       publisher NMTOKENS #IMPLIED&gt;</pre></div></div>

<p>Еще один тип атрибута «<code>ID</code>» разрешает задавать те же значения, что и тип NMTOKEN, но начинаться значение должно либо с буквы, либо с «<code>_</code>», либо с «<code>:</code>». У любого элемента может быть только один атрибут с типом «<code>ID</code>». Атрибут типа «<code>ID</code>» не может быть константой (объявляться как «<code>FIXED</code>»). Значение атрибута типа «<code>ID</code>» должно быть уникальным для всего XML-документа:</p>

<div class="wp_syntax"><div class="code"><pre class="schema" style="font-family:monospace;color: black;">&lt;!ELEMENT book (title, author)&gt;
&lt;!ELEMENT title (#PCDATA)&gt;
&lt;!ELEMENT author (#PCDATA)&gt;
    &lt;!ATTLIST title
           id ID #REQUIRED
           stock CDATA #IMPLIED&gt;
    &lt;!ATTLIST author
           id ID #REQUIRED
           city CDATA #IMPLIED&gt;</pre></div></div>

<p>Атрибут элемента может быть ссылкой на атрибут типа «<code>ID</code>» другого элемента. Для этого он объявляется как атрибут типа «<code>IDREF</code>». Если атрибут должен ссылаться на атрибут типа «<code>ID</code>» нескольких элементов, то испольуется ключевое слово «<code>IDREFS</code>»:</p>

<div class="wp_syntax"><div class="code"><pre class="schema" style="font-family:monospace;color: black;">&lt;!ELEMENT book (title+, author, year, publisher)&gt;
&lt;!ELEMENT title (#PCDATA)&gt;
&lt;!ELEMENT author (#PCDATA)&gt;
&lt;!ELEMENT year (#PCDATA)&gt;
&lt;!ELEMENT publisher (#PCDATA)&gt;
    &lt;!ATTLIST title
           id ID #REQUIRED&gt;
    &lt;!ATTLIST author
           id ID #REQUIRED&gt;
    &lt;!ATTLIST year
           ref IDREF #REQUIRED&gt;
    &lt;!ATTLIST publisher
           from IDREFS #REQUIRED&gt;</pre></div></div>

<p>В XML-документе это будет выглядить так:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
</pre></td><td class="code"><pre class="xml" style="font-family:monospace;color: black;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;color: blue;">&lt;book<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;color: blue;">&lt;title</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;color: gray;">&quot;t1&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;color: blue;">&lt;title</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;color: gray;">&quot;t2&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;color: blue;">&lt;title</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;color: gray;">&quot;t3&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;color: blue;">&lt;author</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;color: gray;">&quot;a1&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;color: blue;">&lt;year</span> <span style="color: #000066;">ref</span>=<span style="color: #ff0000;color: gray;">&quot;t2&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;color: blue;">&lt;publisher</span> <span style="color: #000066;">from</span>=<span style="color: #ff0000;color: gray;">&quot;t1 t2 a1&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;color: blue;">&lt;/book<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></td></tr></table></div>

<h3>Объявление сущностей</h3>
<p>Помимо элементов и их атрибутов, мы можем определить <em>сущности</em>, записываемые с помощью ключевого слова «<code>ENTITY</code>»:</p>

<div class="wp_syntax"><div class="code"><pre class="schema" style="font-family:monospace;color: black;">&lt;!ENTITY name &quot;SuperMegaMaster&quot;&gt;</pre></div></div>

<p>В XML-документе ссылка на эту сущность определяется следующим образом (амперсанд + имя сущности + точка с запятой):</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="xml" style="font-family:monospace;color: black;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;color: blue;">&lt;userName<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><span style="color: #ddbb00;">&amp;name;</span><span style="color: #009900;"><span style="color: #000000; font-weight: bold;color: blue;">&lt;/userName<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></td></tr></table></div>

<p>В результате чего, на место имени сущности «<code>name</code>», будет подставлено ее значение, в нашем случае &#8211; «<code>SuperMegaMaster</code>».</p>
<p>И для полноты нашего счастья, надо добавить, что атрибуты элементов могут иметь в качестве значения подобные сущности &#8211; <em>сущности-атрибуты</em>. Они тоже определяются с помощью ключевого слова «<code>ENTITY</code>», но имеют одно ограничение &#8211; они должны ссылаться на внешние неанализируемые сущности, определенные во внешнем подмножестве DTD:</p>

<div class="wp_syntax"><div class="code"><pre class="schema" style="font-family:monospace;color: black;">&lt;!DOCTYPE catalog [
    &lt;!ENTITY list SYSTEM &quot;companyList.html&quot; NDATA parse&gt;
    &lt;!ELEMENT catalog (user+)&gt;
    &lt;!ELEMENT user (name)&gt;
        &lt;!ATTLIST user company ENTITY #REQUIRED&gt;
    &lt;!ELEMENT name (#PCDATA)&gt;
]
&gt;</pre></div></div>

<p>В вышеприведённом примере, объявлена сущность «<code>list</code>», которая ссылается на внешний документ «<code>companyList.html</code>». Ключевое слово «<code>NDATA</code>», говорит о том, что внешний документ неявляется XML-документом. Далее, для элемента «<code>user</code>» объявляется атрибут «<code>company</code>», который является обязательным и имеет тип «<code>ENTITY</code>», то есть ссылается на какую-либо сущность. Поскольку в нашем пример задана только одна сущность («<code>list</code>»), то именно она и только она может быть значением атрибута «<code>company</code>» в XML-документе:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
</pre></td><td class="code"><pre class="xml" style="font-family:monospace;color: black;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;color: blue;">&lt;catalog<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;color: blue;">&lt;user</span> <span style="color: #000066;">company</span>=<span style="color: #ff0000;color: gray;">&quot;list&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;color: blue;">&lt;name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>SuperMegaMaster<span style="color: #009900;"><span style="color: #000000; font-weight: bold;color: blue;">&lt;/name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;color: blue;">&lt;/user<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;color: blue;">&lt;/catalog<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></td></tr></table></div>

<p>Осталось только понять, что означает «<code>parse</code>» в строке объявления сущности «<code>list</code>»? Когда используются неанализируемые данные, то есть те, которые не анализируются синтаксическим анализатором XML, хорошо было бы дать информацию приложению (использующему данный XML-документ), каким образом обработать эту сущность, если все-таки потребуется. Для этого нужно использовать нотацию, задаваемую ключевым словом «<code>NOTATION</code>» и дополнить наш DTD следующим образом:</p>

<div class="wp_syntax"><div class="code"><pre class="schema" style="font-family:monospace;color: black;">&lt;!NOTATION parse SYSTEM &quot;iexlorer&quot;&gt;
&lt;!ENTITY list SYSTEM &quot;companyList.html&quot; NDATA parse&gt;</pre></div></div>

<p>Слово «<code>parse</code>» в объявлении сущности лист указывает на то, каким образом можно проанализировать файл «<code>companyList.html</code>» &#8211; найти нотацию с именем «<code>parse</code>» и следовать ее указаниям. В нашем случае, приложение может открыть MS InternetExplorer и загрузить в него документ «<code>companyList.html</code>». </p>
]]></content:encoded>
			<wfw:commentRss>http://www.ininfo.biz/2009/02/20/dtd-first-look/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

