Правила написания xml. Смотреть что такое "XML" в других словарях. Сильные и слабые стороны
Имена.
В языке XML все имена должны начинаться с буквы, символа нижнего подчеркивания (_) или двоеточия (:) и продолжаться только допустимыми для имен символами, а именно они могут содержать только буквы, входящие в секцию букв кодировки Unicode, арабские цифры, дефисы, знаки подчеркивания, точки и двоеточия. Однако имена не могут начинаться со строки xml в любом регистре. Имена, начинающиеся с этих символов, зарезервированы для использования консорциумом W3C . Нужно помнить что так как буквы не ограничены исключительно символами ASCII , то в именах можно использовать слова из родного языка.
Структура XML- документа.
Любой XML -документ состоит из следующих частей:
- Необязательный пролог.
- Тело документа.
- Необязательный эпилог, следующего за деревом элементов.
Рассмотрим каждую из частей более подробно.
Пролог XML- документа.
Документ XML начинается с пролога. В прологе содержатся некоторые указания, предназначенные для анализатора XML и приложений.
Пролог состоит из нескольких частей:
- необязательное объявление XML (XML Declaration) которое заключено между символами ...?>. Объявление содержит:
- пометку xml и номер версии (version) спецификации XML;
- указание на кодировку символов (encoding), в которой написан документ (по умолчанию encoding="UTF-8" );
- параметр standalone который может принимать значения "yes" или "no" (по умолчанию standalone="yes" ). Значение "yes" показывает, что в документе содержатся все требуемые декларации элементов, a "no" - что нужны внешние определения DTD .
Все это вместе может выглядеть следующим образом:
.
Важно отметить, что в объявлении XML только атрибут version является обязательным, все остальные атрибуты могут быть опущены и, следовательно, принимать значения по умолчанию. Так же нужно помнить, что все эти атрибуты следует указывать только в приведенном выше порядке.
- комментарии.
- команды обработки.
- символы пустых пространств.
- необязательное объявление типа документа , DTD (Document Type Declaration ) которое заключено между символами и может занимать несколько строк. В этой части объявляются теги, использованные в документе, или приводится ссылка на файл, в котором записаны такие объявления.
После объявление типа документа так же могут следовать комментарии, команды обработки и символы пустых пространств.
Поскольку все эти части необязательны, пролог может быть опущен.
Тело XML-документа.
Тело документа состоит из одного или больше элементов. В правильно оформленном XML документе элементы формируют простое иерархическое дерево , в котором обязательно присутствует корневой элемент ( root element ) в который вложены все остальные элементы документа. Язык XML налагает на элементы чрезвычайно важное ограничение - они должны быть правильно вложены. Это позволяет достаточно легко вложить один XML - документ в другой не нарушая структуру документа, при этом корневой элемент вложенного документа станет просто одним из элементов документа, в который он вложен. В связи с этим мы сталкиваемся с еще одним ограничением, а именно с тем, что имена элементов должны быть уникальны в пределах документа, поскольку во включенном документе такие же имена, что и во включающем могут иметь совершенно иной смысл. Для решения проблемы совпадающих имен введено понятие пространства имен.
Имя корневого элемента считается именем всего документа и указывается во второй части пролога после слова Doctype . Если определение DTD находится внутри XML - документа, то оно помещается в квадратных скобках после имени корневого элемента:
Но обычно определение DTD составляется сразу для нескольких XML -документов. В таком случае его удобно записать отдельно от документа и тогда вместо квадратных скобок записывается одно из слов System или Public после которого идет адрес в форме URI ( Uniform Resource Identifier ) файла с определением DTD . Для всех практических целей URI считается эквивалентом адреса URL , хотя в принципе это может быть любое уникальное имя. Определение DTD , например, может выглядеть следующим образом:
Пространства имен XML
Поскольку в разных XML -документах могут встретится одни и те же имена тегов и их атрибутов, имеющие совершенно разный смысл, надо иметь возможность их как-то различать. Для этого имена тегов и атрибутов снабжают кратким префиксом, который отделяется от имени двоеточием. Префикс имени связывается с идентификатором, определяющим пространство имен (namespace ). Все имена тегов и атрибутов, префиксы которых связаны с одним и тем же идентификатором, образуют одно пространство имен , в котором имена должны быть уникальны. Префикс и идентификатор пространства имен определяются атрибутом xmlns следующим образом:
В дальнейшем имена тегов и атрибутов, которые мы хотим отнести к пространству имен "http://URI_namespace" , снабжаются префиксом ns, например:
Атрибут xmlns может появиться в любом элементе XML , а не только в корневом. Определенный им префикс можно применять в том элементе, в котором записан атрибут xmlns , и во всех вложенных в него элементах. Более того, в одном элементе можно определить несколько пространств имен. Во вложенных элементах пространство имен можно переопределить, связав префикс с другим идентификатором. Появление имени тега без префикса в документе, использующем пространство имен , означает, что имя принадлежит пространству имен по умолчанию. Префиксы, начинающиеся с символов xml с любым регистром букв, зарезервированы за самим языком XML .
Имя вместе с префиксом называется расширенным или уточненным именем. Часть имени, записанная после двоеточия, называется локальной частью имени.
Сегодня приступим к рассмотрению очень популярного и удобного языка разметки XML . Так как данный формат представления данных очень гибок и универсален, и его можно использовать практически везде, имеется в виду совестно с чем-то. Поэтому начинающему программисту рано или поздно придется столкнуться с этим языком, и неважно чем конкретно Вы занимаетесь, будь-то web-программированием или администрированием баз данных, потому что XML используют все, и Вы его также будете использовать в реализации нужных Вам задач.
Начинать будем как обычно с теории, давайте рассмотрим, что же это за язык, чем он хорош, как им пользоваться и где его используют.
Определение языка XML
XML (eXtensible Markup Language ) – универсальный и расширяемый язык разметки данных, который не зависит от операционной системы и среды обработки. Xml служит для представления неких данных в виде структуры, и эту структуру Вы можете сами разработать или подстроить под ту или иную программу или какой-то сервис. Именно поэтому данный язык называют расширяемый, и в этом является его главное достоинство, за которое его так ценят.
Как Вы знаете, языков разметки существует достаточно много, например, язык HTML , но все они, так или иначе, зависят от обработчика, например, тот же самый html, код которого парсит браузер, является стандартизированным и не расширяемым, там есть четкие теги, синтаксис который нельзя нарушать, а в xml Вы можете сами создавать свои теги, т.е. свою разметку. Главным отличием HTML и XML является то, что html всего лишь описывает разметку для отображения данных, а xml - это абстрактная структура данных, которую можно обработать и отобразить как угодно и где угодно и поэтому сравнивать эти языки не нужно, у них абсолютно разное назначение.
Как уже отметилось выше xml очень распространенный и универсальный язык, посредствам которого практически все приложения, как web, так и просто для компьютера используют его в качестве обмена информации, так как с помощью него можно очень легко обмениваться данными между приложениями или сервисами, которые даже написаны на разных языках. В связи с чем, каждый начинающий программист, который занимается абсолютно любым программированием, должен иметь представление об XML. Если Вы хотите стать web мастером, то Вы просто обязаны знать XML, а как стать WEB Мастером и что для этого нужно знать, мы с Вами уже рассматривали.
Например, у меня однажды встала задача написать некий сервис, который должен по запросу возвращать данные в виде xml, т.е. своего рода разработать серверную часть приложения, а я даже понятия не имел, на чем написан клиент, который будет обрабатывать эти данные, и что, я написал сервис, который возвращал данные в виде xml и все, приложение работало отлично. И это только пример, с которым мне пришлось столкнуться, а теперь представьте, сколько различных организаций, сотрудничает и совестно разрабатывают программное обеспечение и обмениваются данными, и я не удивлюсь, что эти данные будут в виде xml.
Например, у меня однажды была задача написать некий сервис, который должен по запросу возвращать данные в виде xml, т.е. своего рода разработать серверную часть приложения, а я даже понятия не имел, на чем написан клиент, который будет обрабатывать эти данные, и что, я написал сервис, который возвращал данные в виде xml и все, приложение работало отлично. И это только пример, с которым мне пришлось столкнуться, а теперь представьте, сколько различных организаций, сотрудничает и совестно разрабатывают программное обеспечение и обмениваются данными, и я не удивлюсь, что эти данные будут в виде xml.
Также мне один раз пришлось хранить данные xml в базе MS SQL 2008, для того чтобы лучше представлять эти самые данные и обмениваться ими между сервером и клиентской частью приложения, это мы рассматривали в статье - Transact-sql – работа с xml .
Сам по себе язык XML очень простой, и запутаться в нем просто нельзя, вся сложность возникает именно в обработке и взаимодействие xml с другими приложениями, технологиями, т.е. всем тем, что окружает xml, в чем как раз и можно легко запутаться.
Сегодня мы с Вами разговариваем пока только об основах XML, и заострять внимание на технологиях обработки и взаимодействия с этим языком мы не будем, так как это правда, очень объемный материал, но я думаю, в дальнейшем мы продолжим знакомиться с сопутствующими технологиями.
Переходим к практике. И все примеры, которые мы будем рассматривать, я буду писать в Notepad++ только потому, что он очень удобен, но сейчас не будем об этом разговаривать, так как мы уже это рассматривали в статье - Чем хорош Notepad++ для начинающего разработчика.
XML теги
Язык XML для разметки использует теги (теги регистрозависимы ), но не такие теги как в html, а те, которые Вы придумаете сами, но у xml документа есть также четкая структура, т.е. есть открывающий тег и закрывающий, есть вложенные теги и есть, конечно же, значения, которые расположены в этих тегах. Другими словами, все, что нужно для начальных знаний xml - это просто придерживаться этим правилам. Все вместе открывающий, закрывающий тег и значение называется элементом и весь xml документ состоит именно из элементов, которые в совокупности образуют структуру данных. У xml документа может быть только один корневой элемент, это запомните, так как если Вы напишите два корневых элемента, то это будет ошибка.
И пришло время привести пример xml разметки, и первый пример пока для синтаксиса:
<Начало элемента> <Начало вложенного элемента> Значение вложенного элемента Конец вложенного элемента> Конец элемента>
Как видите все довольно просто, и таких вложенных друг в друга элементов может быть очень много.
Теперь давайте приведем пример, настоящего xml документа:
Как видите, я здесь просто привел пример своего рода каталога книг, но я не объявлял этот документ, т.е. не писал XML декларацию, которая говорит приложению, которое будет обрабатывать эти данные, что здесь расположены данные именно xml и в какой кодировке они представлены. Также можно писать комментарии и атрибуты, так давайте приведем пример такого документа:
Где первая строка и есть объявление декларации о том, что это документ XML и его необходимо читать в кодировке UTF-8.
Эти данные без обработки будут выглядеть, например, в браузере (Mozilla Firefox) следующим образом:
Надеюсь, Вы понимаете, что здесь catalog - это корневой элемент, который состоит из элементов book, который в свою очередь состоит из элементов name, author и comment, также для примера я задал несколько атрибутов у элемента catalog и у элемента book.
Для основ я думаю достаточно, так как если мы будем все глубже и глубже погружаться в XML, и во все технологии, которые связаны с этим языком, то тогда эта статья никогда не закончится. Так что на сегодня это все. Пока!
20. Языки описания cхем XML
DTD схемы. Недостатки DTD схем. XDR схемы. Элементы и атрибуты XDR схем.
Идея создания собственных тэгов, имеющих специальное значение и помогающих описать содержание документа, сама по себе просто замечательна. Но если каждый пользователь может создавать свои собственные описания, каким образом их распознавать? С этой целью в спецификации 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 документа можно описать следующим образом:
Каждый элемент документа может иметь один из типов:
Синтаксис |
Комментарий |
|
Содержит только текстовые данные |
||
Другие элементы |
Содержит только дочерние элементы |
|
Смешанное |
Содержит комбинацию текстовых данных и дочерних элементов |
|
Ничего не содержит |
||
Атрибуты, находящиеся внутри тэгов документа, описываются отдельно с помощью синтаксиса:
имя_элемента имя_атрибута1 (тип) значение_по_умолчанию
…………………………………………………………………………………...
имя_элемента имя_атрибутаN (тип) значение_по_умолчанию >
При этом атрибут в DTD может иметь один из трех типов:
Маркированные атрибут
Атрибута с перечислением
Кроме типа атрибута можно также задавать и его модальность:
Рассмотрим в качестве примера описание атрибутов строкового типа для элемента, описывающего некоторое сообщение:
number CDATA #REQUIRED
date CDATA #REQUIRED
from CDATA #FIXED
status CDATA #IMPLIED>
Если этот элемент содержит атрибуты с перечислением, то их описание может выглядеть, например, следующим образом:
number ID #REQUIRED
from CDATA #REQUIRED
alert (low | normal | urgent) "normal">
Маркированных атрибуты элемента могут быть четырех типов:
И, наконец, в DTD можно использовать следующие индикаторы вхождения последовательностей:
Символ |
Пример |
Описание |
Последовательное использование элементов списка |
||
Используется один из членов списка |
||
Используется один и только один элемент |
||
Необязательное использование (0 или 1 раз) |
||
Используется один или несколько раз |
||
Используется ноль или несколько раз |
В качестве примера приведем DTD схему, описывающую структуру электронного почтового ящика:
Исходный XML документ, удовлетворяющий данной схеме, может выглядеть, например, так:
Remind me about meeting.
Обратите внимание на 2-ю строчку документа, в которой указывается внешняя ссылка на файл, содержащий DTD схему.
В принципе, DTD допускает два способа использования в XML документе.
Объявление внутренней схемы:
Объявление внешней схемы:
В заключение укажем на следующие недостатки DTD схем:
Не являются экземплярами XML. Требуется изучение совершенно другого языка.
Не предоставляют контроль за типами данных, за исключением самых простых текстовых данных.
Не являются экземплярами XML, поэтому их нельзя легко расширить или преобразовать к другим языкам разметки – HTML или DHTML.
Не обеспечивают поддержки пространств имен XML.
XDR схема
XML-Data – полное имя языка описания схем, предложенного Майкрософт, а XML-DataReduced– это "часть" полной рекомендации. Схема XDR - это экземпляр XML, т.е. соответствует всем синтаксическим правилам и стандартам XML.
Реализуя проверки данных на уровне документа с помощью схемы, приложения, генерирующие и принимающие транзакции, можно оптимизировать для обеспечения максимального быстродействия. Соответствие полей и правильность записей проверяются на уровне экземпляров XML.
Корневым элементом в схеме XDR всегда является элемент Schema:
name="имя_схемы" xmlns="urn:schemas-microsoft-com:xml-data"
xmlns:dt="urn:schemas-microsoft-com:datatypes">
<-- Объявления других элементов -->
Элемент ElementType имеет синтаксис:
content="{empty | texOnly | eltOnly | mixed}">
dt:type "datatype"
model="{open | closed}"
order="{one | seq | many}"
Элемент ElementType может иметь следующие атрибуты:
Имя атрибута |
Описание |
Имя элемента |
|
Тип данных элемента |
|
Может принимать значения: |
|
Open – разрешено использовать элементы, не определенные в схеме |
|
Closed – запрещено использовать элементы, не определенные в схеме |
|
Порядок следования дочерних элементов в экземпляре XML. Допустимые значения: |
|
one – предполагается наличие одного документа |
|
many – любое количество элементов в любом порядке |
|
seq – элементы указываются в строго заданном порядке. |
качестве дочерних элементов для ElementType можно использовать следующие:
Имя элемента |
Описание |
Объявляет дочерний элемент |
|
Обеспечивает описание элемента ElementType |
|
Обеспечивает тип данных элемента ElementType |
|
Определяет порядок следования элементов |
|
Определяет атрибут |
|
Определяет сведения о дочернем элементе AttributeType |
Для объявления атрибутов используется синтаксис:
default="default-value" dt:type="primitive-type" dt:values="enumerated-values" required="{yes|no}" В
свою очередь элемент AttributeType
может иметь атрибуты: Значение
Описание
Значение
по умолчанию Один
из следующих типов: entity,
entities,
enumeration,
id,
idref,
nmtoken,
nmtokens,
notation,
string Допустимые
значения Имя
атрибута Указывает
на обязательное наличие атрибута в
описании Синтаксис
для описания элемента attribute выглядит
следующим образом: default="default-value" type="attribute-type" а
его возможные значения могут быть
такими: Значение
XML (Extensible Markup Language) - это новый
SGML-производный язык разметки
документов, позволяющий
структурировать информацию
разного типа, используя для этого
произвольный набор инструкций.
Разработчиков Интернет приложений,
пытающихся на практике
использовать новую технологию,
могут заинтересовать конкретные
вопросы, связанные с проблемами
создания, обработки XML-документов,
их отображения на стороне клиента.
В этой статье дается краткое
представление о том, что
представляет собой и для чего нужен
XML-документ и на практических
примерах иллюстрируются некоторые
простые, но пока, к сожалению, мало
описанные механизмы его обработки.
Что такое XML
Сегодня XML может
использоваться в любых
приложениях, которым нужна
структурированная информация - от
сложных геоинформационных систем,
с гигантскими объемами
передаваемой информации до обычных
"однокомпьютерных" программ,
использующих этот язык для
описания служебной информации. При
внимательном взгляде на окружающий
нас информационный мир можно
выделить множество задач,
связанных с созданием и обработкой
структурированной информации, для
решения которых может
использоваться XML: XML-документ представляет собой
обычный текстовый файл, в котором
при помощи специальных маркеров
создаются элементы данных,
последовательность и вложенность
которых определяет структуру
документа и его содержание.
Основным достоинством XML
документов является то, что при
относительно простом способе
создания и обработки (обычный текст
может редактироваться любым
тестовым процессором и
обрабатываться стандартными XML
анализаторами), они позволяют
создавать структурированную
информацию, которую хорошо
"понимают" компьютеры. Как создать XML документ?
Для создания XML документа в
простейшем случае вам не
понадобится ничего кроме обычного
текстового редактора (по мнению
многих Web-дизайнеров, лучший
инструмент для создания Web-страниц).
Вот пример небольшого XML-документа,
используемого вместо обычной
записной книжки:
При создании собственного
языка разметки вы можете
придумывать любые названия
элементов, (почти любые, т.к. список
допустимых символов ограничен и
приведен в ), соответствующих контексту их
использования. В нашем примере
приведен лишь один из
многочисленных способ создания
структуры дневника. В этом и
заключается гибкость и
расширяемость XML-производных
языков - они создаются
разработчиком "на лету",
согласно его представлениям о
структуре документа, и могут затем
использоваться универсальными
программами просмотра наравне с
любыми другими XML-производными
языками, т.к. вся необходимая для
синтаксического анализа
информация заключена внутри
документа. Создавая новый формат,
необходимо учитывать тот факт, что
документов, "написанных на XML",
не может быть в принципе - в любом
случае авторы документа для его
разметки используют основанный на
стандарте XML (т.н. XML-производный)
язык, но не сам XML. Поэтому при
сохранении созданного файла можно
выбрать для него какое-то
подходящее названию расширение
(например, noteML). XML может использоваться вами
для создания документов какого-то
определенного типа и структурой,
необходимой для конкретного
приложения. Однако если сфера
применения языка оказывается
достаточно широкой и он начинает
представлять интерес для большого
числа разработчиков, то его
спецификация вполне может быть
представлена на рассмотрение в W3C и
после согласования всеми
заинтересованными сторонами,
утверждена консорциумом в качестве
официальной рекомендации. Надо заметить, что процесс
появления новой спецификации очень
длителен и сложен. Любой документ,
предлагаемый W3C, прежде чем стать
стандартом проходит несколько
этапов. Сначала пожелания и
рекомендации, поступающие от
различных компаний, участвующих в
его разработке, оформляются в виде
принятого к сведению замечания (Note),
своеобразного протокола о
намерениях. Информация, изложенная
в таких документах предназначена
только для обсуждения членами
консорциума и никто не дает
гарантии того, что эти замечания
потом станут рекомендацией. Следующей этапом продвижения
документа является рабочий вариант
спецификации, который составляет и
изменяет в дальнейшем специально
созданная рабочая группа (Working Group),
в состав которой входят
представители заинтересовавшихся
идеей компаний. Все изменения,
вносимые в этот документ
обязательно публикуются на сервере
консорциума www.w3.org и до тех пор, пока
рабочий вариант не станет
рекомендацией, он может служить для
разработчиков лишь "путеводной
звездой", с которой компания
может сверять свои планы, но не
должна использовать при разработке
ПО. В том случае, если стороны
договорились по всем основным
вопросам и существенных изменений
в документ больше вносится, рабочий
вариант становится Предложенной
Рекомендацией и после голосования
членами рабочей группы может стать
уже Официальной Рекомендаций W3C,
что по статусу соответствует
стандарту в WWW. XML-генераторы
XML документы могут служить
промежуточным форматом для
передачи информации от одного
приложения к другому (например, как
результат запроса к базе данных),
поэтому их содержимое иногда
генерируется и обрабатывается
программами автоматически. Далеко
не всегда XML документ нужно
создавать вручную. Пусть, например, нашей задачей
является создание формата хранения
данных регистрации каких-то
происходящих в системе событий
(log-файла). В простейшем случае можно
ограничиться фиксированием
успешных и ошибочных запросов к
нашим ресурсам - в таком документе
должна присутствовать информация о
времени произошедшего события, его
результате (удача/ошибка), IP адресе
источника запроса, URI ресурса и коде
результата. Наш XML документ может
выглядеть следующим образом:
Структура документа довольно
проста - корневым в данном случае
является элемент log, каждое
произошедшее событие фиксируется в
элементе event и описывается при
помощи его атрибутов(date - время и
result - тип события) и внутренних
элементов (method - метод доступа, ip-from -
адрес источника, url-to -
запрашиваемый ресурс, response - код
ответа). Генерацией этого документа
может заниматься, например, модуль
аутентификации запросов в систему,
а использованием - программа
обработки регистрационных данных
(log viewer). Что такое DTD?
Итак, мы создали XML документ и
убедились, что набор используемых
при этом тэгов позволяет
осуществлять любые манипуляции с
нашей информацией. В таком случае,
для того, чтобы утвердить правила
нашего нового языка, т.е. список
допустимых элементов, их возможное
содержимое и атрибуты, мы должны
создать DTD - определения (на момент
написания статьи спецификация
для XMLдокументов еще не утверждена
и пока DTD являются единственным
стандартным способом описания
грамматики). Небольшой пример для
нашего XML-документа:
Сохраните этот файл под именем
log.dtd и включите в XML-документ новую
строчку:
Теперь верифицирующий
XML-анализатор при обработке
документа будет сверять порядок
определения элементов и их
атрибутов с тем, как это указано у
нас в DTD-нотациях и в случае
нарушения внутренней структуры
(которая определяет
"семантику" документа)
выдавать сообщение об ошибке. Что такое Namespaces?
Как уже упоминалось ранее, вся
прелесть использования XML
заключается в возможности
придумывания собственных тэгов,
названия которых наиболее полно
соответствовали бы предназначению.
Но фантазия и словарный запас людей
не безграничны, поэтому нет
абсолютно никакой гарантии того,
что данные вами имена элементов не
будут использованы кем-то еще. До
тех пор, пока в вашем приложении
обрабатываются только собственные
XML-документы, никаких проблем не
возникнет. Но вполне возможна
ситуация, когда один и тот же
документ будет содержать
информацию для нескольких
обработчиков одновременно. В этом
случае названия некоторых
элементов или их атрибутов могут
совпасть, что вызовет либо ошибку в
XML- анализаторе, либо неправильное
представление документа. Например,
в нашем случае, элемент event вполне
мог бы быть использован для записи
других событий и обрабатываться
другим приложением. Чтобы исправить эту ситуацию,
мы должны определить уникальные
названия элементов и их атрибутов,
"дописывая" к их обычным
именам некоторый универсальный
неповторяющийся префикс. Для этого
применяется механизм Namespaces (
Namespaces была официально утверждена W3C
в январе 1999 года и сегодня является
частью стандарта XML). Согласно этой
спецификации, для определения
"области действия" тэга (на
самом деле этот термин, широко
используемый в обычных языках
программирования, неприменим в XML,
потому что как такового множества,
на котором могла бы быть построена
"область", внутри
структурированного XML документа
нет) необходимо определить
уникальный атрибут, описывающий
название элемента, по которому
анализатор документа сможет
определить, к какой группе имен оно
относится (Namespace идентификаторы
могут применяться для описания
уникальных названий как элементов,
так и их атрибутов). В нашем
последнем примере это может быть
сделано так: Уникальность атрибуту имени
обеспечивает использование в
качестве его значения некоторых
универсальных идентификаторов
ресурсов (например, URI или ISBN) . Полную информацию по
использованию Namespace вы можете найти
в этого стандарта. В
дальнейшем, для упрощения примеров,
мы будем Namespace - описания
пропускать. Инструментарий
Обработка XML-документов
Основным сдерживающим
фактором в продвижении XML
технологии в Web на сегодняшний день
является отсутствие полной
поддержки этого формата всеми
производителями броузеров -
программ, наиболее часто
используемых на стороне клиента.
Выходом из создавшейся ситуации
может стать вариант, при котором
обработкой XML документов
занимается серверная сторона
Используя любой существующий
XML-анализатор, можно формировать
необходимую информацию уже на
сервере и посылать клиенту
нормальный HTML-документ. Однако
такой способ, конечно, менее гибок,
и позволяет использовать XML
технологию лишь для хранения
структурированной информации, но
не для ее динамического изменения
на стороне клиента. В августе 1997 RFC 2376 были
утверждены MIME типы для XML-ресурсов:
text/xml и application/xml. Поэтому XML
документы могут передаваться по HTTP
и отображаться программой
просмотра также, как и обычные HTML-
страницы. Для этого нужно немного
изменить конфигурацию Web-сервера (в
Apache - добавить в файл mime.types строчку
"text/xml xml ddt"), а на стороне
клиента иметь броузер,
поддерживающий стилевые таблицы
или JavaScript. Сегодня такими
броузерами являются Microsoft Internet Explorer
5, первый броузер, поддерживающий
спецификацию XML 1.0 и стилевые
таблицы XSL; броузер Amaya,
предлагаемый консорциумом
специально для тестовых целей ()
и поддерживающий практически все
разрабатываемые стандарты W3C.
Поддержка XML также планируется в
будущих версиях Netscape Navigator. Объектная модель документа
DOM
Одним из самых мощных
интерфейсов доступа к содержимому
XML документов является - DOM. Объектная модель XML документов
является представлением его
внутренней структуры в виде
совокупности определенных
объектов. Для удобства эти объекты
организуются в некоторую
древообразную структуру данных -
каждый элемент документа может
быть отнесен к отдельной ветви, а
все его содержимое, в виде набора
вложенных элементов, комментариев,
секций CDATA и т.д. представляется в
этой структуре поддеревьями. Т.к. в
любом правильно составленном
XML-документе обязательно определен
главный элемент, то все содержимое
можно рассматривать как поддеревья
этого основного элемента,
называемого в таком случае корнем
дерева документа. Для следующего
фрагмента XML документа:
Объектное представление
структуры документа не является
чем-то новым для разработчиков. Для
доступа к содержимому HTML страницы в
сценариях давно используется
объектно-ориентированный подход, -
доступные для Java Script или VBScript
элементы HTML документа могли
создаваться, модифицироваться и
просматриваться при помощи
соответствующих объектов. Но их
список и набор методов постоянно
изменяется и зависит от типа
броузера и версии языка. Для того,
чтобы обеспечить независимый от
конкретного языка
программирования и типа документа
интерфейс доступа к содержимому
структурированного документа в
рамках W3 консорциума была
разработана и официально
утверждена спецификация объектной
модели DOM Level 1. DOM - это спецификация
универсального платформо- и
программно-независимого доступа к
содержимому документов и является
просто своеобразным API для их
обработчиков. DOM является
стандартным способом построения
объектной модели любого HTML или XML
документа, при помощи которой можно
производить поиск нужных
фрагментов, создавать, удалять и
модифицировать его элементы. Для описания
интерфейсов доступа к содержимому
XML документов в спецификации DOM
применяется платформонезависимый
язык IDL и для использования их
необходимо "перевести" на
какой-то конкретный язык
программирования. Однако этим
занимаются создатели самих
анализаторов, нам можно ничего не
знать о способе реализации
интерфейсов - с точки зрения
разработчиков прикладных программ
DOM выглядит как набор объектов с
определенными методами и
свойствами. В следующем разделе мы
вкратце рассмотрим объектную
модель Microsoft Internet Explorer 5, доступную
из Java Script и VBScript сценариев.