XML | это... Что такое XML? (original) (raw)

XML (англ. eXtensible Markup Language) расширяемый язык разметки

XML.svg
Расширение .xml
MIME application/xml,[1] text/xml[2] (deprecated in an expired draft)[3]
Разработан Консорциум Всемирной паутины
Опубликован 1998
Тип формата язык разметки
Расширен из SGML
Развит в XHTML, RSS, Atom, KML и множество других форматов
Стандарт(ы) 1.0 (Fifth Edition), 26 ноября 2008 года[4]1.1 (Second Edition), 16 августа 2006 года[5]
Открытый формат? да

XML (англ. eXtensible Markup Language — расширяемый язык разметки; произносится [_экс-эм-э́л_]) — рекомендованный Консорциумом Всемирной паутины язык разметки, фактически представляющий собой свод общих синтаксических правил. XML — текстовый формат, предназначенный для хранения структурированных данных (взамен существующих файлов баз данных), для обмена информацией между программами, а также для создания на его основе более специализированных языков разметки (например, XHTML). XML является упрощённым подмножеством языка SGML.

Содержание

История

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

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

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

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

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

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

Синтаксис XML

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

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

Рассмотрим пример простого кулинарного рецепта, размеченного с помощью XML:

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

Объявление XML

Первая строка XML-документа называется объявление XML (англ. XML declaration) — это строка, указывающая версию XML. В версии 1.0 объявление XML может быть опущено, в версии 1.1 оно обязательно. Также здесь может быть указана кодировка символов и наличие внешних зависимостей.

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

Корневой элемент

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

Следующий простейший пример — правильно построенный документ XML:

Это книга: "Книжечка"

Следующий пример не является корректным XML-документом, потому что имеет два корневых элемента:

Сущность №1 Сущность №2

Комментарий

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

Теги внутри комментария обрабатываться не должны.

Теги

Остальная часть этого XML-документа состоит из вложенных элементов, некоторые из которых имеют атрибуты и содержимое. Элемент обычно состоит из открывающего и закрывающего тегов, обрамляющих текст и другие элементы. Открывающий тег состоит из имени элемента в угловых скобках, например, <step>, а закрывающий тег состоит из того же имени в угловых скобках, но перед именем ещё добавляется косая черта, например, </step>. Имена элементов, как и имена атрибутов, не могут содержать пробелы, но могут быть на любом языке, поддерживаемом кодировкой XML-документа. Имя может начинаться с буквы, подчёркивания, двоеточия. Остальными символами имени могут быть те же символы, а также цифры, дефис, точка.

Содержимым элемента (англ. content) называется всё, что расположено между открывающим и закрывающим тегами, включая текст и другие (вложенные) элементы. Ниже приведён пример XML-элемента, который содержит открывающий тег, закрывающий тег и содержимое элемента:

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

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

Мука

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

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

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

В данном случае элемент «instructions» содержит три элемента «step».

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

Обычный акцентированный выделенный и акцентированный выделенный

Для обозначения элемента без содержания, называемого пустым элементом, необходимо применять особую форму записи, состоящую из одного тега, в котором после имени элемента ставится косая черта. Если в DTD элемент не объявлен пустым, но в документе он не имеет содержания, для него допускается применять следующие (три) формы записи. Например:

Спецсимволы

В XML определены два метода записи специальных символов: ссылка на сущность и ссылка по номеру символа.

Сущностью (англ. entity) в XML называются именованные данные, обычно текстовые, в частности, спецсимволы. Ссылка на сущность (англ. entity references) указывается в том месте, где должна быть сущность и состоит из амперсанда (&), имени сущности и точки с запятой (;).

В XML есть несколько предопределённых сущностей, таких как lt (ссылаться на неё можно написав &lt;) для левой угловой скобки и amp (ссылка — &amp;) для амперсанда. Возможно также определять собственные сущности. Помимо записи с помощью сущностей отдельных символов, их можно использовать для записи часто встречающихся текстовых блоков.

Ниже приведён пример использования предопределённой сущности для избежания использования знака амперсанда в названии:

AT&T

Полный список предопределённых сущностей состоит из &amp; (&), &lt; (<), &gt; (>), &apos; (') и &quot; (") — последние две полезны для записи разделителей внутри значений атрибутов. Определить свои сущности можно в DTD-документе.

Иногда бывает необходимо определить неразрывный пробел, который очень часто используется в HTML и обозначается как &nbsp;. В XML такой предопределённой сущности нет, его записывают &#160;, а использование &nbsp; вызывает ошибку. Отсутствие этой весьма распространённой сущности у множества программистов зачастую вызывает удивление и это создаёт некоторые трудности при миграции своих HTML-разработок в XML.

Ссылка по номеру символа (англ. numeric character reference) выглядит как ссылка на сущность, но вместо имени сущности указывается символ # и число (в десятичной или шестнадцатеричной записи), являющееся номером символа в кодовой таблице Юникод. Это обычно символы, которые невозможно закодировать напрямую, например, буква арабского алфавита в ASCII-кодированном документе. Амперсанд может быть представлен следующим образом:

AT&T

Существуют и другие правила, касающиеся составления корректного XML-документа.

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

Достоинства

Недостатки

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

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

  1. Применение стилей CSS;
  2. Применение XSL;
  3. Написание на каком-либо языке программирования обработчика XML-документа.

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

Применение стилей CSS

Процесс аналогичен применению CSS к HTML-документу для отображения.

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

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

Применение XSL

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

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

Словари XML

Так как XML является достаточно абстрактным языком, были разработаны словари XML.

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

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

Обычно, описывая какой-либо документ, человек для себя придумывает некоторый словарь, который потом описывается посредством DTD, XSD или просто объясняет «на пальцах» заинтересованным лицам.

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

Версии XML

См. также

Примечания

  1. XML Media Types, RFC 3023 9–11. IETF (январь 2001). Архивировано из первоисточника 22 августа 2011. Проверено 4 января 2010.
  2. XML Media Types, RFC 3023 7–9. IETF (январь 2001). Архивировано из первоисточника 22 августа 2011. Проверено 4 января 2010.
  3. M. Murata, D. Kohn, and C. Lilley Internet Drafts: XML Media Types. IETF (24 сентября 2009). Архивировано из первоисточника 22 августа 2011. Проверено 10 июня 2010.
  4. Extensible Markup Language (XML) 1.0 (Fifth Edition)
  5. Extensible Markup Language (XML) 1.1 (Second Edition)
  6. 1 2 JSON: The Fat-Free Alternative to XML
  7. XML.com: Very Dynamic Web Interfaces
  8. XML Parsers
  9. Intel XML Accelerator
  10. David Megginson. Imperfect XML: Rants, Raves, Tips, and Tricks … from an Insider. Chapter 8
  11. Data File Metaformats
  12. Gustavo Alonso. Myths around Web Services Swiss Federal Institute of Technology, page 6
  13. Tim Bray. Using XML in Internet Protocols Sun Microsystems
  14. O’Reilly Network: An Interview with Chris Date
  15. SweetXML
  16. XFHome.org — формат обмена данными XF

Литература

Ссылки

Просмотр этого шаблона Стандарты Консорциума Всемирной паутины
Рекомендации Canonical XML • CDF • CSSDOM • Geolocation API • HTML • ITS • MathMLOWLP3P • PLS • RDF (Schema) • SISR • SKOS • SMILSOAP • SRGS • SSMLSVGSPARQLTimed TextVoiceXMLWSDLXFormsXHTML • XHTML+RDFa • XIncludeXLinkXML (Base • Encryption • Events • Information Set • namespaceSchema • Signature) • XPath / 1.0 / 2.0 • XPointerXProcXQueryXSLXSL-FOXSLT (элементы) • XUP
Примечания XAdES • XHTML+SMIL
Рабочие проекты CCXML • CURIE • HTML5InkML • RIF • SCXML • SMIL Timesheets • sXBL • WICD • XFDL • XFrames • XBL • XHTML+MathML+SVG • XMLHttpRequest
Guidelines Web Content Accessibility Guidelines
Initiative Multimodal Interaction Activity • Markup Validation Service • Web Accessibility Initiative
Deprecated CHTML • HDML • JSSS • PGMLVML
Организации World Wide Web Foundation • SVG Working Group • WebOnt • Device Description Working Group • WHATWG
ПО Agora • Argo • Arena • AmayaCERN httpd • Libwww • Line Mode Browser
Конференции IW3C2 • World Wide Web Conference • WWWC1
Просмотр этого шаблона Семантическая паутина
Основы Всемирная паутина · Интернет · Гипертекст · Базы данных · Семантические сети · Онтологии · Дескрипционная логика
Подразделы Linked Data · Data Web · Hyperdata · Dereferenceable URIs · Rule bases · Data Spaces
Приложения Семантическая вики · Semantic publishing · Semantic search · Semantic computing · Semantic advertising · Semantic reasoner · Semantic matching · Semantic mapper · Semantic broker · Semantic analytics · Semantic service oriented architecture
Связанные темы Фолксономия · Библиотека 2.0 · Веб 2.0 Ссылки · Информационная архитектура · Управление знаниями · Коллективный интеллект · Тематические карты · Mindmapping · Метаданные · Geotagging · Web science
Стандарты Синтаксис : RDF (RDF/XML · Нотация 3 · Turtle · N-Triples) · SPARQL · URI · HTTP · XML Схемы, онтологии : RDFS · OWL · Rule Interchange Format · Semantic Web Rule Language · Common Logic · Schema.org Семантическое аннотирование : RDFa · eRDF · GRDDL · Микроформаты · Микроданные Словари : FOAF · SIOC · Дублинское ядро · SKOS · UMBEL История: Plain Old Semantic HTML DAML+OIL
Просмотр этого шаблона Веб и веб-сайты
Глобально Всемирная паутина (Веб 1.0Веб 2.0Web 3.0) • Семантическая паутинаРунет
Локально СайтПорталСтраницаСлужбаКольцо
Виды сайтови сервисов Виртуальный атласБаннерная сетьБлог (платформа) • Видеохостинг • Вики (список движков список сайтов) • Сайт-визиткаВопрос-ответЗакладкиСлужбы знакомствКаталог ресурсовИнтернет-магазинМикроблогТамблелогНовостной сайтПоисковая система (список) • ПорносайтСоциальная сетьBitTorrent-трекерФайлообменникФорум (СервисИмиджборд) • ФотохостингЧат
Создание иобслуживание РазработкаМастерДизайнВёрсткаПрограммированиеЮзабилитиМодераторСистемный администраторПоисковая оптимизация (SEO) • Продвижение сайтаОпыт взаимодействияРегистрация пользователя
Типы макетов,страниц, сайтов СтатическийДинамическийФиксированныйРезиновыйДинамично эластичныйАдаптивный
Техническое Веб-сервер (сравнение) • Браузер (списоксравнение) • CMF (список (англ.)) • CMS (список (англ.)) • HTTP (ответызаголовки) • SPDYCGIHTMLXHTMLCSSJavaScriptDHTMLDOMXMLAJAXJSONFlashRSSAtomМикроформатfavicon.ico • robots.txtSitemapsКарта сайта.htaccess
Маркетинг Интернет-маркетингИнтернет-рекламаБаннерКонтекстная реклама
Социум и культура БлогосфераИнтернет-сообщество (районное) • Сетевая литература