Loading AI tools
розширювана мова розмітки даних З Вікіпедії, вільної енциклопедії
Розши́рювана мо́ва розмі́тки (англ. EXtensible Markup Language, скорочено XML) — запропонований консорціумом World Wide Web Consortium (W3C) стандарт побудови мов розмітки ієрархічно структурованих даних для обміну між різними застосунками, зокрема, через Інтернет.[1] Є спрощеною підмножиною мови розмітки SGML. XML-документ складається із текстових знаків, і придатний до читання людиною.
Розширення файлу: | .xml |
---|---|
MIME-тип: | application/xml, text/xml (застаріла) |
Узагальнений ідентифікатор типу: | public.xml |
Розробник: | World Wide Web Consortium |
Тип формату: | мова розмітки даних |
Розширений з: | SGML |
Розширений до: | XHTML, RSS, Atom, … |
Стандарт(и): | 1.0 (Четверта редакція) 1.1 (Друга редакція) |
Стандарт XML (англ. Recommendation, перше видання від 10 лютого 1998, останнє, четверте видання 29 вересня 2006) визначає набір базових лексичних та синтаксичних правил для побудови мови опису інформації шляхом застосування простих тегів. Цей формат достатньо гнучкий для того, аби бути придатним для застосування в різних галузях[2]. Іншими словами, запропонований стандарт визначає метамову, на основі якої шляхом запровадження обмежень на структуру та зміст документів визначаються специфічні, предметно-орієнтовані мови розмітки даних. Ці обмеження описуються мовами схем (англ. Schema), такими як XML Schema (XSD), DTD або RELAX NG. Прикладами мов, заснованих на XML, є: XSLT, XAML, XUL, RSS, MathML, GraphML, XHTML, SVG, а також XML Schema.
<пункт>Пункт 1</пункт>
). Порожні елементи можуть позначатися «закритим» тегом, наприклад <IAmEmpty />
. Така пара еквівалентна <IAmEmpty></IAmEmpty>
.Назви елементів чутливі до регістру літер. Наприклад, наступна пара елементів правильна:
<Step>
… </Step>
у той час як ця — ні:
<Step>
… </step>
Правильний вибір назв для XML-елементів підкреслюватиме значення даних у створеній мові розмітки. Це сприятиме полегшенню роботи людей з такими документами, зберігаючи можливості для комп'ютерної обробки даних. Вибір змістовних назв передає семантику елементів та атрибутів для людини, без посилання на зовнішню документацію. Однак це може призвести до надмірності розмітки, що ускладнює редагування й збільшує розмір файлів.
Приклад XML-документа:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<mediawiki xmlns="http://www.mediawiki.org/xml/export-0.3/" xml:lang="uk">
<page>
<title>Фукідід</title>
<id>1529</id>
<revision>
<id>4382</id>
<timestamp>2006-09-18T22:11:53Z</timestamp>
<minor />
<comment>Interwiki</comment>
<text xml:space="preserve">{{Wikipedia}}
*Історія — це філософія в прикладах.
</text>
</revision>
</page>
</mediawiki>
XML-документи мають як фізичну, так і логічну структуру.
&назва;
в самому документі, та, наприклад %назва;
у визначені його типу) можуть слугувати в ролі позначень спеціальних символів, посилань на спеціальні символи (вказуючи коди символів &#десяткове;
, або &#xшістнадцяткове;
) або окремих документів чи фрагментів тексту.XML-документ має ієрархічну логічну структуру, і може представлятись у вигляді дерева. Вузлами цього дерева можуть бути:
<Назва-тегу>
) та (</Назва-тегу>
), або<Назва-тегу />
),назва атрибута="значення атрибута"
) і знаходяться або у відкриваючому, або у порожньому тегу (подібно до метаданих),<?Обробник параметр ?>
)<!-- Текст коментаря -->
)<![CDATA[ довільний текст]]>
).XML-документ повинен мати лише один кореневий елемент. Решта елементів є піделементами цього кореневого елемента.
Деякі веббраузери здатні безпосередньо відображати XML-документи. Це може досягатись шляхом застосування таблиці стилів (англ. Stylesheet). Вказані у таблиці стилів операції можуть призводити до перетворення XML-документа в інший, відмінний від XML формат.
Залишивши назви, дозволену ієрархію, та значення елементів і атрибутів відкритою та можливою бути визначеною в спеціалізованих схемах або визначеннях типу документа (DTD), XML утворює синтаксичну основу для створення спеціалізованих, заснованих на XML мовах розмітки даних. Загальний синтаксис таких документів стабільний і наперед визначений — документи мають відповідати базовим вимогам XML, гарантуючи те, що довільне програмне забезпечення з підтримкою XML буде здатне щонайменше зчитати і відтворити відносну структуру інформації, що міститься в них. Схема лише доповнює синтаксичні правила множиною обмежень. Зазвичай схеми обмежують назви елементів та атрибутів, дозволені типи значень і допустиму ієрархію елементів, наприклад, дозволяючи лише елементу з назвою «народження» містити піделемент із назвою «місяць» та з назвою «день», і кожен із них мусить містити лише літери. Обмеження, вказані в схемі, можуть також включати присвоєння певних типів даних для впливу на те, як обробляється інформація; наприклад, дані елемента «місяць» можна визначити як такі, що містять лише місяць, як це визначено відповідно до використаної мови схем.
Коректний XML-документ, що відповідає обмеженням схеми або DTD, називається валідним.
Найдавнішим форматом схем для XML є успадкований від SGML формат визначення типу документа (Document Type Definition, DTD). У той час, як через включення до стандарту XML 1.0 DTD став поширеним форматом схем, він має такі обмеження:
DTD все ще використовується в багатьох програмах, оскільки він вважається найпростішим форматом для аналізу та збереження.
На заміну DTD було розроблено нову мову схем — XML Schema (буквально — XML-схема), скорочено позначається як XSD (від англ. XML Schema Definition). XSD набагато потужніші за DTD в описанні заснованих на XML мов. Вони використовують багатий набір типів даних, підтримують детальніші обмеження на структуру документів, та повинні оброблятись складнішими системами. XSD побудовано на основі XML, що робить можливим використання звичайних інструментів XML для їхньої обробки, хоча реалізації XSD вимагають набагато більше аніж просто можливість читати XML.
Серед недоліків XSD називають такі:
RELAX NG є іншою поширеною мовою схем для XML. Вперше RELAX NG було визначено стандартом OASIS, а тепер — міжнародним стандартом ISO (як частина DSDL). Ця мова схем має два формати: оснований на XML, та компактний, не-XML. Компактний синтаксис призначений для покращення можливості читання та написання схем, однак, оскільки існує точно визначений спосіб[3] перетворення компактного формату в оснований на XML, і навпаки, не втрачаються переваги від використання стандартних XML-інструментів. RELAX NG має простіші системи для визначення та валідації у порівнянні з XML Schema, що робить її привабливішою для використання та реалізації. Також існує можливість використання модулів роботи з типом даних; наприклад, автор схеми RELAX NG може вказати, що значення XML-документа мають відповідати визначенням типам даних у форматі XML Schema Datatypes.
Стандарт ISO DSDL (англ. Document Schema Description Languages, мови описання схем документів) об'єднує широке коло малих мов схем, кожна із яких призначена для розв'язання окремих проблем. До DSDL належить RELAX NG із повним та компактним синтаксисом, мова припущень Schematron, та мови для визначення типів даних, обмежень на літери, перейменування та розкривання мнемонік, та основане на просторах назв перенаправлення фрагментів документів у різні валідатори. Мови DSDL все ще не мають підтримки як у XML Schema, і є, певною мірою, реакцією видавців на брак можливостей XML Schema для видавничої справи.
Деякі мови схем не тільки описують структуру певного формату XML-документів, а ще і мають обмежені можливості впливу на обробку документів цього формату. Як DTD, так і XSD мають цю можливість; наприклад, вони можуть визначати значення для атрибутів «за замовченням». Натомість, як RELAX NG так і Schematron таких можливостей не мають.
До XML-обробки відносяться форматування, синтаксичний аналіз, редагування, перевірка коректності і перетворення в інші формати[4].
До традиційних технологій обробки XML-документів належать такі три технології:
До новіших технологій, що почали здобувати поширення останнім часом належать:
Простий програмний інтерфейс для XML (англ. Simple API for XML, SAX) є основаним на подіях інтерфейсом лексичного аналізу. Відповідно до цієї моделі, документ аналізується послідовно, а вміст документа передається на обробники подій аналізатора користувача. SAX є порівняно швидким та легким для реалізації, проте складним з точки зору задачі отримання інформації із різних частин XML-документів, оскільки розробник аналізатора мусить дбати про відстеження поточної частини документа. Запропонований SAX підхід краще підходить до ситуацій, коли певний тип інформації завжди обробляється однаково, попри те, в якій частині документа вона знаходиться.
Об'єктна модель документа (англ. Document Object Model, DOM) є програмним інтерфейсом, який дозволяє здійснювати обхід цілого документа так, наче він є деревом, вузлами якого є об'єкти, що відтворюють зміст документа. Документ DOM може створюватись синтаксичним аналізатором або користувачами (з деякими обмеженнями). Типи даних вузлів DOM-дерев є абстрактними; реалізації мають власні, специфічні для мов програмування типи даних. Реалізації DOM мають тенденцію до інтенсивного використання пам'яті, оскільки зазвичай перед початком роботи документ має бути повністю завантажений, оброблений та перетворений на дерево об'єктів.
Фільтр в родині XSL може перетворювати XML-документи на інші XML-документи[джерело?], для перегляду на екрані або друку.
З точки зору активного аналізу (англ. Pull parsing)[5] XML-документ розглядається як послідовність елементів, які зчитуються послідовно, використовуючи шаблон проектування ітератор. Такий підхід дозволяє створення рекурсивних аналізаторів, у яких структура коду відображає структуру аналізованих XML-документів, проміжні результати аналізу можуть бути використані і розміщені у вигляді локальних змінних в підпрограмах, що виконують аналіз, передані як параметри до підпрограм нижчого рівня або повернені до підпрограм вищого рівня. До прикладів активних аналізаторів належать StAX у мові програмування Java, SimpleXML у PHP та System.Xml.XmlReader у .NET.
Активний аналізатор створює ітератор, що послідовно обходить різні елементи, атрибути та дані в XML-документі. Код, що використовує цей «ітератор», може перевіряти поточний елемент (аби дізнатись, наприклад, чи є цей елемент стартовим, кінцевим або текстовим), та дізнаватись про його атрибути (локальна назва, простір назв, значення XML-атрибутів, зміст тексту тощо) і може пересунути ітератор на наступний елемент. Таким чином, код аналізатора може зчитувати інформацію із документа під час обходу. Підхід рекурсивного спуску сприяє зберіганню даних у вигляді типізованих локальних змінних в коді аналізатора, в той час як SAX, наприклад, зазвичай вимагає, аби аналізатор явно зберігав проміжні дані в стеку елементів, що є вищими елементами від того, який зараз аналізується. Код активного аналізатора може бути більш прямолінійним та зрозумілим і простішим для підтримки, аніж код SAX аналізатора.
Іншим підходом до обробки XML-документів є зв'язування даних (англ. Data binding). Відповідно до цього підходу, XML-дані доступні у вигляді спеціальних, строго типізованих структур даних.
Специфікації та стандарти XML видаються комітетом W3C, поточний стандарт — версії 1.1 (див. [Архівовано 13 червня 2006 у Wayback Machine.]).
Основними відмінностями від SGML є:
Див. також повний перелік відмінностей [Архівовано 15 червня 2006 у Wayback Machine.].
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.