Перейти на главную страницу
Но, в отличие от HTML, XML-теги идентифицируют данные, а не способ их отображения. Если HTML-тег указывает, например, "отобразить эти данные жирным шрифтом" (...), XML-тег действует как имя поля в вашей программе. Он ставит метку на часть данных, которые идентифицирует (например:
Примечание: Поскольку идентификация данных происходит по их значению (как их интерпретировать и что необходимо с ними сделать), XML иногда описывается как механизм для определения семантики (значения) данных.
Так же как при определении имен полей структуры данных вы можете использовать любые XML-теги, имеющие значение для данного приложения. Естественно, для того чтобы несколько приложений использовали одни и те же XML-данные, они должны договориться об именах тегов.
Вот пример XML-данных, которые можно использовать в почтовом приложении:
<to>[email protected]</to>
<from>[email protected]</from>
<subject>XML Is Really Cool</subject>
<text>
How many ways is XML cool? Let me count the ways...
Примечание: В этом руководстве жирный шрифт используется для выделения текста, на который мы хотим обратить ваше внимание. XML не использует жирный шрифт!
Теги в этом примере идентифицируют сообщение в целом, адреса отправителя и получателя, тему и текст сообщения. Так же как и в HTML тег
И снова, так же как в HTML, пробелы не существенны, так что вы можете форматировать данные для удобства чтения и в то же время легко обрабатывать их в программе. В отличие от HTML, однако, в XML вы можете легко искать в наборе данных сообщения, содержащие в своей теме слово "cool", поскольку XML-теги идентифицируют содержимое данных, а не их представление.
How many ways is XML cool? Let me count the ways...
Как и в HTML, после имени атрибута следуют знак равенства и значение атрибута, а несколько атрибутов разделяются пробелами. Однако, в отличие от HTML, запятые между атрибутами в XML не игнорируются; если они существуют, генерируется ошибка.
Поскольку вы можете создать такую структуру данных как 1.1.2 Пустые теги
Одним из действительно больших различий между HTML и XML является то, что XML-документ всегда обязан быть формально-правильным. Существует несколько правил, которые определяют корректность документа, но одним из самых важных является следующее правило - каждый тег должен иметь завершающий тег. То есть, в XML тег является обязательным. Элемент
Примечание: Еще одним важным аспектом формально-правильного документа является полная вложенность всех тегов. То есть вы можете записать
Однако, иногда есть смысл использовать тег, стоящий особняком. Например, вы возможно захотите добавить тег "flag", который помечает важное сообщение. Такой тег не имеет никакого содержимого, и называется "пустым тегом". Вы можете создать пустой тег, закончив его знаками /> вместо >. Например, следующее сообщение содержит такой тег:
subject="XML Is Really Cool"> How many ways is XML cool? Let me count the ways...
<flag/>
Примечание: Пустой тег предохраняет вас от необходимости записи
How many ways is XML cool? Let me count the ways...
Объявление может также содержать дополнительную информацию, например:
XML-объявление по существу является таким же как и заголовок HTML, , за исключением того, что в нем используются ..?> и он может иметь следующие атрибуты:
Пролог может также содержать определения сущностей (элементов, вставляемых тогда, когда вы ссылаетесь на них в документе) и спецификаций, указывающих, какие теги являются разрешенными в документе. Сущности и спецификации объявляются в Document Type Definition (DTD), определяемом непосредственно в прологе, или через указатель на внешние файлы спецификаций. Но это - предмет для дальнейшего изучения в этом руководстве. Более подробная информация об этом и многих других аспектах XML находится в списке "Рекомендуется прочитать" организации htp://www.w3.org/XML/.
Примечание: На самом деле объявление не обязательно. Но включение его в любой создаваемый XML-файл является хорошей идеей. Объявление должно содержать номер версии и, по возможности, систему кодирования. Эта рекомендация упростит жизнь, если в будущем XML-стандарт расширится, или если когда-нибудь понадобится локализовать данные для других географических регионов.
Все, что следует за XML-прологом, составляет содержимое документа.
где target - имя приложения, которое, как ожидается, будет осуществлять обработку, а instructions - это строка символов, заключающая в себе информацию или команды для обработки приложением.
Поскольку директивы зависят от приложения, XML-файл может иметь несколько директив, указывающих различным приложениям выполнить похожие действия, хотя и разными способами. XML-файл для слайдшоу, например, может содержать директивы, позволяющие докладчику выбрать техническую версию презентации или версию для исполнительного звена. Если бы использовались несколько программ презентации, в программе, возможно, понадобилось бы наличие нескольких версий директив (хотя было бы лучше, если бы эти приложения распознавали стандартные директивы).
Примечание: Имя "XML" (в любой комбинации строчных или прописных букв) зарезервировано для XML-стандартов. В некотором смысле объявление является директивой, удовлетворяющей стандарту. (Однако, если вы позже будете работать с анализатором, вы увидите, что метод для обработки директив никогда не видит объявления.)
может сказать:
Конечно, вы можете сделать тоже самое и в HTML, но вы не сможете обработать данные программами поиска и программами, извлекающими адреса и т.д. Более важным является то, что, поскольку XML по своей сути не имеет стиля, вы можете использовать совершенно разные таблицы стилей для выполнения вывода в форматах postscript, TEX, PDF или каких-либо новых форматах, которые еще даже не разработаны. Такая гибкость означает то, что один автор описал как "будущая защита" вашей информации. XML-документы, созданные сегодня, могут использоваться в будущих, еще не известных системах доставки документов.
В будущем XML станет потенциальным решением при обмене данными в транзакциях любого типа, как только обе стороны согласятся использовать одинаковую разметку. (Например, какие теги почтовая программа должна обрабатывать:
Конечно, для таких компонентов имеет смысл использовать платформу Java. Для создания таких приложений можно использовать и JavaBeans™ для интерфейсов, и JavaBeans™ для бизнес-логики. И хотя ни одно из предпринятых усилий еще не доведено до коммерческого использования, очень много предварительной работы уже сделано.
Примечание: Язык программирования Java также отлично подходит для создания средств обработки XML, которые являются такими же переносимыми, как и XML. Для платформы Java были написаны несколько визуальных редакторов XML. Список редакторов, средств обработки и других XML-ресурсов находится в разделе "Software" SGML/XML Web-страницы, созданной Robin Cover, по адресу https://www.oasis-open.org/cover/.
Но когда структура данных (и возможно схема) полностью определена, код, необходимый вам для обработки этих данных, может быть легко сгенерирован автоматически. Этот процесс известен под названием связывание - создание классов, распознающих и обрабатывающих различные элементы данных при обработке спецификации, которая определяет эти элементы. Со временем вы обнаружите, что используете спецификацию данных для генерирования значительной части кода, и сможете сконцентрироваться на программировании уникальных для вашего приложения задач.
Основной механизм сохранения информации называется архивированием. Компонент архивируется путем записи его в выходной поток в форме, которую можно будет использовать в дальнейшем. Потом можно будет прочитать его и создать экземпляр, используя сохраненные параметры. (Например, если вы сохранили элемент таблицы, его параметрами могут быть количество строк и столбцов для отображения.) Архивированные компоненты можно перемещать по Web и использовать множеством способов.
Когда компоненты архивируются в бинарной форме, существуют некоторые ограничения в видах изменений, которые можно сделать в классах при желании сохранить совместимость с предыдущими версиями. Если бы вы могли модифицировать архивную версию так, чтобы изменения отразились в ней, это решило бы проблему. Но это очень тяжело сделать с двоичными объектами. Такие рассуждения вызвали большое количество исследований в использовании XML для архивирования. Но если состояние объекта было сархивировано в текстовой форме с использованием XML, тогда все в нем может быть изменено так же легко, как и сказать "найти и заменить".
Текстовый формат XML может также облегчить передачу объектов между приложениями, написанными на разных языках. По всем этим причинам основанное на XML архивирование возможно будет иметь большое распространение в не таком уж далеком будущем.
Существующими в настоящее время API для обработки XML-документов в последовательном режиме или в режиме произвольного доступа являются соответственно SAX и DOM. Спецификациями для обеспечения корректности XML-документов являются DTD (оригинальный механизм, определенный как часть спецификации XML) и различные предложения стандартов схем (новые механизмы, использующие синтаксис XML для описания критериев верификации).
Среди других будущих стандартов, близких к завершению является стандарт XSL - механизм для настройки правил трансляции XML-документов (например, в HTML или другой XML) и для описания правил визуализации документа. Часть этого стандарта, предназначенная для преобразований, XSLT(+XPATH) завершена и описана в этом руководстве. Еще один стандарт, близкий к завершению - спецификация XML Link Language (XML Linking), разрешающая связи между XML-документами.
Это основные стандарты, с которыми вы должны быть хорошо знакомы. В этом разделе приведен также обзор нескольких других интересных предложений, включая HTML-подобный стандарт, XHTML, и мета-стандарт для описания информации, содержащейся в XML-документе, RDF. Продолжается работа также над стандартами, расширяющими возможности XML, например Xlink и Xpointer.
Наконец, существует несколько интересных стандартов и предложений стандартов, которые построены на XML, включая Synchronised Multimedia Integration Language (SMIL), Mathematical Markup Language (MathML), Scalable Vector Graphics (SVG) и DrawML, а также несколько стандартов eCommerce.
В остальной части этой главы приведено более детальное описание этих стандартов. Для ясности они разделены на:
Этот API был фактически продуктом совместной работы участников списка рассылки XML-DEV, а не продуктом W3C. Он включен сюда потому, что имеет такие же "окончательные" характеристики, что и рекомендации W3C.
Вы можете рассматривать этот стандарт как протокол "последовательного доступа" к XML. Он является быстрым механизмом, который можно применить, например, для чтения или записи XML-данных на сервер. Его называют также протоколом, управляемым событиями, поскольку техника работы с ним следующая: регистрация вашего обработчика в SAX-анализаторе, после чего анализатор обращается к вашим методам обратного вызова при обнаружении нового XML-тега (либо встречает ошибку, либо хочет передать вам что-нибудь еще).
Более детальная информация по протоколу SAX находится в разделе "Простой API для XML".
Протокол Document Object Model преобразует XML-документ в набор объектов вашей программы. После этого вы можете манипулировать ими любым способом. Этот механизм известен также под названием - протокол "произвольного доступа", поскольку можно обратиться к любой части данных в любое время. Вы можете затем модифицировать данные, удалить их или вставить новые. Более подробная информация по спецификации DOM находится в разделе Document Object Model.
Ниже приведены важные различия, которые нужно принимать во внимание при выборе одного из этих API:
Более подробная информация по dom4j находится на странице https://dom4j.org/.
Спецификация DTD является фактически частью спецификации XML, а не отдельной сущностью. С другой стороны, она не обязательна - вы можете написать XML-документ без нее. И существует несколько альтернативных стандартов схем, предлагающих более гибкие возможности. Поэтому DTD рассматривается здесь как отдельная спецификация.
DTD определяет типы тегов, которые можно использовать в XML-документе, и их правильное расположение. DTD можно использовать для гарантии корректности XML-структуры. Вы можете использовать ее также для проверки корректности XML-структуры, которую читаете (или которая передается по сети).
К сожалению, очень трудно сформировать DTD для сложного документа так, чтобы она предотвращала все неверные комбинации и разрешала все правильные. Создание DTD представляет собой в какой-то степени искусство. DTD может существовать в самом документе, как часть пролога. Она может существовать также в виде отдельной сущности, или может быть разделена между прологом документа и одной или несколькими дополнительными сущностями.
Однако, хотя механизм DTD был первым методом указания корректной структуры документа, он не был последним. Было разработано несколько новых спецификаций схем. Очень скоро вы узнаете про них.
Детальная информация приведена в разделе Создание Document Type Definition (DTD).
Последняя информация по пространству имен находится на странице https://www.w3.org/TR/REC-xml-names.
XML-стандарт определяет способ интерпретации данных, а не способ их отображения. HTML, с другой стороны, определяет, как данные должны быть отображены, без указания их значения. XSL-стандарт имеет две части, XSLT (стандарт преобразования, описываемый ниже) и XSL-FO (часть, описывающая объекты форматирования, известные, также, под названием поток объектов). XSL-FO дает возможность определить различные области на странице и затем связать их вместе. Когда текстовый поток направляется в такую коллекцию, текст заполняет полностью первую область, а затем "перетекает" во вторую область. Такие объекты используются в почтовых рассылках, каталогах и периодических изданиях.
Последние работы W3C по XSL находятся на странице https://www.w3.org/TR/WD-xsl.
Стандарт преобразований XSLT является по существу механизмом преобразования, дающим возможность указать, как преобразовать XML-тег так, чтобы его можно было отобразить, например, в HTML. Различные XSL-форматы могут быть использованы для отображения тех же самых данных различными способами для различных пользователей. (Стандарт XPATH является механизмом адресации, используемым при создании инструкций преобразования для указания частей XML-структуры, которые необходимо преобразовать.)
Дополнительная информация находится в разделе XML Stylesheet Language for Transformations.
DTD не может ограничить содержимое элементов и не может определить сложные связи. Например, в DTD невозможно определить, что
Это происходит из-за того факта, что спецификация DTD не является иерархической. Например, для почтового адреса, содержащего несколько элементов PCDATA ("parsed character data"), DTD может выглядеть следующим образом:
name, address, zipcode)>
name (#PCDATA)>
Как вы можете заметить, спецификации являются линейными. Этот факт заставляет вас записывать новые имена похожих элементов в различных местах. Так что если вы захотите добавить еще один элемент "name" в DTD, содержащий
Другой проблемой не иерархической природы спецификации DTD является неясность того, к чему относятся комментарии. Такой комментарий в начале как может относиться ко всем элементам, составляющим почтовый адрес. Но такой комментарий как может относиться только к элементу name. С другой стороны, такой комментарий как может относиться только к части #PCDATA элемента zipcode для описания правильного формата. Наконец, DTD не позволяет формально определять критерии верификации полей, такие как, например, ограничение в 5 цифр (или 5 и 4) в поле zipcode.
И, наконец, DTD использует синтаксис, существенно отличающийся от XML, и поэтому не может обрабатываться стандартным XML-анализатором. Это означает, что нельзя прочитать DTD в DOM, например, для его модификации и сохранения.
Для преодоления этих недостатков были сделаны несколько предложений более похожих на базы данных иерархических схем, определяющих критерии верификации. Основные предложения обсуждаются ниже.
Дополнительная информация по XML Schema находится в спецификации W3C XML Schema (Structures) и XML Schema (Datatypes) вместе с другой дополнительной информацией на странице https://www.w3.org/XML/Schema.
Более простым, чем XML Structure Schema, является появляющийся стандарт под протекцией OASIS (Organization for the Advancement of Structured Information Systems) - Организации по развитию структурированных информационных систем. RELAX NG использует модель регулярных выражений для указания ограничений структурных взаимосвязей. Этот стандарт разработан для работы с механизмом определения типов данных XML Schema и указания ограничений их содержимого. Он использует синтаксис XML и содержит преобразователь DTD в RELAX. ("NG" обозначает "Next Generation". Это более новая версия механизма схем RELAX, которая интегрирует в себя TREX.)
Дополнительная информация по RELAX NG находится на странице https://www.oasis-open.org/committes/relax-ng/.
Это средство выражения критериев верификации путем описания шаблона структуры и содержимого XML-документа. Сейчас является частью спецификации RELAX NG.
Дополнительная информация по TREX находится на странице https://www.thaiopensource.com/trex/.
SOX является схемой, включающей расширяемые типы данных, пространства имен и встраиваемую документацию.
Дополнительная информация по SOX находится на странице https://www.w3.org/TR/NOTE-SOX/.
Механизм схемы, основанный на утверждениях и предлагающий комплексную верификацию.
Дополнительная информация по механизму верификации Schematron находится на странице https://www.ascc.net/xml/resource/schematron/schematron.html.
Протокол XLink - это спецификация обработки связей между XML-документами. Эта спецификация предоставляет возможность организовывать некоторые довольно непростые связи, включая двунаправленные ссылки, ссылки на несколько документов, "расширяющиеся" ссылки, которые вставляют связанную информацию в ваш документ, а не заменяют его новой страницей, ссылки между двумя документами, созданными в третьем, независимом документе, и непрямые ссылки (так что вы можете указать на "адресную книгу" а не прямо на нужный документ - обновление адресной книги автоматически изменит все ссылки, ее использующие).
Этот стандарт определяет атрибут XML-документов, в котором указывается "базовый" адрес, используемый при вычислении указанного в документе относительного адреса. (Так, например, простое имя файла может быть найдено в указанном в базовом адресе каталоге.)
В общем случае, спецификация XLink ссылается на документ или сегмент документа, используя его ID (идентификатор). Спецификация XPointer определяет механизмы для "адресации во внутренние структуры XML-документов" без необходимости указания автором документа ID для этого сегмента. Цитируя спецификацию, она обеспечивает "обращение к элементам, строкам символов и другим частям XML-документов, независимо от того, имеют они или нет явный атрибут ID".
Дополнительная информация по стандартам XML Linking находится на странице https://www.w3.org/XML/Linking.
Например, каждый тег в формально-правильном XML-документе должен иметь завершающий тег или должен заканчиваться знаками />. То есть, вы можете увидеть
Спецификация XHTML - это перенос HTML 4.0 в XML. Последняя информация находится на странице https://www.w3.org/TR/xhtml1.
Между тем, вот фундаментальные стандарты, о которых вы должны знать:
RDF является стандартом для определения метаданных - информации, описывающей, чем является элемент данных и как он может быть использован. Используемый совместно со спецификацией XHTML например, или с HTML-страницами, RDF может применяться для описания содержимого страниц. Например, если ваш броузер сохранил вашу идентификационную информацию как FIRSTNAME, LASTNAME и EMAIL, описание RDF могло бы сделать возможной передачу данных в приложение, нуждающееся в NAME и EMAILADDRESS. Только представьте: однажды вам не надо будет вводить имя и адрес на каждом Web-сайте, который вы посещаете!
Последняя информация по RDF находится на странице https://www.w3.org/TR/REC-rdf-syntax.
Дополнительная информация по рекомендациям RDF Schema находится на странице https://www.w3.org/TR/rdf-schema.
Итак, если существует отраслевой стандарт, используйте ссылку на его DTD. Одним из мест для поиска отраслевых стандартов DTD является архив, созданный Organization for the Advancement of Structured Information Standards (OASIS - организацией по развитию стандартов структурированной информации), находящийся на сайте https://www.XML.org. Другим местом для проверки является XML Exchange от CommerceOne на сайте https://www.xmlx.com, который описывается как "архив для создания и совместного доступа к определениям типов документов".
Примечание: Очень много хороших рекомендаций по созданию XML-структур находится на странице OASIS https://www.oasis-open.org/cover/elementsAndAttrs.html.
либо как:
В некоторых случаях различные характеристики атрибутов и элементов облегчают выбор. Рассмотрим сначала именно такие случаи, а затем перейдем к таким, где выбор более неоднозначный.
В этом случае данные должны быть представлены как элемент. Он не может быть представлен как атрибут, поскольку атрибуты могут содержать только простые строки. То есть, если заголовок может содержать выделенный текст, как, например, The Best Choice, то заголовок должен быть элементом.
Здесь тоже имеет смысл использовать элемент. Атрибуты должны быть простыми, короткими строками, иначе они станут нечитаемыми, или вообще непригодными к использованию.
Если элемент данных может встретиться несколько раз, например параграфы в строке, он должен быть представлен как элемент. Элемент, содержащий такие данные, может иметь только один атрибут данного типа, но может иметь много субэлементов того же типа.
Если данные будут часто меняться при помощи редактора, имеет смысл представить их как элемент. Многие из XML-редакторов легко позволяют модифицировать элементы данных, в то время как к атрибутам иногда нелегко получить доступ.
Такие данные могут быть представлены как атрибуты. Однако то, что вы можете сделать, не означает то, что вы должны это сделать. Прочитайте следующий раздел "Стилистический выбор", чтобы быть уверенным в своих действиях.
Это как раз тот случай, когда имеет смысл использовать атрибуты. DTD может защитить атрибут от получения значения, не входящего в предопределенный список, но не может таким же образом ограничить элемент. (С другой стороны, схема может ограничить и атрибуты и элементы.)
Определение чувства стиля для XML, к сожалению, такое же неблагодарное дело, как и определение "стиля" в искусстве или музыке. Однако существует несколько путей для достижения этого. Цель этого раздела - изложить несколько полезных мыслей по вопросу "XML-стиля".
Один из эвристических подходов к выбору между XML-элементами и атрибутами использует концепцию видимости. Если данные планируется показывать - отобразить для какого-либо конечного пользователя - то они должны быть представлены как элемент. С другой стороны, если информация предназначена для XML-обработки и никогда не показывается пользователю, то ее лучше представить в виде атрибута. Например, в форме заказа обуви, размер ее определенно может быть элементом. С другой стороны, кодовый номер производителя разумно представить атрибутом.
Другим подходом является ответ на вопрос - кто является потребителем и/или поставщиком информации. Размер обуви вводится человеком-продавцом, то есть это - элемент. С другой стороны кодовый номер производителя для данной модели обуви может быть передан в приложение или записан в базу данных, то есть, он должен быть атрибутом. (Если бы он вводился продавцом, он, возможно, был бы элементом.)
Возможно, лучшим подходом к размышлению об элементах и атрибутах является предположение, что элемент - это контейнер. Используя аналогию, содержимое контейнера (вода или молоко) соответствует XML-данным, представленным как элементы. Такие данные, по сути, являются переменными. С другой стороны, характеристики контейнера (белый или синий кувшин) могут быть представлены как атрибуты. Такой тип информации является более постоянным. Хорошим XML-стилем будет, следовательно, отделение содержимого каждого контейнера от его характеристик.
Покажем эти эвристические подходы на практике. При показе слайдов тип слайда (для администрации или для технического персонала) лучше всего представить в виде атрибута. Это характеристика слайда, позволяющая выбрать или отложить слайд для конкретной аудитории. Название слайда, с другой стороны, является частью его содержимого. Подход, основанный на видимости, здесь тоже работает. При показе слайда его название показывается, а тип слайда нет. Наконец в этом примере потребителем информации о названии является аудитория, в то время как потребителем информации о типе является программа презентации.
В HTML-файле единственным способом достичь такого типа модульности является использование HTML-ссылок - естественно документ становится фрагментированным. XML-сущности, с другой стороны, не страдают от такой фрагментации. Ссылка на сущность работает как макроподстановка - содержимое объекта размещается в текущем месте, создавая цельный документ, а не фрагментированный. И когда сущность определена во внешнем файле, несколько документов могут ссылаться на нее.
Соображения для определения ссылки на сущность, следовательно, почти такие же, как и те, какие вы применяете для разбиения на модули программного кода:
Вы можете также зайти слишком далеко при использовании сущностей. Впав в крайность, вы можете создать ссылки на отдельную сущность для слова "the" - это не принесет вам никакой выгоды, но вы можете сделать это.
Вы изучите xml в следующих разделах руководства. Далее мы отметим основные особенности, которые делают xml идеальным средством для хранения и обмена информацией, и рассмотрим главн
12 10 2014
1 стр.
Откройте html-редактор Dreamweaver и создайте новый документ html. Скопируйте представленный ниже html-код программы автоматизированного тестирования (выделенный синим шрифтом) и в
08 10 2014
1 стр.
Жирным шрифтом выделен диалог между персонажами, обычным шрифтом – обращения к зрителю
12 10 2014
4 стр.
На основе выбранного класса будет формироваться электронное письмо для рассылки. Например, если нужно сделать рассылку контактным лицам контрагентов, то стоит выбрать класс где сод
16 12 2014
1 стр.
Компонент тега, содержащий указания о том, как браузер должен воспринять и обработать тег
12 10 2014
1 стр.
Словарные основы изображены маленьким жирным шрифтом прописными буквами: nakh. Слова на других языках (чаще на эльфийских) изображены наклонным шрифтом: kemen; корни / словарные ос
02 10 2014
5 стр.
Таблица содержит следующие данные об учениках школы: фамилия, возраст и рост ученика. Сколько учеников могут заниматься в баскетбольной секции, если туда принимают детей с ростом
02 09 2014
1 стр.
Приводятся библейские данные, предсказания святых, знамения, древние мифы, восточная философия, а также научные данные по астрономии и медицинской статистике о рождении пророков и
06 10 2014
21 стр.