FreelanceHunt.com > удаленная работа и фриланс проекты в сфере IT  

FreelanceHunt.com » Категории » Что такое XML?

{{Файловый формат
| название = XML ({{lang-en|eXtensible Markup Language}}) расширяемый язык разметки
| screenshot = 200px
| расширение = .xml
| mime = application/xml, text/xml (устаревший)
| owner = World Wide Web Consortium
| категория = язык разметки
| extended from = SGML
| extended to = XHTML, SVG, XSL, XSL-FO, XSLT и др.
}}
XML ({{lang-en|eXtensible Markup Language}} — расширяемый язык разметки; произносится [экс-эм-э?л]) — рекомендованный Консорциумом Всемирной паутины язык разметки, фактически представляющий собой свод общих синтаксических правил. XML — текстовый формат, предназначенный для хранения структурированных данных (взамен существующих файлов баз данных), для обмена информацией между программами, а также для создания на его основе более специализированных языков разметки (например, XHTML), иногда называемых словарями. XML является упрощённым подмножеством языка SGML.

Целью создания XML было обеспечение совместимости при передаче структурированных данных между разными системами обработки информации, особенно при передаче таких данных через Интернет. Словари, основанные на XML (например, RDF, RSS, MathML, XHTML, SVG), сами по себе формально описаны, что позволяет программно изменять и проверять документы на основе этих словарей, не зная их семантики, то есть не зная смыслового значения элементов. Важной особенностью XML также является применение так называемых пространств имён ({{lang-en|namespace}}).

Правильно построенные и действительные документы XML

Стандартом определены два уровня правильности документа XML:

  • Правильно построенный (Well-formed). Правильно построенный документ соответствует всем правилам синтаксиса XML. И если, например, начальный тег не имеет соответствующего ему конечного тега, то это неправильно построеный документ XML. Документ, который не правильно построен, не может считаться документом XML, XML процессор (парсер) не должен обрабатывать его обычным образом, и обязан классифицировать ситуацию как фатальная ошибка.
  • Действительный (Valid). Действительный документ дополнительно соответствует некоторым семантическим правилам. Это более строгая дополнительная проверка корректности документа на соответствие заранее определённым, но уже внешним правилам, в целях минимизации количества ошибок, например, структуры и состава данного, конкретного документа или семейства документов. Эти правила могут быть разработаны как самим пользователем, так и стороними разработчиками, например, разработчиками словарей или стандартов обмена данными. Обычно такие правила хранятся в специальных файлах — схемах, где самым подробным образом описана структура документа, все допустимые названия элементов, атрибутов и многое другое. И если документ, например, содержит не определённое заранее в схемах название элемента, то XML-документ считается недействительным, проверяющий XML процессор (валидатор) при проверке на соответствие правилам и схемам, обязан (по выбору пользователя) сообщить об ошибке.

Данные два понятия не имеют достаточно устоявшегося стандартизированного перевода на русский язык, особенно понятие valid{{ref-en}}, которое можно так же перевести, как имеющий силу, правомерный, надёжный, или даже провереный на соответствие правилам, стандартам, законам. Некоторые XML-программисты применяют в обиходе устоявшуюся кальку «Валидный».

Синтаксис XML

В этом разделе рассматривается лишь правильное построение документов XML, то есть их синтаксис.

XML — это иерархическая структура, предназначенная для хранения любого количества текста или любых данных, визуально структура может быть представлена как дерево. Важнейшее обязательное синтаксическое требование — то, что документ имеет только один корневой элемент ({{lang-en|root element}}) (альтернативно называемый элементом документа ({{lang-en|document element}})). Это означает, что текст или другие данные всего документа должны быть расположены между единственным начальным корневым тегом и соответствующим ему конечным тегом.

Следующий простейший пример — правильно построенный документ XML:
Это книга: "Книжечка"
Первая строка XML-документа называется объявлением XML ({{lang-en|XML declaration}}) — это необязательная строка, указывающая версию стандарта XML (обычно это 1.0), также здесь может быть указана кодировка символов и внешние зависимости.



Спецификация требует, чтобы процессоры XML обязательно поддерживали Юникод-кодировки UTF-8, и UTF-16 (UTF-32 не обязателен). Признаются допустимыми, поддерживаются и широко используются (но не обязательны) другие кодировки, основанные на стандарте ISO/IEC 8859, так же допустимы другие кодировки, например, русские Windows-1251, KOI-8.

Комментарий может быть размещен в любом месте дерева.

XML комментарии начинаются <!-- и заканчиваются -->. Два знака дефис (--) не могут быть применены ни в какой части внутри комментария.


Ниже приведён пример простого кулинарного рецепта, размеченного с помощью XML:



Простой хлеб
Мука
Дрожжи
Тёплая вода
Соль

Смешать все ингредиенты и тщательно замесить.
Закрыть тканью и оставить на один час в тёплом помещении.
Замесить ещё раз, положить на противень и поставить в духовку.


Структура

Остальная часть этого XML-документа состоит из вложенных элементов, некоторые из которых имеют атрибуты и содержимое. Элемент обычно состоит из открывающего и закрывающего тегов (меток), обрамляющих текст и другие элементы. Открывающий тег состоит из имени элемента в угловых скобках, например «<step>»; закрывающий тег состоит из того же имени в угловых скобках, но перед именем ещё добавляется косая черта, например «</step>». Содержимым элемента ({{lang-en|content}}) называется всё, что расположено между открывающим и закрывающим тегами, включая текст и другие (вложенные) элементы. Ниже приведён пример XML-элемента, который содержит открывающий тег, закрывающий тег и содержимое элемента:


Замесить ещё раз, положить на противень и поставить в духовку.

Кроме содержания у элемента могут быть атрибуты — пары имя-значение, добавляемые в открывающий тег после названия элемента. Значения атрибутов всегда заключаются в кавычки (одинарные или двойные), одно и то же имя атрибута не может встречаться дважды в одном элементе. Не рекомендуется использовать разные типы кавычек для значений атрибутов одного тега.


Мука

В приведённом примере у элемента «ingredient» есть два атрибута: «amount», имеющий значение «3», и «unit», имеющий значение «стакан». С точки зрения XML-разметки, приведённые атрибуты не несут никакого смысла, а являются просто набором символов.

Кроме текста элемент может содержать другие элементы:



Смешать все ингредиенты и тщательно замесить.
Закрыть тканью и оставить на один час в тёплом помещении.
Замесить ещё раз, положить на противень и поставить в духовку.

В данном случае элемент «Instructions» содержит три элемента «step». XML не допускает перекрывающихся элементов. Например, приведённый ниже фрагмент некорректен, так как элементы «em» и «strong» перекрываются.

<!-- ВНИМАНИЕ! Некорректный XML! -->
<p>Обычный <em>акцентированный <strong>выделенный и акцентированный</em> выделенный</strong></p>

Каждый XML-документ должен содержать в точности один корневой элемент ({{lang-en|root element}} или document element), таким образом, следующий фрагмент не может считаться корректным XML-документом.

<!-- ВНИМАНИЕ! Некорректный XML! -->
<thing>Cущность №1</thing>
<thing>Cущность №2</thing>

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





В XML определены два метода записи специальных символов: ссылка на сущность и ссылка по номеру символа. Сущностью ({{lang-en|entity}}) в XML называются именованные данные, обычно текстовые, в частности спецсимволы. Ссылка на сущность ({{lang-en|entity references}}) указывается в том месте, где должна быть сущность и состоит из амперсанда («&»), имени сущности и точки с запятой;»). В XML есть несколько предопределённых сущностей, таких как «lt» (ссылаться на неё можно написав «&lt;») для левой угловой скобки и «amp» (ссылка — «&amp;») для амперсанда, возможно также определять собственные сущности. Помимо записи с помощью сущностей отдельных символов, их можно использовать для записи часто встречающихся текстовых блоков. Ниже приведён пример использования предопределённой сущности для избежания использования знака амперсанда в названии:


AT&T

Полный список предопределённых сущностей состоит из &amp; («&»), &lt; («<»), &gt; («>»), &apos; («'»), и &quot; («"») — последние две полезны для записи разделителей внутри значений атрибутов. Определить свои сущности можно в DTD-документе.
Иногда бывает необходимо определить неразрывный пробел, который очень часто используется в HTML и обозначается как &nbsp; в XML такой предопределённой сущности нет, его записывают &#160, а использование &nbsp; вызывает ошибку. Отсутствие этой весьма распространённой сущности у множества программистов, зачастую, вызывает удивление, и это создаёт некоторые трудности при миграции своих HTML разработок в XML;

Cсылка по номеру символа ({{lang-en|numeric character reference}}) выглядит как ссылка на сущность, но вместо имени сущности указывается символ <code>#</code> и число (в десятичной или шестнадцатеричной записи), являющееся номером символа в кодовой таблице Юникод. Это обычно символы, которые невозможно закодировать напрямую, например буква арабского алфавита в ASCII-кодированном документе. Амперсанд может быть представлен следующим образом:


AT&T

Существует ещё множество правил, касающихся составления корректного XML-документа, но целью данного краткого обзора было лишь показать основы, необходимые для понимания структуры XML-документа.

История


Временем рождения XML можно считать 1996 год, в конце которого появился черновой вариант спецификации языка, или 1998, когда эта спецификация была утверждена. А началось все с появления в 1986 году языка SGML.

SGML (Standard Generalized Markup Language — Стандартный Обобщенный Язык Разметки) заявил о себе как гибкий, комплексный и всеохватывающий мета-язык для создания языков разметки. И хотя понятие гипертекста появилось в 1945 году, этот язык не имеет гипертекстовой модели. Создание SGML можно с уверенностью назвать попыткой, объять необъятное, т. к. он объединяет в себе такие возможности, которые крайне редко используются все вместе. В этом и состоит его главный недостаток — сложность и, как следствие, дороговизна этого языка ограничивает его использование только крупными компаниями, которые могут позволить себе купить соответствующее программное обеспечение и нанять высокооплачиваемых специалистов. Кроме того, у небольших компаний редко возникают настолько сложные задачи, чтобы привлекать к их решению SGML.

Наиболее широко SGML применяется для создания других языков разметки, именно с его помощью был создан язык разметки гипертекстовых документов — HTML, спецификация которого была утверждена в 1992 году. Его появление было связано с необходимостью организации стремительно увеличивающегося массива документов в сети Internet. Бурный рост количества подключений к Internet и, соответственно, Web-серверов повлек за собой такую потребность в кодировке электронных документов, с которой не мог справиться SGML вследствие высокой трудности освоения. Появление HTML — очень простого языка разметки — быстро решило эту проблему, легкость в изучении и богатство средств оформления документов сделали его самым популярным языком для пользователей Internet. Но, по мере роста количества и изменения качества документов в Сети, росли и предъявляемые к ним требования, и простота HTML превратилась в его главный недостаток. Ограниченность количества тегов и полное безразличие к структуре документа побудили разработчиков в лице консорциума W3C к созданию такого языка разметки, который был бы не столь сложен, как SGML, и не настолько примитивен, как HTML. В результате, сочетая в себе простоту HTML, логику разметки SGML и удовлетворяя требованиям Internet, появился на свет язык XML.

Сильные и слабые стороны


Достоинства


  • XML(человеко-ориентированный) — это формат, одновременно понятный и человеку и компьютеру;
  • XML поддерживает Юникод;
  • в формате XML могут быть описаны основные структуры данных — такие как записи, списки и деревья;
  • XML — это самодокументируемый формат, который описывает структуру и имена полей также как и значения полей;
  • XML имеет строго определённый синтаксис и требования к анализу, что позволяет ему оставаться простым, эффективным и непротиворечивым;
  • XML также широко используется для хранения и обработки документов;
  • XML — формат, основанный на международных стандартах;
  • иерархическая структура XML подходит для описания практически любых типов документов;
  • XML представляет собой простой текст, свободный от лицензирования и каких-либо ограничений;
  • XML не зависит от платформы;
  • XML является подмножеством SGML (который используется с 1986 года). Уже накоплен большой опыт работы с языком и созданы специализированные приложения;
  • XML не накладывает требований на расположение символов на строке http://www.json.org/xml.html;

Недостатки


  • Синтаксис XML избыточен.
    • Размер XML документа существенно больше бинарного представления тех же данных. В грубых оценках величину этого фактора принимают за 1 порядок (в 10 раз).
    • Размер XML документа существенно больше, чем документа в альтернативных текстовых форматах передачи данных (например JSON http://www.json.org/xml.html, YAMLhttp://ru.wikipedia.org/wiki/YAML) и особенно в форматах данных оптимизированных для конкретного случая использования.
    • Избыточность XML может повлиять на эффективность приложения. Возрастает стоимость хранения, обработки и передачи данных.
    • Для большого количества задач не нужна вся мощь синтаксиса XML и можно использовать значительно более простые и производительные решения http://www.faqs.org/docs/artu/ch05s02.html#id2907018
  • XML не содержит встроенной в язык поддержки типов данных. В нём нет понятий «целых чисел», «строк», «дат», «булевых значений» и т. д.
  • Иерархическая модель данных, предлагаемая XML, ограничена по сравнению с реляционной моделью и объектно-ориентированными графами.
  • Пространства имён XML сложно использовать и их сложно реализовывать в XML парсерах
  • Существуют другие, обладающие сходными с XML возможностями, текстовые форматы данных, которые обладают более высоким удобством чтения человеком (YAML, JSON, SweetXML, XF)

Отображение XML во Всемирной паутине


XSL является технологией, описывающей как форматировать или трансформировать данные XML документа. Документ трансформируется в формат, подходящий для отображения в браузере. Процесс аналогичен применению CSS к HTML документу для отображения. Браузер это наиболее частое использование XSL, но не стоит забывать, что с помощью XSL можно трансформировать XML в любой формат, например VRML, PDF, текст.

Без использования CSS или XSL, XML-документ отображается как простой текст в большинстве web-браузеров. Некоторые браузеры, такие как Internet Explorer, Mozilla и Mozilla Firefox отображают структуру документа в виде дерева, позволяя сворачивать и разворачивать узлы с помощью нажатий клавиши мыши.

Для применения CSS при отображении в браузере, XML документ должен содержать специальную ссылку на таблицу стилей. Например:



Это отличается от подхода HTML, где используется элемент .

Для задания XSL трансформации (XSLT) на стороне клиента требуется наличие следующей инструкции в XML:



Словари XML


Так как XML является достаточно абстрактным языком, были разработаны словари XML.
Словарь позволяет разработчикам договориться о некотором конечном наборе имен тегов и атрибутов этих тегов. Одним из первых словарей появился XHTML, который понимают большинство браузеров. XHTML часто используют для хранения и редактирования контента в CMS.

Были созданы более специализированные словари, например протокол передачи данных SOAP, который не является человеко-ориентированным и достаточно трудно читаем. Есть коммерческие словари, такие как xCBL и cXML которые используются для передачи данных, ориентированных на торговую деятельность, эти словари включают в себя описание системы заказов, поставщиков, продуктов и прочее.
Обычно, описывая какой-либо документ, человек для себя придумывает некоторый словарь, который потом описывается посредством DTD или просто объясняется «на пальцах» заинтересованным лицам.

Одним из интересных словарей, получивших широкое распространение, является FB2 — словарь, описывающий формат книги, со всевозможными сносками, цитатами и даже картинками.

Версии XML


  • XML 1.0
  • XML 1.1

См. также


  • DTD, XSD, XML Schema — языки описания структуры документа XML;
  • XLink, XPointer — языки описания ссылок XML;
  • XPath — язык адресации XML;
  • XQuery — язык запросов XML;
  • XML DOM — интерфейс для обработки XML-документов;
  • XSL, XSL-FO, XSLT — языки преобразования документов XML;
  • SVG — язык масштабируемой векторной графики;
  • SOAP — основанный на XML протокол для обмена информацией между программами;
  • XML-RPC — основанный на XML стандарт вызова удалённых процедур;
  • YAML
  • DITA
  • MathML — язык описания математических формул, основанный на XML;
  • IFX — стандарт интерактивного обмена финансовой информацией, основанный на XML;
  • GraphML — язык описания графов, основанный на XML;
  • HL7 (медицинский стандарт);
  • SGML — базовый язык. XML является его упрощением.

Ссылки


Литература


  • {{книга

|автор = Сергеев Александр Петрович
|заглавие = HTML и XML. Профессиональная работа
|ссылка =
|место = М.
|издательство = «Диалектика»
|год = 2004
|страницы = 880
|isbn = 5-8459-0676-8
}}

  • {{книга

|автор = Роберт Тейбор
|заглавие = Реализация XML Web-служб на платформе Microsoft .NET
|оригинал = Microsoft .NET XML Web Services
|ссылка =
|издание =
|место = М.
|издательство = «Вильямс»
|год = 2002
|страницы = 464
|isbn = 0-672-32088-6
}}
{{W3C Standards}}
*
Категория:Форматы файлов

af:XML
ar:??? ??????? ??????? ????????
bat-smg:XML
bg:XML
bn:?????????? ??????? ???????????
bs:XML
ca:Extensible Markup Language
cs:Extensible Markup Language
da:Extensible Markup Language
Extensible Markup Language
XML
eo:XML
es:XML
et:XML
eu:XML
fa:?????????
fi:XML
Extensible Markup Language
gl:XML
he:XML
hi:?????
hr:XML
hu:XML
ia:XML
id:Extensible markup language
is:XML
it:XML
ja:Extensible Markup Language
ko:XML
lt:XML
lv:Valoda XML
ms:XML
nl:Extensible Markup Language
nn:XML
no:XML
pl:XML
pt:XML
ro:XML
simple:XML
sk:XML
sl:XML
sq:XML
sr:XML
sv:XML
tg:XML
th:????????????
tr:Geni?letilebilir i?aretleme dili
uk:XML
vi:XML
zh:???????