Главная » Java, Web, XML » Описание DTD

0

нашей адресной книжки записано в листинге 1.3. ‘ Листинг 1.3. документа XML

<!ELEMENT notebook (person) *>

<!ELEMENT person (name, birthday?, address*, phone-list?) > <! ELEMENT name EMPTY> <!ATTLIST name

first CDATA #IMPLIED second CDATA #IMPLIED surname CDATA <!ELEMENT birthday (#PCDATA)> <!ELEMENT address (street, city, zip) ?> <!ELEMENT street (#PCDATA)> <!ELEMENT city (#PCDATA)> <!ATTLIST city

type (город | поселок I деревня) "город"> <!ELEMENT zip (#PCDATA) >

<!ELEMENT phone-list (work-phone*, home-phone*)> <!ELEMENT work-phone (#PCDATA)> home-phone

Как видите, описание DTD почти очевидно. Оно повторяет приведенное выше словесное описание. Первое слово element означает, что элемент может содержать тело с вложенными элементами. Вложенные элементы перечисляются в круглых скобках. Порядок перечисления вложенных элементов в скобках должен соответствовать порядку их появления в документе. Слово EMPTY в третьей строке листинга 1.3 означает пустой элемент.

Слово attlist начинает описание списка атрибутов элемента. Для каждого атрибута указывается имя, тип и обязательность указания атрибута. Типов атрибута всего девять, но чаще всего употребляется тип cdata (Character DATA), означающий произвольную строку символов Unicode, или перечисляются значения типа. Так сделано в описании атрибута type тега <city>, принимающего одно из трех значений город, поселок или деревня. В кавычках показано значение по умолчанию город.

Обязательность указания атрибута отмечается одним из трех слов:

•            # REQUIRED — атрибут обязателен,

•            # IMPLIED — атрибут необязателен,

•            # fixed — значение атрибута фиксировано, оно задается в DTD.

Первым словом могут быть, кроме слов element или attlist, слова ANY, MIXED или entity. Слова ANY и MIXED, означают, что элемент может содержать и простые данные и/или вложенные элементы. Слово ENTITY означает обозначение или адрес данных, записанный в описании DTD, так называемую сущность.

После имени элемента в скобках записываются вложенные элементы или тип данных, содержащихся в теле элемента. Тип pcdata (Parsed Character DATA) означает строку символов Unicode, которую надо интерпретировать.

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

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

<!doctype notebook [ ]>

После того как создано описание DTD нашей реализации XML и написан документ, размеченный тегами этой реализации, следует проверить правильность их написания. Для этого есть специальные программы — проверяющие анализаторы (validating parsers). Все фирмы, разрабатывающие средства для работы с XML, выпускают бесплатные или коммерческие проверяющие анализаторы. Например, фирма IBM выпускает анализатор xml4j, входящий в состав сервера приложений WebSphere. Его можно использовать и отдельно, свободно загрузив с адреса     архи

вы xml4j.jar, xerces.jar и xercesSamples.jar.

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

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

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

Ограниченные средства DTD не позволяют полностью описать структуру документа XML. В частности, описание DTD не указывает точное количество повторений вложенных элементов, оно не задает точный тип тела элемента. Например, в листинге 1.3 из описания DTD не видно, что в элементе <birthday> содержится дата рождения. Эти недостатки DTD привели к появлению других схем описания документов XML. Наиболее развитое описание дает язык XSD. Мы будем называть описание на этом языке просто схемой XML (XML Schema).

Посмотрим, как создаются схемы XML, но сначала познакомимся еще с одним понятием XML — пространством имен.

Литература:

Хабибуллин И. Ш. Разработка Web-служб средствами Java. — СПб.: БХВ-Петербург, 2003. — 400 с: ил.

По теме:

  • Комментарии