Сайт о телевидении

Сайт о телевидении

» » Введение в XML DTD. Определение типа документа (DTD)

Введение в XML DTD. Определение типа документа (DTD)

Аннотация: В данном разделе описываются общие принципы написания Определение типа документа. Так же рассмотрены основные недостатки и особенности DTD.

Зачем нужно DTD.

Создавая XML документ разработчик сам решает: как назвать теги, в каком порядке они будут следовать, какие данные будут записаны в том или ином элементе, будут ли у элемента атрибуты или нет и многое другое. Без формального описания структуры документа этим самым документом может воспользоваться только его разработчик. В случае если разработанный XML документ предназначен для передачи во внешний мир, например партнерам по бизнесу, и если к тому же планируется получать в ответ документы, написанные в том же самом формате без определения типов документов ( Document Type Definition , DTD ) не обойтись. Это связано с тем, что для того, что бы обе стороны могли понимать полученную информацию элементы и атрибуты в документах должны употребляться всеми сторонами одинаково. Определения типа документа вносят строгость и точность в правила написания правильно оформленных документов XML . Хранимые в начале файла XML или внешним образом в виде файла *.DTD , определения типов документов описывают информационную структуру документа. В DTD перечисляются возможные имена элементов, определяются имеющиеся атрибуты для каждого типа элементов и описывается вложенность элементов.

XML используется в качестве средства для описания грамматики других языков. И таким образом разрабатывая некоторый язык для написания XML документов в той или иной области нам придется разработать словарь данной области деятельности. DTD по определению содержат всю информацию которая может появиться в XML документе. Все, что входит в проект, должно быть включено в DTD . Таким образом DTD описания в сущности и является таким словарем. Современный мир меняется достаточно динамично поэтому заранее не известно какая информация может потребоваться в дальнейшем и для того что бы не пришлось часто изменять структуру документов обычно разрабатываемый словарь включает в себя все что может понадобиться для конкретных видов бизнеса или промышленности. Это позволяет использовать определения DTD как средство анализа и проектирования. Приложения XML взаимодействуют друг с другом на основе словарей, которые они понимают, так что определение DTD помогает понять, что может описать приложение .

Другое применение DTD это проверка написанного XML документа на корректность . Правильно оформленные документы, написанные в соответствии со всеми правилами, описанными в спецификации XML , не могут быть проверены на предмет ошибок. Пропущенные ошибки могут вызвать повреждение программы обрабатывающей данные документы, либо ввод в систему неверных данных. Но если документ ссылается на определение DTD , то, используя проверяющий на допустимость анализатор можно проверить, есть ли в нашем документе ошибки. Анализатор затребует DTD и убедится, что документ соответствует описанным в нем грамматическим правилам. Анализатор обнаруживает структурные ошибки и ошибки содержания, что намного уменьшает объем проверок, выполняемых логикой приложения.

Написание определений DTD: общие принципы.

Ассоциирование DTD с документом XML

Для связывания декларации DTD с экземпляром документа в версии XML 1.0 предлагается специальная декларация DOCTYPE . Она должна следовать после декларации XML и предшествовать любым элементам документа. Тем не менее, между декларациями XML и DOCTYPE могут находиться комментарии и команды обработки.

Декларация DOCTYPE содержит ключевое слово DOCTYPE , за которым следует имя корневого элемента документа, а затем конструкция с декларациями содержания. Перед разъяснением этого утверждения рассмотрим пример расположения декларации DOCTYPE в экземпляре документа. Ниже приводятся первые три строчки документа XML:

..

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

Декларации XML могут содержать атрибут standalone, принимающий только значения "yes" и "nо". Если значение атрибута равно yes, то внешние для экземпляра документа декларации не влияют на информацию, передаваемую документом использующему его приложению. Значение no показывает, что существуют внешние декларации со значениями, необходимыми для правильного описания содержания документа - например конкретные значения по умолчанию. На практике необязательный атрибут standalone используется редко. Наличие этого атрибута со значением, yes не гарантирует отсутствия внешних зависимостей любого типа. Просто внешние зависимости в этом случае не приведут к ошибке в документе, если не будут включены в обработку. Таким образом, в основном этот атрибут представляет собой знак для анализаторов и других приложений, показывающий, нужно ли им использовать какое-либо внешнее содержание.

Блок внутренней декларации разметки тега DOCTYPE состоит из левой квадратной скобки, списка деклараций и правой квадратной скобки:

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

Внешние DTD в некоторых отношениях более гибкие. В данном случае декларация DOCTYPE состоит из обычного ключевого слова и имени корневого элемента, за которым следует еще одно ключевое слово SYSTEM либо PUBLIC , обозначающее источник внешнего определения DTD , а за ним - локализация этого определения. Если ключевое слово SYSTEM , DTD обязано непосредственно и явным образом находится по указанному URL адресу.

Если внешние DTD переписываются очень часто, они начинают терять свое значение, а это признак плохого первоначального проекта.

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

Стандарт XML 1.0 допускает у декларации PUBLIC наличие как публичного URI , так и системного идентификатора. Если работающее с документом приложение или анализатор не могут найти DTD по идентификатору URI с ключевым словом PUBLIC , оно должно использовать системный идентификатор.

Основные декларации разметки

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

Первые два типа связаны с информацией, которую мы рассчитываем найти в документе XML, - элементами и атрибутами.

Последние два типа используются для поддержки. Особенно облегчают жизнь разработчика словаря XML сущности. Как правило, они состоят из содержания, которое настолько часто используется в DTD или документе, что оправдывает создание специальной декларации. Применение этой декларации напоминает оператор include в языках C/C++ , когда в качестве замены для содержания используется имя.

Нотации описывают содержание, разработанное не на языке XML. Используются они для того, чтобы объявить конкретный класс данных и связать его с внешней программой. Эта внешняя программа становится обработчиком объявленного класса данных. Например, связав с документом изображение в формате JPEG, разработчик желает, чтобы программа приняла и визуализировала двоичные данные в этом формате. Конечно, в таком случае документ зависит от того, какой обработчик имеется в системе, получающей документ. В интересах портативности и переносимости некоторые авторы не приводят ссылки на обработчики. В таком случае нотация превращается просто в механизм набора текста.

XML для описания подобных "самодеятельных" тэгов используются схемы . Они необходимы для того, чтобы:
  • описать, что именно является разметкой;
  • описать точно, что означает разметка.

Наиболее известными языками описания схем являются следующие:

  • DTD (Document Type Definition) - язык определения типа документов, который первоначально использовался в качестве язык описания структуры SGML-документа.
  • XDR (XML Data Reduced) – диалект схемы XML, разработанный Microsoft, который поддерживался в Internet Explorer 4 и 5 версий.
  • XML Schema или просто XSD (язык определения схем XML) – рекомендация консорциума W3C с 2001 года.

Рассмотрим подробнее первые два из них. Третий язык описания схем рассматривается в лабораторной работе 11.

DTD схема

Схема DTD предоставляет шаблон разметки документа, в котором указываются наличие , порядок следования и расположение элементов и их атрибутов в документе XML .

В рамках DTD модель содержимого XML документа можно описать следующим образом:

Каждый элемент документа может иметь один из типов:

Содержание Синтаксис Комментарий
Данные Содержит только текстовые данные
Другие элементы Содержит только дочерние элементы
Смешанное Содержит комбинацию текстовых данных и дочерних элементов
EMPTY Ничего не содержит
ANY Может содержать текстовые данные или дочерние элементы

Атрибуты, находящиеся внутри тэгов документа, описываются отдельно с помощью синтаксиса:

При этом атрибут в DTD может иметь один из трех типов:

  • Строка
  • Маркированные атрибут
  • Атрибута с перечислением

Кроме типа атрибута можно также задавать и его модальность:

Рассмотрим в качестве примера описание атрибутов строкового типа для элемента, описывающего некоторое сообщение:

Если этот элемент содержит атрибуты с перечислением , то их описание может выглядеть, например, следующим образом:

Маркированных атрибуты элемента могут быть четырех типов:

И, наконец, в DTD можно использовать следующие индикаторы вхождения последовательностей:

Символ Пример Описание
, (a, b, c) Последовательное использование элементов списка
| (a | b | c) Используется один из членов списка
date Используется один и только один элемент
? subject ? Необязательное использование (0 или 1 раз)
+ paragraph+ Используется один или несколько раз
* brother* Используется ноль или несколько раз

В качестве примера приведем DTD схему, описывающую структуру электронного почтового ящика:

Используйте для определения структуры XML-документов XML-схемы вместо DTD

XML-схема обладает более мощными возможностями, чем DTD. Для иллюстрации преимуществ использования механизма XML-схем в первых трех листингах сравниваются различные способы представления элементов. В представлена выдержка из XML-документа. В показаны два элемента, объявленные в синтаксисе DTD, а в представлен синтаксис, соответствующий XML-схеме. Обратите внимание, что синтаксис в Листинге 3 подобен синтаксису XML. При использовании схемы, валидирующий парсер может выполнить проверку, является ли элемент InvoiceNo положительным целым числом, и состоит ли ProductID из заданного набора символов (шести цифр и одной буквы от A до Z). Парсер, обрабатывающий DTD-определение, может лишь подтвердить, что данные элементы представляют собой строки.

Листинг 1: Фрагмент XML-документа
123456789 J123456
Листинг 2: Фрагмент DTD, описывающий элементы из Листинга 1
Листинг 3: Фрагмент XML-схемы, описывающий элементы из Листинга 1

Использование пространств имен в XML-схеме

Ограничения DTD

Несмотря на то, что DTD служат разработчикам SGML и HTML в качестве механизма описания структурированной информации вот уже на протяжении 20-ти лет, DTD обладают некоторыми ограничениями по сравнению с XML-схемами.

Согласно DTD элемент может быть представлен одним из трех способов:

  • Текстовая строка
  • Текстовая строка, смешанная с другим дочерним элементом
  • Набор дочерних элементов

DTD не обладает синтаксисом XML и предлагает лишь ограниченную поддержку для типов и пространств имен.

При совместной работе одна сторона может обрабатывать документы других сторон, и разные стороны могут представлять свои элементы данных по-разному. Более того, в отдельном документе им может потребоваться независимо друг от друга ссылаться на элементы с одинаковым именем, созданные разными сторонами. Использование XML-схемы позволяет различать определения с одним и тем же именем при помощи определения разных пространств имен.

Такая XML-схема определяет набор новых имен, таких как имена элементов, типов, атрибутов, групп атрибутов, чьи определения и объявления описаны в схеме. В имена определяются как InvoiceNo , ProductID и ProductCode .

Имена, определенные в схеме принадлежат так называемому целевому пространству имен . Само по себе пространство имен является фиксированным, произвольным именем, которое должно соответствовать синтаксису URL. К примеру, пространство имен для схемы, представленной в , можно задать следующим образом: http://www.SampleStore.com/Account .

Синтаксис объявления пространства имен иногда может сбить с толку. Объявление начинается с http:// , однако оно не ссылается на файл с описанием схемы. На самом деле, ссылка http://www.SampleStore.com/Account вообще не ведет ни на один файл, а только на назначенное имя.

Определения и объявления в схеме могут ссылаться на имена, которые могут принадлежать другим пространствам имен. В данной статье мы ссылаемся на такие пространства имен как на исходные пространства имен . В каждой схеме может быть определено одно целевое пространство имен и возможно множество исходных пространств имен. Вообще, каждое имя в заданной схеме принадлежит некоему пространству имен. Имена пространства имен могут быть довольно длинными, однако их можно сократить при помощи синтаксиса объявления xmlns в документе XML-схемы. Все эти концепции проиллюстрированы в .

Листинг 4: Целевое и исходное пространства имен

В XML-схеме, представленной с , пространством имен targetNamespace является http://www.SampleStore.com/Account , оно содержит имена InvoiceNo , ProductID и ProductCode . Имена schema , element , simpleType , pattern , string и positive-integer принадлежат исходному пространству имен http://www.w3.org/1999/XMLSchema , которое сокращается как xsd путем объявления xmlns . В псевдониме xsd нет ничего особенного, можно выбрать и другое имя. Для удобства и простоты в оставшейся части статьи мы будем использовать префикс xsd для ссылки на пространство имен http://www.w3.org/1999/XMLSchema , пропуская уточнение xsd в некоторых частях кода. В нашем примере targetNamespace является также одним из исходных пространств имен, так как имя ProductCode используется в определении других имен.

Рисунок 1: Пространства имен для Листинга 4
Листинг 5: Множество исходных пространств имен, импорт пространства имен

Определение элементов

Определением элемента заключается в определении его имени и модели контента. В XML-схеме модель контента элемента определяется его типом. Следовательно, элементы в XML-документе могут иметь только значения, которые подходят типам, определенным в его схеме.

Простые типы

Спецификация XML-схемы определяет несколько простых типов для значений, как показано в Таблице 2 -предопределенные простые типы значений.

Тип элемента может быть простым или комплексным (сложным). Элемент простого типа не может содержать другие элементы или атрибуты. Комплексный тип может создавать эффект встраивания элементов в другие элементы или может ассоциировать атрибуты с элементом. До этого момента мы использовали только примеры с простыми типами, определенными пользователем (см. ProductCode). В спецификацию XML-схемы также включены предопределенные простые типы (см. вставку ). Предопределенный простой тип ограничивает значения по их базовому типу. К примеру, значением предопределенного простого типа ProductCode является подмножество значений базового типа string .

Простые, не вложенные элементы имеют простой тип

Элемент, который не содержит атрибутов или других элементов может быть отнесен к простому типу, предопределенному или определенному пользователем, такому как string , integer , decimal , time , ProductCode и т.п.

Листинг 7: Некоторые простые типы элементов

Элементы с атрибутами должны иметь комплексный тип

Теперь попробуем добавить к простому элементу price из атрибут currency . Вы не сможете этого сделать, так как элемент простого типа не может иметь атрибутов. Если вы хотите добавить атрибут, вам необходимо определить price как элемент комплексного типа. В примере из , мы определяем, так называемый анонимный тип , в котором комплексному типу не дается явного имени. Другими словами, атрибут name элемента complexType не определен.

Листинг 8: Элемент комплексного типа

Элементы, содержащие вложенные элементы должны иметь комплексный тип

В XML-документе в элемент могут быть вложены другие элементы. Это требование выражается напрямую в DTD. XML-схема вместо этого определяет элемент и его тип, который может включать объявления других элементов и атрибутов. Пример приведен в .

Таблица 1: Сравнение комплексных типов данных в DTD и XML-схеме

XML-документ
Cool XML<Title> <Author>Cool Guy</Author> </Book> </span><h5>DTD</h5><span> <!ELEMENT Book (Title, Author)> <!ELEMENT Title (#PCDATA)> <!ELEMENT Author (#PCDATA)> </span><h5>XML-схема</h5><span> <element name="Book" type="BookType"/> <complexType name="BookType"> <element name="Title" type="string"/> <element name="Author" type="string"/> </complexType> </span><h5>Листинг 10: Скрытие BookType как локального типа</h5><span> <element name="Title" type="string"/> <element name="Author" type="string"/> <element name="Book"> <complexType> <element ref="Title"/> <element ref="Author"/> </complexType> </element> </span><h2>Выражение сложных ограничений для элементов</h2><p>XML-схема предлагает большую гибкость, чем DTD при выражении ограничений для модели контента элементов. На простейшем уровне, таком как в DTD, вы можете ассоциировать с элементом атрибуты, а также указать, что в нем может появляться последовательность из только одного (1), нуля или более (*), или одного или более (+) элементов из заданного набора элементов. В XML-схеме можно выразить дополнительные ограничения, используя для этой цели, к примеру, атрибуты minOccurs и maxOccurs для элемента element и элементы choice , group и all .</p><h5>Листинг 11: Выражение ограничений для типов элементов</h5><span> <element name="Title" type="string"/> <element name="Author" type="string"/> <element name="Book"> <complexType> <element ref="Title"/> <element ref="Author"/> </complexType> </element> </span><p>В тег Title является опциональным по отношению к тегу Book (такое же правило можно задать и в DTD). Однако здесь также говорится, что в элементе Book должен быть хотя бы один и не более двух элементов Author . Значением атрибутов minOccurs и maxOccurs тега element по умолчанию является 1. Элемент choice указывает на то, что может появиться только один из указанных дочерних элементов. Другой элемент all определяет, что все дочерние элементы могут появляться только один раз, вместе и в любом порядке, или не появляться совсем. В объявляется, что оба <a href="/chto-oznachaet-teg-meta-chto-takoe-metategi-kak-pravilno.html">тега Title</a> и Author должны появляться в Book в любом порядке, или не появляться вообще. Подобные ограничения сложно выразить при помощи DTD.</p><h5>Листинг 12: Указатель того, что у элемента должны быть определены все типы</h5><span> <xsd:element name="Title" type="string"/> <xsd:element name="Author" type="string"/> <xsd:element name="Book"> <xsd:complexType> <xsd:all> <xsd:element ref="Tile"/> <xsd:element ref="Author"/> </xsd:all> </xsd:complexType> </xsd:element> </span><h2>Подведение итогов</h2><p>В <a href="/internet-konverter-iz-vord-v-pdf-onlain-kak-soblyudaetsya.html">данном документе</a> мы раскрыли при помощи <a href="/mysql-inner-join-primery-prostye-primery-join.html">простых примеров</a> наиболее фундаментальные концепции, необходимые для определения структуры элементов при помощи XML-схемы. Доступно также множество других мощных механизмов:</p><ul><li>XML-схема содержит всестороннюю поддержку для наследования типов, позволяя повторно использовать определенные ранее структуры. Такое использование называют <i>аспектами </i>. Вы можете вывести новые типы, представляющие меньшее подмножество значений других типов, к примеру, для определения подмножества по перечислению, диапазону или по совпадению с шаблоном. В одном из примеров данной статьи тип ProductCode был определен с использованием аспекта pattern . В подтипе также можно добавить для базового типа новые элементы и атрибуты.</li><li>Несколько механизмов, позволяющих контролировать <a href="/opredelenie-naznachenie-i-obshchaya-harakteristika-noutbuka.html">общее определение</a> подтипа или заменять его в определенном документе. К примеру, можно указать, что тип InvoiceType (тип номера инвойса) не может содержать подтипы, то есть никто не сможет определить <a href="/novaya-versiya-mobilnogo-vk-chto-novogo-kak-vernut-nuzhnuyu-versiyu-po-instrukciya.html">новую версию</a> InvoiceType . Можно также задать, что в отдельном контексте для типа ProductCode не может быть замещения подтипов.</li><li>Кроме использования подтипов, можно определять эквивалентные типы, то есть значение одного типа может быть замещено значением другого.</li><li>XML-схема обеспечивает механизм для замещения элемента или типа путем объявления их как абстрактных.</li><li>Для большего удобства можно обозначить и задать имена группам атрибутов или элементов. Это позволяет повторно использовать их при последующих обращениях.</li><li>XML-схема предоставляет три элемента – appInfo , documentation и annotation – для использования комментариев, как людьми (documentation) так и приложениями (appInfo)</li><li>Вы можете выразить уникальные ограничения, основывающиеся на определенных атрибутах дочерних элементов.</li> </ul><p>Дополнительную информацию по XML-схемам можно получить из документаций на сайтах W3C (См. ) и dW XML zone. Теперь, когда спецификация XML-схемы получила подтверждение в качестве кандидата на рекомендацию W3C, вы без сомнения можете использовать ее в полной мере.</p> <p>В этой главе мы обсудим о атрибутах DTD. Атрибут дает <a href="/s-chego-nachat-lichnoe-informacionnoe-prostranstvo.html">больше информации</a> о элементе или более точно он определяет свойство элемента. <a href="/xml---atributy.html">Атрибут XML</a> всегда в форме пары им-значения. Элемент может иметь любое число уникально атрибутов.</p> <p>Объявление атрибута очень много подобно к объявлениям элемента в много путей за исключением одного; вместо объявлять позволяемое содержание для элементов, вы объявляете список позволяемых атрибутов для каждого элемента. Эти списки вызваны объявлением ATTLIST.</p> <h2>Синтаксис</h2> <p>Основной синтаксис объявления атрибутов DTD следующим образом:</p><p> <!ATTLIST element-name attribute-name attribute-type attribute-value> </p><p>В вышеуказанном синтаксисе</p> <ul><p>Старт атрибутов DTD с <! Ключевое слово ATTLIST если элемент содержит атрибут.</p> <p><b>элемент-имя </b> определяет имя элемента к которому атрибут применяется.</p> <p><b>атрибут-имя </b> определяет имя атрибута который включен с элемент-именем.</p> <p><b>атрибут-тип </b> определяет тип атрибутов. Мы обсудим больше на этом в следующих разделах.</p> <p><b>атрибут со значением </b> принимает фикчированное значение которое атрибуты должны определить. Мы обсудим больше на этом в следующих разделах.</p> </ul><h2>Пример</h2> <p>Ниже простой пример для объявления атрибута в DTD:</p><p> <?xml version = "1.0"?> <!DOCTYPE address [ <!ELEMENT address (name)> <!ELEMENT name (#PCDATA)> <!ATTLIST name id CDATA #REQUIRED> ]> <address> <name id="123">Tanmay Patil</name> </address> </p><p>Препятствуйте нам пойти через вышеуказанный Код:</p> <ul><p>Начните с объявлением XML с следующим заявлением:</p><p> <?xml version = "1.0"?></p> <p>Немедленно после коллектора <a href="/opredelenie-tipa-dokumenta-dtd-yazyk-xml---documents-type-definitions-dtd.html">XML тип</a> объявление документа, обыкновенно называемое DOCTYPE:</p><p> <!DOCTYPE address [ </p><p>DOCTYPE сообщает парсер что DTD связан с этим документом XML. Объявление DOCTYPE имеет восклицательный знак (!) в начале имени элемента.</p> <p>Следование тело DTD. Здесь мы объявляли элемент и атрибут:</p> </ul> <!ELEMENT address (name)> <!ELEMENT name (#PCDATA)> <p><i>Удостоверение личности </i> атрибута для <i>имени </i> элемента определено как:</p><p> <!ATTLIST name id CDATA #REQUIRED> </p><p>Здесь тип атрибута <i>CDATA </i> и свое значение <i>#REQUIRED </i>.</p> <h2>Правила объявления атрибута</h2> <ul><p>Все атрибуты используемые в документе XML необходимо объявить в определении типа документа (DTD) используя объявление Атрибут-Списка</p> <p>Атрибуты могут только появиться в старт или пустые бирки.</p> <p>Ключевое слово ATTLIST должно находиться в верхушке - случае</p> <p>Никакие <a href="/kak-smenit-imya-vk-bez-proverki-administratora-pochemu.html">двойные имена</a> атрибута не будут позволены внутри список атрибута для, котор дали элемента.</p> </ul><h2>Типы атрибута</h2> <p>Объявляя атрибуты, вы можете определить как обработчик должен отрегулировать данные которые появляются в значение. Мы можем классифицировать атрибут печатаем внутри 3 главным образом категории на машинке:</p> <ul><p>Тип строки</p> <p>Типы Tokenized</p> <p>Перечисленные типы</p> </ul><p>Следовать таблица обеспечивает сводку <a href="/unstable-signal-wifi-what-to-do-if-wifi-does-not-work.html">различных типов</a> атрибута:</p> <table class="table table-bordered"><tr><th>Тип </th> <th> Описание </th> </tr><tr><td>CDATA </td> <td>CDATA данные по характера (текст и не повышение цены). <i>Тип атрибута строки </i>. </td> </tr><tr><td>Удостоверение личности </td> <td>Это уникально обозначение атрибута. Оно не должен появиться больше чем раз. <i>Тип атрибута Tokenized </i>. </td> </tr><tr><td>IDREF </td> <td>Оно использован для того чтобы снабдить ссылками удостоверение личности другого элемента. Оно использован для того чтобы установить элементы связь между. <i>Тип атрибута Tokenized </i>. </td> </tr><tr><td>IDREFS </td> <td>Оно использован для того чтобы снабдить ссылками множественное удостоверение личности. <i>Тип атрибута Tokenized </i>. </td> </tr><tr><td>РЕАЛЬНОСТЬ </td> <td>Она представляет внешнюю реальность в документе. <i>Тип атрибута Tokenized </i>. </td> </tr><tr><td>РЕАЛЬНОСТИ </td> <td>Оно представляет список внешних реальностей в документе. <i>Тип атрибута Tokenized </i>. </td> </tr><tr><td>NMTOKEN </td> <td>Оно подобен к CDATA и атрибут со значением состоит из действительного имени XML. <i>Тип атрибута Tokenized </i>. </td> </tr><tr><td>NMTOKENS </td> <td>Оно подобен к CDATA и атрибут со значением состоит список действительного имени XML. <i>Тип атрибута Tokenized </i>. </td> </tr><tr><td>НОТАЦИЯ </td> <td>Элемент будет снабжен ссылками к объявленной нотации в документе DTD. <i>Перечисленный тип атрибута </i>. </td> </tr><tr><td>Обозначение </td> <td>Оно позволяет определить специфический список значений где одно из значений должно соответствовать. <i>Перечисленный тип атрибута </i>. </td> </tr></table><h2>Объявление атрибута со значением</h2> <p>В пределах каждого объявления атрибута, вы должны определить как значение появится в документ. Вы можете определить если атрибут:, то</p> <ul><p>смогите иметь автоматически принимаемое значение</p> <p>смогите иметь фикчированное значение</p> <li><p>подразумевает</p> </ul><h3>Автоматически принимаемые значения</h3> <p>Он содержит автоматически принимаемое значение. Значения могут быть заключили в одиночные кавычки (") или двойные цитаты (")</p> <b>Синтаксис </b> <p>Следование синтаксис значения:</p><p> <!ATTLIST element-name attribute-name attribute-type "default-value"> </p><p>где значени по умолчанию-<i>значение </i> <a href="/css3-svoistvo-iz-atributov-selektory-css-znachenie-atributa-nachinaetsya.html">определенный атрибут</a> со значением.</p> <b>Пример </b> <p>Следование простой пример объявления атрибута с автоматически принимаемым значением:</p><p> <?xml version = "1.0"?> <!DOCTYPE address [ <!ELEMENT address (name)> <!ELEMENT name (#PCDATA)> <!ATTLIST name id CDATA "0"> ]> <address> <name id="123"> Tanmay Patil </name> </address> </p><p>В этом примере мы имеем элемент <i>имени </i> с <i>удостоверением личности </i> атрибута которого автоматически принимаемое значение <i>0 </i>. Автоматически принимаемое значение заключено в пределах двойных цитат.</p> <h3>ФИКЧИРОВАННЫЕ значения</h3> <p>ключевое слово #FIXED следовать фикчированным значением использовано когда вы хотите определить что атрибут со значением постоянн и не может быть изменен. Общяя польза фикчированных атрибутов определяет номера версии.</p> <b>Синтаксис </b> <p>Следование синтаксис фикчированных значений:</p><p> <!ATTLIST element-name attribute-name attribute-type #FIXED "value" > </p><p>где #FIXED определенный атрибут со значением.</p> <b>Пример </b> <p>Следование простой пример объявления атрибута с ФИКЧИРОВАННЫМ значением:</p><p> <?xml version="1.0"?> <!DOCTYPE address [ <!ELEMENT address (company)*> <!ELEMENT company (#PCDATA)> <!ATTLIST company name NMTOKEN #FIXED "tutorialspoint"> ]> <address> <company name="tutorialspoint"></company> </address> </p><p>В этом примере мы использовали #FIXED ключевого слова где оно показывает что значение «tutorialspoint» единственное значение для <i>имени </i> атрибута <company> элемента. Если мы пробуем изменить атрибут со значением после этого, то он дает ошибку.</p> <p>Следование инвалидный DTD:</p><p> <?xml version="1.0"?> <!DOCTYPE address [ <!ELEMENT address (company)*> <!ELEMENT company (#PCDATA)> <!ATTLIST company name NMTOKEN #FIXED "tutorialspoint"> ]> <address> <company name="abc">we are a free online teaching faculty</company> </address> </p><h3>НЕОБХОДИМЫЕ значения</h3> <p>Когда вы хотите определите что атрибут необходим, используйте ключевое слово #REQUIRED.</p> <b>Синтаксис </b> <p>Следование синтаксис #REQUIRED:</p><p> <!ATTLIST element-name attribute-name attribute-type #REQUIRED> </p><p>где #REQUIRED определенный тип атрибута.</p> <b>Пример </b> <p>Следование простой пример объявления <a href="/dtd---atributy-opredelenie-tipa-dokumenta-dtd.html">атрибута DTD</a> с ключевым словом #REQUIRED:</p><p> <?xml version = "1.0"?> <!DOCTYPE address [ <!ELEMENT address (name)> <!ELEMENT name (#PCDATA)> <!ATTLIST name id CDATA #REQUIRED> ]> <address> <name id="123"> Tanmay Patil </name> </address> </p><p>В этом примере мы использовали ключевое слово #REQUIRED для того чтобы определить что <i>удостоверение личности </i> атрибута необходимо предусмотреть для <i>имени элемент- </i>имени</p> <h3>ПОДРАЗУМЕВАЕМЫЕ значения</h3> <p>Объявляя атрибуты вы должны всегда определять объявление значения. Если атрибут вы объявляете не имеет никакое автоматически принимаемое значение, то не имеет никакое фикчированное значение, и не требует, тогда вы должны объявить что атрибут как <i>подразумевали </i>. #IMPLIED ключевого слова использовано для того чтобы определить атрибут как <i>подразумевали </i>.</p> <b>Синтаксис </b> <p>Следование синтаксис #IMPLIED:</p><p> <!ATTLIST element-name attribute-name attribute-type #IMPLIED> </p><p>где #IMPLIED определенный тип атрибута.</p> <b>Пример </b> <p>Следование простой пример #IMPLIED</p><p> <?xml version = "1.0"?> <!DOCTYPE address [ <!ELEMENT address (name)> <!ELEMENT name (#PCDATA)> <!ATTLIST name id CDATA #IMPLIED> ]> <address> <name /> </address> </p><p>В этом примере мы использовали #IMPLIED ключевого слова по мере того как мы не хотим определить любые атрибуты, котор нужно включить в <i>имени </i> элемента. Оно опционный.</p> <script type="text/javascript"> <!-- var _acic={dataProvider:10};(function(){var e=document.createElement("script");e.type="text/javascript";e.async=true;e.src="https://www.acint.net/aci.js";var t=document.getElementsByTagName("script")[0];t.parentNode.insertBefore(e,t)})() //--> </script><br> <br> <script>document.write("<img style='display:none;' src='//counter.yadro.ru/hit;artfast_after?t44.1;r"+ escape(document.referrer)+((typeof(screen)=="undefined")?"": ";s"+screen.width+"*"+screen.height+"*"+(screen.colorDepth? screen.colorDepth:screen.pixelDepth))+";u"+escape(document.URL)+";h"+escape(document.title.substring(0,150))+ ";"+Math.random()+ "border='0' width='1' height='1' loading=lazy>");</script> </div> </div> <div class="storenumber"></div> <div class="clr5"></div> </div> </div> <div class="bsep"> </div> <div class="recklbigg"> </div> <div class="popular"> <div class="kontrg">Статьи по теме:</div> <div class="clr5"></div> <a href="/chto-oznachaet-keshirovanie-chto-takoe-keshirovannye-dannye-i-keshirovanie.html">Что такое кэшированные данные и кэширование?</a> <a href="/obzor-nakladnyh-shumoizoliruyushchih-naushnikov-xiaomi-mi-headphone-comfort--.html">Удобство использования на высоком уровне</a> <a href="/optimalnyi-diapazon-vosproizvodimyh-chastot-dlya-tylovyh-kolonok-podrobnaya.html">Подробная расшифровка некоторых характеристик акустики</a> <a href="/kak-naiti-ukradennyi-noutbuk-s-pomoshchyu-antivirusa-kak-naiti-poteryannyi.html">Как найти потерянный, украденный ноутбук</a> <a href="/udalit-zashchitu-ot-zapisi-na-fleshke-kak-snyat-s-fleshki-zashchitu-ot.html">Как снять с флешки защиту от записи</a> </div> </div> </div> </div> <div class="lefting"> <div class="search-t"> <form method="get" action="/"> <input type="text" name="s" class="search" /> <input type="image" onclick="submit();" value="Поиск" src="/templates/112stroyblock11UTF8/images/pisi1.jpg" class="toptop" /> </form> </div> <div class="ppip"> <div class="dopletitle">Новое:</div> <div class="clr"></div> <div class="naxodit"> <div class="mainpopular"> <a href="/obzor-dnya-vernee-thor-plus-eshche-tonshe-yarche-i-avtonomnee-smartfon-vernee-thor.html"><img src="https://i0.wp.com/img.mysku-st.ru/uploads/images/02/55/13/2017/10/02/4dd2b3.jpg" / loading=lazy></a> <div class="znal"><a href="/obzor-dnya-vernee-thor-plus-eshche-tonshe-yarche-i-avtonomnee-smartfon-vernee-thor.html">Еще тоньше, ярче и автономнее</a></div> </div> <div class="mainpopular"> <a href="/android-peredat-melodiyu-po-blyutuz-kak-peredat-muzyku-po-blyutuzu.html"><img src="https://i0.wp.com/androiday.ru/uploads/posts/2013-07/1373462923_130.png" / loading=lazy></a> <div class="znal"><a href="/android-peredat-melodiyu-po-blyutuz-kak-peredat-muzyku-po-blyutuzu.html">Как передать музыку по блютузу?</a></div> </div> <div class="mainpopular"> <a href="/kompaniya-huawei---krupneishii-mirovoi-proizvoditel-istoriya-huawei-kak-kitaiskii.html"><img src="https://i1.wp.com/4huawei.ru/wp-content/uploads/2013/02/SHtabkvartira-Huawei.png" / loading=lazy></a> <div class="znal"><a href="/kompaniya-huawei---krupneishii-mirovoi-proizvoditel-istoriya-huawei-kak-kitaiskii.html">История Huawei: Как китайский бренд меняет...</a></div> </div> <div class="mainpopular"> <a href="/zagruzka-sistemy-s-fleshki-bez-ustanovki-sposoby-zagruzki-os-s-fleshki.html"><img src="https://i0.wp.com/vindavoz.ru/uploads/posts/2013-01/thumbs/1357529723_download_tool_2.jpg" / loading=lazy></a> <div class="znal"><a href="/zagruzka-sistemy-s-fleshki-bez-ustanovki-sposoby-zagruzki-os-s-fleshki.html">Способы загрузки ос с флешки</a></div> </div> <div class="mainpopular"> <a href="/svetodiodnaya-podsvetka-dlya-klaviatury-kak-sdelat-na-noutbuke.html"><img src="https://i2.wp.com/composs.ru/wp-content/uploads/2017/07/podsvetka_klaviatury3.jpg" / loading=lazy></a> <div class="znal"><a href="/svetodiodnaya-podsvetka-dlya-klaviatury-kak-sdelat-na-noutbuke.html">Как сделать на ноутбуке подсветку клавиатуры</a></div> </div> <div class="mainpopular"> <a href="/anvil-studio-noty-s-mikrofona-sozdanie-midi-melodii-v-programme-anvil-studio-kak-sozdat.html"><img src="https://i0.wp.com/soft-file.ru/wp-content/uploads/2017/02/anvil-studio-2-150x178.jpg" / loading=lazy></a> <div class="znal"><a href="/anvil-studio-noty-s-mikrofona-sozdanie-midi-melodii-v-programme-anvil-studio-kak-sozdat.html">Создание MIDI мелодии в программе Anvil Studio</a></div> </div> <div class="clr"></div> </div> <div class="dopletitle">Популярное:</div> <div class="clr"></div> <div class="mainpopular"> <a href="/css3-effekty-pri-navedenii-hover-effekty-dlya-izobrazhenii-na-chistom.html"><img src="https://i0.wp.com/design-mania.ru/wp-content/uploads/2018/03/hover-css2.jpg" / loading=lazy></a> <div class="znal"><a href="/css3-effekty-pri-navedenii-hover-effekty-dlya-izobrazhenii-na-chistom.html">Hover-эффекты для изображений на чистом CSS3...</a></div> </div> <div class="mainpopular"> <a href="/varianty-perenosa-strok-varianty-perenosa-strok-kak-pereiti-na-strochku-nizhe.html"><img src="https://i0.wp.com/comp-profi.com/wp-content/uploads/files/150917/perenos-slov-v-yachejke-excel/2.jpg" / loading=lazy></a> <div class="znal"><a href="/varianty-perenosa-strok-varianty-perenosa-strok-kak-pereiti-na-strochku-nizhe.html">Варианты переноса строк Как перейти на строчку...</a></div> </div> <div class="mainpopular"> <a href="/kak-pomenyat-klavishi-mestami-na-klaviature-nadoela-standartnaya.html"><img src="https://i1.wp.com/wincore.ru/uploads/posts/2017-02/thumbs/1487593691_image-33152516.jpg" / loading=lazy></a> <div class="znal"><a href="/kak-pomenyat-klavishi-mestami-na-klaviature-nadoela-standartnaya.html">Надоела стандартная раскладка клавиш?</a></div> </div> <div class="mainpopular"> <a href="/samye-interesnye-prilozheniya-dlya-android-reiting-prilozheniya-dlya-android.html"><img src="https://i1.wp.com/fb.ru/misc/i/gallery/28277/1149459.jpg" / loading=lazy></a> <div class="znal"><a href="/samye-interesnye-prilozheniya-dlya-android-reiting-prilozheniya-dlya-android.html">Приложения для Android: обучающие программы для...</a></div> </div> <div class="mainpopular"> <a href="/power-bi-otchet-s-1s-bi---sistemy-kriterii-dlya-ocenki-kachestva-it-resheniya.html"><img src="https://i0.wp.com/catalog.mista.ru/upload/iblock/326/326821d426d8d447e5ff0b2847b846ff.png" / loading=lazy></a> <div class="znal"><a href="/power-bi-otchet-s-1s-bi---sistemy-kriterii-dlya-ocenki-kachestva-it-resheniya.html">Power bi отчет с 1с. BI - системы. Критерии для...</a></div> </div> <div class="mainpopular"> <a href="/vklyuchit-yusb-v-biose-na-noutbuke-pochemu-ne-rabotayut-usb-porty-na.html"><img src="https://i2.wp.com/f1comp.ru/wp-content/uploads/2018/02/01-1.png" / loading=lazy></a> <div class="znal"><a href="/vklyuchit-yusb-v-biose-na-noutbuke-pochemu-ne-rabotayut-usb-porty-na.html">Почему не работают USB порты на компьютере?</a></div> </div> <div class="clr"></div> </div> <div class="clr20"></div> <div align='center'> </div> </div> </div></div> <div id="nav-container"> <div id="yandex_rtb_R-A-195807-2"></div> <div class="footer"> <noindex> <div class="footercopy"> optest.ru Copyright © 2024 <br /> </div> </noindex> </div> </div></div> </body> </html>