Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Конструкции DTD: объявление сущности, объявление обозначения




Ссылки на сущности используются как краткие обозначения для громоздких или часто повторяющихся фрагментов документа XML. Сами сущности (entity), подставляемые в документ вместо ссылок, объявляются в описании DTD.

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

внутренние сущности — задаются при объявлении сущности;

внешние сущности — содержатся в отдельных файлах или встроены в программу-анализатор;

параметризованные сущности — используются только внутри описания DTD.

Объявление внутренней сущности начинается с символов <!ENTITY, после которых идет имя сущности. Через пробел записывается сама сущность — ее значение в кавычках. Например:

<!ENTITY author "Александр Сергеевич Пушкин">

После такого объявления программа-анализатор, увидев в документе ссылку на сущность &author; подставит вместо нее имя, отчество и фамилию великого поэта. Ссылку на сущность можно применять тут же, в описании DTD, уже в следующем объявлении:

<!ENTITY cover "Автор &author;. Название &title;.">

Конечно, надо следить за тем, чтобы сущности author, title и cover не определялись друг через друга, образуя бесконечную рекурсию.

Такие сущности называются внутренними, потому что для их объявления не нужен никакой внешний объект. Сущность представлена тут же, в этом же объявлении. Сущности могут быть и внешними. Для внешних сущностей указывается только место их располо-жения в виде адреса URL Перед указанием адреса записывается одно из слов SYSTEM или PUBLIC. Вот примеры объявления внешних сущностей:

<!ENTITY tel

SYSTEM "http://www.tty.com/TelDef.xml">

<!ENTITY tel

PUBLIC "-//DTD/Teletanomy//TEXT The new teletanomy definition//EN" "http://www.tty.com/TelDef.xml">

Разница между пометками SYSTEM И PUBLIC заключается в том, что после слова PUBLIC идет какое-то общеизвестное объявление. Обычно здесь записывается известная ссылка, введенная консорциумом W3C или другой организацией. Часто значение такой ссылки встраивается прямо в программу-анализатор. Если программа-анализатор не найдет эту ссылку, то она воспользуется адресом URL, идущим за ссылкой.

Объявление параметризованных сущностей, используемых только внутри описания DTD, выполняется точно так же, как объявление внутренних и внешних сущностей, только между началом объявления <!ENTITY и именем сущности вставляется знак процента, отделенный пробелами:

<!ENTITY % lang "ru_RU">

Ссылка на параметризованную сущность начинается не с амперсанда, а со знака процента, в примере — %lang;. Ссылка %lang,- будет использована в описании DTD для обозначения языка и территории. Введение этой ссылки удобно тем, что при смене языка надо будет поменять значение ru_RU только в одном месте описания.

Все сущности можно разделить и по другому признаку — разбираемые (parsed) и не разбираемые (unparsed) программой-анализатором. Разбираемые сущности представляют собой фрагмент документа XML или целый документ и подлежат обработке программой-анализатором после подстановки их вместо ссылки на сущность. После подстановки разбираемая сущность становится просто частью документа XML.

Обозначение объявляется подобно сущности. Обозначения могут быть внутренними и внешними. При объявлении внутренних обозначений после символов <! NOTATION записывается имя обозначения, затем в кавычках — его расшифровка.

При объявлении внешних обозначений используются пометки SYSTEM ИЛИ PUBLIC, причем за словом PUBLIC не обязательно должна следовать общеизвестная ссылка, так что слова SYSTEM И PUBLIC здесь равнозначны.

<!NOTATION image-gif SYSTEM "viewer.ехе">

Это объявление связывает обозначение image-gif с программой обработки изображений, находящейся в файле viewer.exe.

Описание DTD записной книжки. В первой строке слово ELEMENT означает, что элемент notebook может содержать вложенные элементы person, которые перечисляются в круглых скобках. Звездочка после закрывающей скобки означает, что их может быть сколько угодно.

Во второй строке объявляется элемент person. Он может содержать элементы name, birthday, address, phone-list. Порядок перечисления этих вложенных элементов в скобках должен соответствовать порядку их появления в документе.

Элемент name обязателен и может встретиться внутри элемента person только один раз.

Элементы birthday и phone-list необязательны, но могут встретиться только один раз.

Элемент address необязателен, его можно записать несколько раз.

Слово EMPTY в третьей строке листинга 2.1 означает, что элемент name — пустой.

Далее, слово ATTLIST начинает описание списка атрибутов элемента name. Для каждого атрибута указывается имя, тип и обязательность указания атрибута. Существует всего девять типов атрибута, они приведены выше, но чаще всего употребляется тип CDATA, означающий произвольную строку символов Unicode, или перечисляются значения типа. Так сделано в описании атрибута type элемента city, принимающего одно из трех значений: город, поселок или деревня. В кавычках показано значение по умолчанию город.

Объявление атрибута surname заканчивается пометкой #REQUIRED, означающей, что атрибут надо записывать обязательно. Атрибуты first и second помечены # IMPLIED. ЭТИ атрибуты необязательны. У атрибута type вместо этих пометок задано значение по умолчанию город. Такое объявление делает атрибут type необязательным.

При объявлении элемента phone-list звездочка поставлена после имени каждого вложенного элемента. После такого объявления вложенные элементы work-phone и home-phone можно записывать в документе XML в любом порядке.

Размещение описания DTD. Программы-анализаторы XML

Описание DTD можно занести в отдельный файл, например ntb.dtd, указав его имя во второй части пролога DOCTYPE. Можно включить описание непосредственно во вторую часть пролога XML-файла, заключив его в квадратные скобки.

Программы-анализаторы XML

После того как создано описание DTD реализации XML и написан документ, размеченный тегами этой реализации, следует проверить пра­вильность их написания и соответствие их друг другу. Для этого есть специ­альные программы — проверяющие анализаторы (validating parsers). Все фир­мы, разрабатывающие средства для работы с XML, выпускают бесплатные или коммерческие проверяющие анализаторы. Например, фирма IBM вы­пускает анализатор xml4j, написанный на языке Java. Он входит в состав сервера приложений WebSphere, но его можно использовать и отдельно, свободно загрузив с адреса http://www.alphaworks.ibm.com/ архивы xml4j.jar, xerces.jar и xercesSamples.jar.

Проверяющий анализатор фирмы Sun Microsystems, написанный тоже на языке Java, содержится в пакете Java-классов JAXP (Java API for XML Processing), входящем в состав и J2SDK Standard Edition, и J2SDK Enterprise Edition. Кроме того, этот пакет можно загрузить отдельно или в составе па­кета Java XML Pack с адреса http://java.sun.com/xml/.

Корпорация Microsoft поставляет проверяющий анализатор MSXML (Microsoft XML Parser), доступный по адресу http://msdn.microsoft.com/xml/.

У корпорации Oracle есть полный набор средств для работы с XML, в том числе и анализатор Oracle XML Parser. Его можно получить по адресу http://otn.oracle.com/tech/xml/.

Фирма Mind Electric занимается разработкой программных продуктов, ис­пользующих XML. Ее анализатор Electric XML и другие продукты находятся по адресу http://www.themindelectric.com/products/xml/.

Большую популярность получил анализатор ХР Джеймса Кларка, который можно найти по адресу http://www.jclark.com/xml/xp/.

Есть еще множество проверяющих анализаторов, но лидером среди них яв­ляется, пожалуй, Apache Xerces 2, входящий во многие средства обработки документов XML, выпускаемые другими фирмами. Он создан сообщест­вом Apache Software Foundation и свободно доступен по адресу http:// xml.apache.org/xerces2-j/.

Анализаторы.

Помимо определения синтаксиса XML, в рекомендации W3C описан так же процессор или анализатор XML. Существуют два типа анализаторов:

· non-validating (не проверяющий на допустимость) - анализатор просто проверяет, чтобы объект данных был правильно оформленным документом XML

· validating (проверяющий на допустимость) - с помощью определения DTD анализатор проверяет допустимость формы и содержания правильно оформленного документа XML

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

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...