XML


Extensible Markup Language ( XML ) - это язык разметки, который определяет набор правил для кодирования документов в формате, который удобен для чтения человеком и компьютером . World Wide Web Consortium «s XML 1.0 Спецификация [2] 1998 [3] и ряд других связанных с ними спецификаций [4] -все из них бесплатно открытых стандартов -define XML. [5]

Цели разработки XML подчеркивают простоту, универсальность и удобство использования в Интернете . [6] Это текстовый формат данных с сильной поддержкой Unicode для разных человеческих языков . Хотя дизайн XML ориентирован на документы, этот язык широко используется для представления произвольных структур данных [7], например, используемых в веб-сервисах .

Существует несколько систем схем, помогающих в определении языков на основе XML, в то время как программисты разработали множество интерфейсов прикладного программирования (API) для помощи в обработке данных XML.

Суть того, почему необходимы расширяемые языки разметки, объясняется на языке разметки (например, см. Язык разметки § XML ) и в Стандартном обобщенном языке разметки .

Были разработаны сотни форматов документов с использованием синтаксиса XML [8], включая RSS , Atom , SOAP , SVG и XHTML . XML-форматы на основе стали по умолчанию для многих инструментов офисно-производительности, в том числе Microsoft Office ( Office Open XML ), OpenOffice.org и LibreOffice ( OpenDocument ), и Apple , «s iWork [ править ] . XML также предоставил базовый язык для протоколов связи, таких как XMPP . Приложения для Microsoft .NET Framework используют файлы XML для конфигурации, а списки свойств представляют собой реализацию хранилища конфигурации, построенного на XML. [9]

Многие отраслевые стандарты данных, такие как Health Level 7 , OpenTravel Alliance , FpML , MISMO и Национальная модель обмена информацией , основаны на XML и разнообразных функциях спецификации схемы XML. Многие из этих стандартов довольно сложны, и нередко спецификации содержат несколько тысяч страниц. [ необходимая цитата ] В публикации Darwin Information Typing Architecture является отраслевым стандартом данных XML. XML широко используется для поддержки различных форматов публикации.

XML широко используется в сервис-ориентированной архитектуре (SOA). Разрозненные системы взаимодействуют друг с другом посредством обмена XML-сообщениями. Формат обмена сообщениями стандартизирован как схема XML (XSD). Это также называется канонической схемой. XML стал широко использоваться для обмена данными через Интернет. IETF RFC: 3023 , который теперь заменен RFC: 7303 , дал правила для создания типов Интернет-носителей для использования при отправке XML. Он также определяет типы мультимедиа application/xmlи text/xml, которые говорят только о том, что данные находятся в XML, и ничего не о его семантике .

RFC 7303 также рекомендует давать языкам на основе XML типы носителей, оканчивающиеся на +xml; например image/svg+xmlдля SVG . Дополнительные рекомендации по использованию XML в сетевом контексте содержатся в RFC 3470, также известном как IETF BCP 70, документе, охватывающем многие аспекты разработки и развертывания языка на основе XML.

Материал в этом разделе основан на спецификации XML. Это не исчерпывающий список всех конструкций, которые появляются в XML; он представляет собой введение в ключевые конструкции, наиболее часто встречающиеся в повседневном использовании.

Персонаж

XML-документ - это строка символов . Почти каждый допустимый символ Unicode может появиться в XML-документе.

Процессор и приложение

Процессор анализирует разметку и передает структурированную информацию к приложению . Спецификация предъявляет требования к тому, что должен делать XML-процессор, а что не делать, но приложение выходит за его рамки. Процессор (как его называют в спецификации) часто называют анализатором XML .

Разметка и контент

Символы, составляющие XML-документ, делятся на разметку и содержимое , которые можно различить, применяя простые синтаксические правила. Как правило, строки, составляющие разметку, либо начинаются с символа <и заканчиваются на >, либо начинаются с символа &и заканчиваются на ;. Строки символов, не являющиеся разметкой, являются содержимым. Однако в разделе CDATA разделители и ]]>классифицируются как разметка, а текст между ними классифицируется как контент. Кроме того, пробелы до и после самого внешнего элемента классифицируются как разметка.

Тег

Тег является Разметка конструкция , которая начинается с <и заканчивается >. Теги бывают трех видов:
  • начальный тег , например
    ;
  • конечный тег , например
;
  • тег пустого элемента , например .
  • Элемент

    Элемент представляет собой логический компонент документа , который либо начинается с начальным тегом и заканчивается соответствующим конечным тегом или состоит только из пустого элемента тега. Символы между начальным и конечным тегами, если они есть, являются содержимым элемента и могут содержать разметку, включая другие элементы, которые называются дочерними элементами . Пример такой Hello, world!. Другой  >.

    Атрибут

    Атрибут является разметка конструкция , состоящая из пары имя-значение , которое существует в пределах стартового тега или пустого элемента тега. Например Madonna, имена атрибутов - «src» и «alt», а их значения - «madonna.jpg» и «Madonna» соответственно. Другой пример: Connect A to B.имя атрибута - «число», а его значение - «3». Атрибут XML может иметь только одно значение, и каждый атрибут может появляться не более одного раза в каждом элементе. В обычной ситуации, когда требуется список из нескольких значений, это должно быть выполнено путем кодирования списка в правильно сформированный атрибут XML [i] с некоторым форматом, выходящим за рамки того, что XML определяет сам себя. Обычно это список, разделенный запятой или точкой с запятой, или, если известно, что отдельные значения не содержат пробелов, [ii] можно использовать список, разделенный пробелами.
    Welcome!
    , где атрибут «class» имеет значение «внутреннее поле приветствия», а также указывает два имени класса CSS «внутреннее» и «поле приветствия».

    Декларация XML

    Документы XML могут начинаться с объявления XML, которое описывает некоторую информацию о себе. Пример такой .

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

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

    Допустимые символы

    Кодовые точки Unicode в следующих диапазонах действительны в документах XML 1.0: [10]

    • U + 0009 (горизонтальная табуляция), U + 000A (перевод строки), U + 000D (возврат каретки): это единственные элементы управления C0, принятые в XML 1.0;
    • U + 0020 – U + D7FF, U + E000 – U + FFFD: исключает некоторые несимволы в BMP (все суррогаты, U + FFFE и U + FFFF запрещены);
    • U + 10000 – U + 10FFFF: сюда входят все кодовые точки в дополнительных плоскостях, включая несимвольные.

    XML 1.1 расширяет набор разрешенных символов, чтобы включить все вышеперечисленное, а также оставшиеся символы в диапазоне U + 0001 – U + 001F. [11] В то же время, однако, он ограничивает использование управляющих символов C0 и C1, кроме U + 0009 (горизонтальная табуляция), U + 000A (перевод строки), U + 000D (возврат каретки) и U + 0085. (Следующая строка), требуя, чтобы они были записаны в экранированной форме (например, U + 0001 должен быть записан как или его эквивалент). В случае символов C1 это ограничение является обратной несовместимостью; он был введен, чтобы позволить обнаруживать распространенные ошибки кодирования.

    Кодовая точка U + 0000 (Null) - единственный символ, который не разрешен ни в одном документе XML 1.0 или 1.1.

    Обнаружение кодировки

    Набор символов Unicode может быть закодирован в байты для хранения или передачи множеством различных способов, называемых «кодировками». Сам Unicode определяет кодировки, охватывающие весь репертуар; к хорошо известным относятся UTF-8 и UTF-16 . [12] Есть много других кодировок текста, предшествующих Unicode, например ASCII и ISO / IEC 8859 ; их репертуар символов почти в каждом случае является подмножеством набора символов Unicode.

    XML позволяет использовать любую кодировку, определенную в Unicode, и любые другие кодировки, символы которых также присутствуют в Unicode. XML также предоставляет механизм, с помощью которого процессор XML может надежно, без каких-либо предварительных знаний, определять, какая кодировка используется. [13] Кодировки, отличные от UTF-8 и UTF-16, не обязательно распознаются каждым анализатором XML.

    Побег

    XML предоставляет средства экранирования для включения символов, которые проблематично включить напрямую. Например:

    • Символы «<» и «&» являются ключевыми маркерами синтаксиса и никогда не могут появляться в содержимом за пределами раздела CDATA . Разрешено, но не рекомендуется использовать "<" в значениях сущности XML. [14]
    • Некоторые кодировки символов поддерживают только подмножество Unicode. Например, допустимо кодировать XML-документ в ASCII, но в ASCII отсутствуют кодовые точки для символов Юникода, таких как «é».
    • Возможно, не удастся набрать символ на машине автора.
    • Некоторые символы имеют глифы, которые нельзя визуально отличить от других символов, например неразрывный пробел (  ) "" и пробел ( ) "", а также заглавную кириллическую букву A ( А) "А" и заглавную латинскую букву A ( A) «А».

    Есть пять предопределенных сущностей :

    • < представляет собой "<";
    • > представляет ">";
    • & представляет "&";
    • ' представляет " ' ";
    • " представляет ' " '.

    Все разрешенные символы Unicode могут быть представлены ссылкой на числовые символы . Рассмотрим китайский символ «中», числовой код которого в Юникоде - шестнадцатеричный 4E2D или десятичный 20 013. Пользователь, чья клавиатура не предлагает метода для ввода этого символа, все равно может вставить его в XML-документ, закодированный как или . Точно так же строка «I <3 Jörg» может быть закодирована для включения в XML-документ как I <3 Jörg.