Xml формат что это
Перейти к содержимому

Xml формат что это

  • автор:

XML для начинающих

Excel для Microsoft 365 Word для Microsoft 365 Outlook для Microsoft 365 PowerPoint для Microsoft 365 Access для Microsoft 365 Visio, план 2 Excel 2021 Word 2021 Outlook 2021 PowerPoint 2021 Access 2021 Visio профессиональный 2021 Excel 2019 Word 2019 Outlook 2019 PowerPoint 2019 Access 2019 Visio профессиональный 2019 Excel 2016 Word 2016 Outlook 2016 PowerPoint 2016 Access 2016 Visio профессиональный 2016 Office 2016 Excel 2013 Word 2013 Outlook 2013 PowerPoint 2013 Access 2013 Visio 2013 Office 2013 Еще. Меньше

Вероятно, вы слышали о языке XML и вам известно множество причин, по которым его необходимо использовать в вашей организации. Но что именно представляет собой XML? В этой статье объясняется, что такое XML и как он работает.

В этой статье

  • Пометки, разметка и теги
  • Отличительные черты XML
  • Правильно сформированные данные
  • Схемы
  • Преобразования
  • XML в системе Microsoft Office

Пометки, разметка и теги

Чтобы понять XML, он помогает понять идею маркировки данных. Люди создавали документы на протяжении веков, и так же долго они помечают эти документы. Например, школьные учителя все время помечают студенческие документы. Они говорят учащимся перемещать абзацы, уточнять предложения, исправлять орфографические ошибки и т. д. Маркировка документа — это то, как мы определяем структуру, смысл и внешний вид информации в документе. Если вы когда-либо использовали функцию Отслеживания изменений в Microsoft Office Word, вы использовали компьютеризированную форму разметки.

В мире информационных технологий термин «пометка» превратился в термин «разметка». При разметке используются коды, называемые тегами (или иногда токенами), для определения структуры, визуального оформления и — в случае XML — смысла данных.

Текст этой статьи в формате HTML является хорошим примером применения компьютерной разметки. Если в Microsoft Internet Explorer щелкнуть эту страницу правой кнопкой мыши и выбрать команду Просмотр HTML-кода, вы увидите читаемый текст и теги HTML, например

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

.

) и местоположение рисунков.

Отличительные черты XML

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

При описании структуры и смысла данных становится возможным их повторное использование несколькими способами. Например, если у вас есть блок данных о продажах, каждый элемент в котором четко определен, то можно загрузить в отчет о продажах только необходимые элементы, а другие данные передать в бухгалтерскую базу данных. Иначе говоря, можно использовать одну систему для генерации данных и пометки их тегами в формате XML, а затем обрабатывать эти данные в любых других системах вне зависимости от клиентской платформы или операционной системы. Благодаря такой совместимости XML является основой одной из самых популярных технологий обмена данными.

Учитывайте при работе следующее:

  • HTML нельзя использовать вместо XML. Однако XML-данные можно заключать в HTML-теги и отображать на веб-страницах.
  • Возможности HTML ограничены предопределенным набором тегов, общим для всех пользователей.
  • Правила XML разрешают создавать любые теги, требуемые для описания данных и их структуры. Допустим, что вам необходимо хранить и совместно использовать сведения о домашних животных. Для этого можно создать следующий XML-код:

  Izzy Siamese 6 yes no Izz138bod Colin Wilcox  

Как видно, по тегам XML понятно, какие данные вы просматриваете. Например, ясно, что это данные о коте, и можно легко определить его имя, возраст и т. д. Благодаря возможности создавать теги, определяющие почти любую структуру данных, язык XML является расширяемым.

Но не путайте теги в данном примере с тегами в HTML-файле. Например, если приведенный выше текст в формате XML вставить в HTML-файл и открыть его в браузере, то результаты будут выглядеть следующим образом:

Izzy Siamese 6 yes no Izz138bod Colin Wilcox

Веб-браузер проигнорирует теги XML и отобразит только данные.

Правильно сформированные данные

Вероятно, вы слышали, как кто-то из ИТ-специалистов говорил о «правильно сформированном» XML-файле. Правильно сформированный XML-файл должен соответствовать очень строгим правилам. Если он не соответствует этим правилам, XML не работает. Например, в предыдущем примере каждый открывающий тег имеет соответствующий закрывающий тег, поэтому в данном примере соблюдено одно из правил правильно сформированного XML-файла. Если же удалить из файла какой-либо тег и попытаться открыть его в одной из программ Office, то появится сообщение об ошибке и использовать такой файл будет невозможно.

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

XML не зависит от платформы, и это значит, что любая программа, созданная для использования XML, может читать и обрабатывать XML-данные независимо от оборудования или операционной системы. Например, при применении правильных тегов XML можно использовать программу на настольном компьютере для открытия и обработки данных, полученных с мейнфрейма. И, независимо от того, кто создал XML-данные, с ними данными можно работать в различных приложениях Office. Благодаря своей совместимости XML стал одной из самых популярных технологий обмена данными между базами данных и пользовательскими компьютерами.

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

Схемы

Не пугайтесь термина «схема». Схема — это просто XML-файл, содержащий правила для содержимого XML-файла данных. Файлы схем обычно имеют расширение XSD, тогда как для файлов данных XML используется расширение XML.

Схемы позволяют программам проверять данные. Они формируют структуру данных и обеспечивают их понятность создателю и другим людям. Например, если пользователь вводит недопустимые данные, например текст в поле даты, программа может предложить ему исправить их. Если данные в XML-файле соответствуют правилам в схеме, для их чтения, интерпретации и обработки можно использовать любую программу, поддерживающую XML. Например, как показано на приведенном ниже рисунке, Excel может проверять данные на соответствие схеме CAT.

Схемы могут быть сложными, и в данной статье невозможно объяснить, как их создавать. (Кроме того, скорее всего, в вашей организации есть ИТ-специалисты, которые знают, как это делать.) Однако полезно знать, как выглядят схемы. Следующая схема определяет правила для набора тегов . :

Не беспокойтесь, если в примере не все понятно. Просто обратите внимание на следующее:

  • Строковые элементы в приведенном примере схемы называются объявлениями. Если бы требовались дополнительные сведения о животном, например его цвет или особые признаки, то специалисты отдела ИТ добавили бы к схеме соответствующие объявления. Систему XML можно изменять по мере развития потребностей бизнеса.
  • Объявления являются мощным средством управления структурой данных. Например, объявление означает, что теги, такие как и , должны следовать в указанном выше порядке. С помощью объявлений можно также проверять типы данных, вводимых пользователем. Например, приведенная выше схема требует ввода положительного целого числа для возраста кота и логических значений (TRUE или FALSE) для тегов ALTERED и DECLAWED.
  • Если данные в XML-файле соответствуют правилам схемы, то такие данные называют допустимыми. Процесс контроля соответствия XML-файла данных правилам схемы называют (достаточно логично) проверкой. Большим преимуществом использования схем является возможность предотвратить с их помощью повреждение данных. Схемы также облегчают поиск поврежденных данных, поскольку при возникновении такой проблемы обработка XML-файла останавливается.

Преобразования

Как говорилось выше, XML также позволяет эффективно использовать и повторно использовать данные. Механизм повторного использования данных называется преобразованием XSLT (или просто преобразованием).

Вы (или ваш ИТ-отдел) можете также использовать преобразования для обмена данными между серверными системами, например между базами данных. Предположим, что в базе данных А данные о продажах хранятся в таблице, удобной для отдела продаж. В базе данных Б хранятся данные о доходах и расходах в таблице, специально разработанной для бухгалтерии. База данных Б может использовать преобразование, чтобы принять данные от базы данных A и поместить их в соответствующие таблицы.

Сочетание файла данных, схемы и преобразования образует базовую систему XML. На следующем рисунке показана работа подобных систем. Файл данных проверяется на соответствие правилам схемы, а затем передается любым пригодным способом для преобразования. В этом случае преобразование размещает данные в таблице на веб-странице.

В следующем примере кода показан один из способов создания преобразования. Он загружает данные в таблицу на веб-странице. Опять же, смысл примера не в том, чтобы показать, как написать преобразование, а в том, чтобы показать одну форму, которую может принять преобразование.

    
Name Breed Age Altered Declawed License Owner

В этом примере показано, как может выглядеть текст одного из типов преобразования, но помните, что вы можете ограничиться четким описанием того, что вам нужно от данных, и это описание может быть сделано на вашем родном языке. Например, вы можете пойти в отдел ИТ и сказать, что необходимо напечатать данные о продажах для конкретных регионов за последние два года, и что эти сведения должны выглядеть так-то и так-то. После этого специалисты отдела могут написать (или изменить) преобразование, чтобы выполнить вашу просьбу.

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

XML в системе Microsoft Office

Профессиональные выпуски Office обеспечивают всестороннюю поддержку XML. Начиная с Microsoft Office 2007, в Microsoft Office используются форматы файлов на основе XML, например DOCX, XLSX и PPTX. Поскольку XML-данные хранятся в текстовом формате вместо запатентованного двоичного формата, ваши клиенты могут определять собственные схемы и использовать ваши данные разными способами без лицензионных отчислений. Дополнительные сведения о новых форматах см. в разделе Форматы Open XML и расширения имен файлов. К другим преимуществам относятся:

  • Меньший размер файлов. Новый формат использует ZIP и другие технологии сжатия, поэтому размер файла на 75 процентов меньше, чем в двоичных форматах, применяемых в более ранних версиях Office.
  • Более простое восстановление данных и большая безопасность. Формат XML может быть легко прочитан пользователем, поэтому если файл поврежден, его можно открыть в Блокноте или другой программе для просмотра текста и восстановить хотя бы часть данных. Кроме того, новые файлы более безопасны, потому что они не могут содержать код Visual Basic для приложений (VBA). Если новый формат используется для создания шаблонов, то элементы ActiveX и макросы VBA находятся в отдельном, более безопасном разделе файла. Кроме того, можно удалять личные данные из документов с помощью таких средств, как инспектор документов. Дополнительные сведения об использовании инспектора документов см. в статье Удаление скрытых данных и персональных данных путем проверки документов.

Пока так хорошо, но что делать, если у вас есть XML-данные без схемы? Программы Office, поддерживающие XML, имеют собственные подходы к работе с данными. Например, Excel определяет схему, если открыть XML-файл, который еще не имеет ее. Затем Excel предоставляет возможность загрузки этих данных в XML-таблицу. Xml-списки и таблицы можно использовать для сортировки, фильтрации и добавления вычислений в данные.

Включение средств XML в Office

По умолчанию вкладка «Разработчик» не отображается. Ее необходимо добавить на ленту для использования команд XML в Office.

  • В Office 2016, Office 2013 или Office 2010: Отображение вкладки «Разработчик».
  • В Office 2007: Отображение вкладки разработчика или запуск в режиме разработчика.

Xml формат что это

XML (eXtensible Markup Language — расширяемый язык разметки) — это язык программирования для создания логической структуры данных, их хранения и передачи в виде, удобном и для компьютера, и для человека. Отличается простотой синтаксиса и универсальностью. XML позволяет описывать документы с помощью тегов, которые можно задавать самостоятельно.

Освойте профессию «Frontend-разработчик»

Где применяется XML

XML используется везде, где требуется выделить логическое содержимое документа для обработки. Формат рекомендован Консорциумом Всемирной паутины (W3C), поэтому применяется в API, когда ответ от сервера поступает в виде XML-файлов.

  • записывать иерархию — «один подчиняется другому»;
  • размечать текст по смыслу от важного к второстепенному;
  • хранить типовые данные — скрипты, настройки программ, названия чего-либо;
  • размечать текст для машинного обучения;
  • хранить результаты работы текстовых редакторов.

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

  • XHTML — при отображении страниц в интернете;
  • OWL и RDF — при описании структуры и ресурсов каталогов;
  • SVG — при описании изображений в векторном формате;
  • WSDL — при обращении к удаленным веб-сервисам и программам;
  • XAML — при описании интерфейса приложений.

Профессия / 9 месяцев
Frontend-разработчик

Создавайте интерфейсы сервисов, которыми пользуются все

Group 1321314347 (1)

Структура XML

У XML-файлов древовидная структура. Это значит, что в них используется набор тегов, внутри которых могут находиться другие теги со своими значениями. Самый верхнеуровневый узел называется корнем, а все, что находится внизу, — листьями. Теги заключены в скобки <>.

XML-документ создается по правилам.

  • В нем может быть элемент «пролог». Если он есть, то находится в начале документа. В примере: . Это означает, что используется XML версии 1.0 и кодировка UTF-8. Может быть полезно, если в файле есть текст на разных языках.
  • Документ обязательно должен иметь корневой элемент. Его еще называют «root». В примере: .
  • У всех элементов должны быть закрывающие теги. У них есть дополнительный символ — /. В примере: , , , .
  • Все теги являются регистро-чувствительными. Это значит, что если, например, тег закрыт , документ будет оформлен некорректно.
  • Значения атрибутов должны быть заключены в кавычки. Атрибут — характеристика тега. Любые теги могут иметь атрибуты. В «прологе» это version и encoding, а «1.0» и «UTF-8» — значения.
  • Вложенность тегов контролируется, поэтому важно следить за порядком открывающих и закрывающих тегов.
  • В XML-коде учитываются все символы форматирования, включая переводы строк, пробелы, табуляцию.

Станьте Frontend-разработчиком
и создавайте интерфейсы сервисов, которыми пользуются все

Что такое пространство имен XML

Иногда в коде могут использоваться одинаковые по написанию объекты. Например, Claim — и жалоба, и обращение. Необходимо рассказать системе, какие правила обработки применить к первому, а какие — ко второму объекту.

Для этого используется пространство имен — метод избежания конфликтов наименования элементов. Оно задается в виде атрибутов к тегу. Например, у нас есть корневой элемент root, который имеет два атрибута.

В первом случае мы указываем системе, что xmlns_rst=»http://www.example.org/request» — это обращения, а xmlns_clm=»http://www.example.org/claim» — жалобы, и добавляем префиксы в соответствующие части кода. Так система-обработчик сможет выдать корректный результат.

Чем XML отличается от HTML

XML и HTML — это два взаимодополняющих друг друга языка, которые различаются назначением. Первый предназначен для хранения и передачи данных, а второй — для их отображения.

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

Документ XML легко преобразуется в формат HTML. Когда данные с сервера передаются в браузер, процесс выполняется автоматически. Для ручной конвертации нужно использовать инструменты, например Fconvert, Aconvert, BeautifyConverter.

Читайте также С чего начать изучать HTML и CSS

Особенности XML

  • Большинство приложений продолжают работать, даже если добавить или удалить часть данных. Поэтому XML и переводится как «расширяемый язык разметки». Он хорошо приспособлен для создания новых версий файлов и объектов.
  • Данные хранятся в виде текста, что позволяет им быть программно- и машинно-независимыми.
  • Язык понятен и людям, и машинам. Главное преимущество — читаемость. Например, для обозначения выделения текста жирным в xml достаточно написать , а синтаксис HTML будет выглядеть так: .
  • Размер XML-документа больше бинарного представления тех же самых данных.
  • Большинство задач можно решить с помощью простых и производительных решений, все возможности синтаксиса XML требуются редко.
  • Большая гибкость и отсутствие жестких ограничений позволяют одной и той же структуре быть представленной множеством различных способов.

Как отобразить код XML

Текстовый документ с расширением .xml можно открыть с помощью следующих инструментов:

  • Microsoft Excel;
  • Microsoft Word;
  • блокнота Windows;
  • любого интернет-браузера;
  • редакторов XML (например, XML Editor, Code Beautify).

Основные стандарты XML

Стандарты XML — это расширения, дающие дополнительные возможности при работе с XML-файлами. Вот некоторые из них:

  • XPath — для навигации по документам XML;
  • XSLT — для преобразования XML-документов в другие форматы (например, в HTML);
  • XQuery — для обработки данных в XML-формате и др.;
  • AJAX — для изменения содержимого веб-страницы без ее перезагрузки;
  • XML DOM — для получения, изменения, добавления или удаления отдельных элементов из XML-файла;
  • DTD — для определения списка разрешенных элементов для сущности в XML-файле.

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

Frontend-разработчик

Научитесь создавать удобные и эффектные сайты, сервисы и приложения, которые нужны всем. Сегодня профессия на пике актуальности: в России 9000+ вакансий, где требуется знание JavaScript.

Работа с XML

Adobe InDesign CS5 является одной из программ, позволяющих создавать XML-файлы и работать с ними. После разметки содержимого файла InDesign тегами его можно сохранить и экспортировать в формате XML. Это позволит впоследствии преобразовать его либо в другой файл InDesign, либо в файл другой программы. Аналогичным образом можно импортировать XML-файл в InDesign, а затем отображать и форматировать XML-данные в этой программе по своему усмотрению.

О формате XML

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

Расширяемый язык

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

Например, InCopy позволяет создать тег Heading1 и указывать его в документе для каждого заголовка первого уровня. После сохранения документа в виде XML-файла содержимое раздела «Heading1 » может быть импортировано при помощи любого приложения, поддерживающего формат XML, и представлено в виде веб-страницы, печатного каталога, папки, прайс-листа или таблицы базы данных.

InDesign является одной из программ, позволяющих создавать XML-файлы и работать с ними. После разметки содержимого файла InDesign тегами его можно сохранить и экспортировать в формате XML. Это позволит впоследствии преобразовать его либо в другой файл InDesign, либо в файл другой программы. Аналогичным образом можно импортировать XML-файл в InDesign, а затем отображать и форматировать XML-данные в этой программе по своему усмотрению.

Adobe InCopy является одной из программ, позволяющих создавать XML-файлы и работать с ними. После разметки содержимого файла InCopy тегами его можно сохранить и экспортировать в формате XML. Это позволит впоследствии преобразовать его в другой файл InCopy, InDesign или другой программы.

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

Примечание.

Следует различать XML-теги и текст с тегами InCopy. Дополнительные сведения о тексте с тегами, который представляет еще один способ экспорта и импорта содержимого InCopy, см. в файле PDF о тексте с тегами по адресу www.adobe.com/go/learn_id_taggedtext_cs5_ru (PDF).

Структура XML-данных

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

Структуру XML-данных можно увидеть на панели «Структура», которая отражает иерархию и порядок следования элементов. В структуре XML дочерние элементы включены в родительские, которые, в свою очередь, могут также являться дочерними элементами. С другой стороны, родительские элементы содержат дочерние элементы, которые, в свою очередь, могут являться родительскими элементами для других дочерних элементов.

Например, на следующем рисунке представлен элемент chapter , который содержит несколько элементов recipe (то есть является для них родительским элементом). Каждый из элементов recipe , в свою очередь, является родительским для элементов recipename , ingredients , instructions , notes и servings . Все элементы содержатся внутри элемента Root , который всегда расположен в верхней строке панели «Структура».

Например, на следующем рисунке представлен элемент chapter , который содержит элемент recipe , являющийся для него родительским элементом. В свою очередь, элемент recipe является родительским для элементов recipename и ingredients . Все элементы содержатся внутри элемента Story , который всегда расположен в верхней строке панели «Структура».

Инструменты XML

Работу с XML-содержимым в InCopy обеспечивают палитры «Структура» и «Теги». На палитре «Структура» отображается иерархическая структура элементов документа. Чтобы элемент можно было легко идентифицировать, InCopy отображает его тег и значок, указывающий на тип содержимого. Кроме того, на панели «Структура» могут отображаться первые несколько слов текста элемента, именуемого текстовый сниппет, который не следует путать с файлами сниппетов, в которых сохраняются объекты для повторного использования.

A. Значки треугольников для разворачивания или сворачивания элементов B. Элемент (помещенный в макет) C. Элемент (не в макете) D. Текстовый сниппет E. Тег элемента

A. Значки треугольников для разворачивания или сворачивания элементов B. Элемент, помещенный в макет C. Текстовый сниппет D. Тег элемента

Панель «Структура» позволяет просматривать, редактировать и работать с XML-элементами. При работе с XML панель «Структура» используется различными способами. Например, чтобы поместить в макет импортируемое XML-содержимое, можно перетащить элементы с панели «Структура» непосредственно на страницу. Она также применяется для настройки иерархии элементов. Панель «Структура» позволяет добавлять элементы, атрибуты, комментарии и инструкции по обработке.

На палитре «Теги» перечислены теги элементов. Они могут быть импортированы, экспортированы, добавлены, удалены и переименованы. Палитра «Теги» позволяет применять теги элементов к содержимому, которое необходимо экспортировать в XML, а также к фреймам перед импортом в них XML-содержимого.

На палитре «Теги» перечислены теги элементов. Они могут быть импортированы, экспортированы, добавлены, удалены и переименованы. Палитра «Теги» позволяет применять теги элементов к содержимому, которое необходимо экспортировать в XML.

О файлах DTD

Чтобы обеспечить совместное использование данных в формате XML, стандартный набор имен тегов и атрибутов элементов должен быть согласован с другими пользователями, чтобы все члены группы использовали и применяли теги аналогичным образом. Одним из способов обеспечить это является применение DTD-файлов (Document Type Definition).

DTD-файл предоставляет собой набор элементов и атрибутов, которыми могут пользоваться члены рабочей группы. Он также определяет правила нахождения элементов в иерархической структуре. Например, в DTD-файле может быть указано, что элемент «Заголовок» является дочерним элементом элемента «Материал», поскольку заголовок должен находиться внутри материала. Если будет присутствовать тег заголовка, но не будет тега для материала, в котором он должен находиться, то элемент «Заголовок» будет помечен как недопустимый. DTD-файл позволяет найти и пометить в файле InDesign ошибки в структуре данных. Этот процесс называется проверкой .

Для использования DTD-файл загружают в документ (если он еще не загружен). Все содержащиеся в нем имена элементов импортируются на палитру «Теги». У всех остальных пользователей, также загрузивших данный DTD-файл, будут определены элементы с теми же именами, благодаря чему все члены группы будут пользоваться одними и теми же элементами. Импортированные из DTD элементы заблокированы, то есть их нельзя удалить и переименовать до тех пор, пока DTD-файл не будет удален из документа.

Хотя импорт DTD в InCopy не поддерживается, DTD-файлы, импортируемые в InDesign, при редактировании материала в InCopy будут доступны. InCopy позволяет просматривать их и выполнять по ним проверку, гарантируя правильное применение тегов.

Что такое XML

Если вы тестируете API, то должны знать про два основных формата передачи данных:

  • XML — используется в SOAP (всегда) и REST-запросах (реже);
  • JSON — используется в REST-запросах.

XML, в переводе с англ eXtensible Markup Language — расширяемый язык разметки. Используется для хранения и передачи данных. Так что увидеть его можно не только в API, но и в коде.

Этот формат рекомендован Консорциумом Всемирной паутины (W3C), поэтому он часто используется для передачи данных по API. В SOAP API это вообще единственно возможный формат входных и выходных данных!

См также:
Что такое API — общее знакомство с API
Что такое JSON — второй популярный формат
Введение в SOAP и REST: что это и с чем едят — видео про разницу между SOAP и REST.

Так что давайте разберемся, как он выглядит, как его читать, и как ломать! Да-да, а куда же без этого? Надо ведь выяснить, как отреагирует система на кривой формат присланных данных.

Как устроен XML

Возьмем пример из документации подсказок Дадаты по ФИО:

 Виктор Иван 7 

И разберемся, что означает эта запись.

Теги

В XML каждый элемент должен быть заключен в теги. Тег — это некий текст, обернутый в угловые скобки:

Текст внутри угловых скобок — название тега.
Тега всегда два:

    Открывающий — текст внутри угловых скобок

Ой, ну ладно, подловили! Не всегда. Бывают еще пустые элементы, у них один тег и открывающий, и закрывающий одновременно. Но об этом чуть позже!

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

— На въезде в город написано его название: Москва
— На выезде написано то же самое название, но перечеркнутое: Москва*

* Пример с дорожными знаками я когда-то давно прочитала в статье Яндекса, только ссылку уже не помню. А пример отличный!

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

В любом XML-документе есть корневой элемент. Это тег, с которого документ начинается, и которым заканчивается. В случае REST API документ — это запрос, который отправляет система. Или ответ, который она получает.

Чтобы обозначить этот запрос, нам нужен корневой элемент. В подсказках корневой элемент — «req».

Он мог бы называться по другому:

Да как угодно. Он показывает начало и конец нашего запроса, не более того. А вот внутри уже идет тело документа — сам запрос. Те параметры, которые мы передаем внешней системе. Разумеется, они тоже будут в тегах, но уже в обычных, а не корневых.

Значение элемента

Значение элемента хранится между открывающим и закрывающим тегами. Это может быть число, строка, или даже вложенные теги!

Вот у нас есть тег «query». Он обозначает запрос, который мы отправляем в подсказки.

Внутри — значение запроса.

Это как если бы мы вбили строку «Виктор Иван» в GUI (графическом интерфейсе пользователя):

Пользователю лишняя обвязка не нужна, ему нужна красивая формочка. А вот системе надо как-то передать, что «пользователь ввел именно это». Как показать ей, где начинается и заканчивается переданное значение? Для этого и используются теги.

Система видит тег «query» и понимает, что внутри него «строка, по которой нужно вернуть подсказки».

Параметр count = 7 обозначает, сколько подсказок вернуть в ответе. Если тыкать подсказки на демо-форме Дадаты, нам вернется 7 подсказок. Это потому, что туда вшито как раз значение count = 7. А вот если обратиться к документации метода, count можно выбрать от 1 до 20.

Откройте консоль разработчика через f12, вкладку Network, и посмотрите, какой запрос отправляется на сервер. Там будет значение count = 7.

  • Виктор Иван — строка
  • 7 — число

Атрибуты элемента

У элемента могут быть атрибуты — один или несколько. Их мы указываем внутри отрывающегося тега после названия тега через пробел в виде

название_атрибута = «значение атрибута»
Виктор Иван Виктор Иван

Зачем это нужно? Из атрибутов принимающая API-запрос система понимает, что такое ей вообще пришло.

Например, мы делаем поиск по системе, ищем клиентов с именем Олег. Отправляем простой запрос:

Олег

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

 Олег 02.01.1980 MOBILE +7 916 1234567  

Давайте разберем эту запись. У нас есть основной элемент party.

У него есть 3 атрибута:

  • type = «PHYSICAL» — тип возвращаемых данных. Нужен, если система умеет работать с разными типами: ФЛ, ЮЛ, ИП. Тогда благодаря этому атрибуту мы понимаем, с чем именно имеем дело и какие поля у нас будут внутри. А они будут отличаться! У физика это может быть ФИО, дата рождения ИНН, а у юр лица — название компании, ОГРН и КПП
  • sourceSystem = «AL» — исходная система. Возможно, нас интересуют только физ лица из одной системы, будем делать отсев по этому атрибуту.
  • rawId = «2» — идентификатор в исходной системе. Он нужен, если мы шлем запрос на обновление клиента, а не на поиск. Как понять, кого обновлять? По связке sourceSystem + rawId!

Внутри party есть элементы field.

У элементов field есть атрибут name. Значение атрибута — название поля: имя, дата рождения, тип или номер телефона. Так мы понимаем, что скрывается под конкретным field.

Это удобно с точки зрения поддержки, когда у вас коробочный продукт и 10+ заказчиков. У каждого заказчика будет свой набор полей: у кого-то в системе есть ИНН, у кого-то нету, одному важна дата рождения, другому нет, и т.д.

Но, несмотря на разницу моделей, у всех заказчиков будет одна XSD-схема (которая описывает запрос и ответ):

— есть элемент party;
— у него есть элементы field;
— у каждого элемента field есть атрибут name, в котором хранится название поля.

А вот конкретные названия полей уже можно не описывать в XSD. Их уже «смотрите в ТЗ». Конечно, когда заказчик один или вы делаете ПО для себя или «вообще для всех», удобнее использовать именованные поля — то есть «говорящие» теги. Какие плюшки у этого подхода:

— При чтении XSD сразу видны реальные поля. ТЗ может устареть, а код будет актуален.
— Запрос легко дернуть вручную в SOAP Ui — он сразу создаст все нужные поля, нужно только значениями заполнить. Это удобно тестировщику + заказчик иногда так тестирует, ему тоже хорошо.

В общем, любой подход имеет право на существование. Надо смотреть по проекту, что будет удобнее именно вам. У меня в примере неговорящие названия элементов — все как один будут field. А вот по атрибутам уже можно понять, что это такое.

Помимо элементов field в party есть элемент attribute. Не путайте xml-нотацию и бизнес-прочтение:

  • с точки зрения бизнеса это атрибут физ лица, отсюда и название элемента — attribute.
  • с точки зрения xml — это элемент (не атрибут!), просто его назвали attribute. XML все равно (почти), как вы будете называть элементы, так что это допустимо.

У элемента attribute есть атрибуты:

  • type = «PHONE» — тип атрибута. Они ведь разные могут быть: телефон, адрес, емейл.
  • rawId = «AL.2.PH.1» — идентификатор в исходной системе. Он нужен для обновления. Ведь у одного клиента может быть несколько телефонов, как без ID понять, какой именно обновляется?

Такая вот XML-ка получилась. Причем упрощенная. В реальных системах, где хранятся физ лица, данных сильно больше: штук 20 полей самого физ лица, несколько адресов, телефонов, емейл-адресов…

Но прочитать даже огромную XML не составит труда, если вы знаете, что где. И если она отформатирована — вложенные элементы сдвинуты вправо, остальные на одном уровне. Без форматирования будет тяжеловато…

А так всё просто — у нас есть элементы, заключенные в теги. Внутри тегов — название элемента. Если после названия идет что-то через пробел: это атрибуты элемента.

XML пролог

Иногда вверху XML документа можно увидеть что-то похожее:

Эта строка называется XML прологом. Она показывает версию XML, который используется в документе, а также кодировку. Пролог необязателен, если его нет — это ок. Но если он есть, то это должна быть первая строка XML документа.

UTF-8 — кодировка XML документов по умолчанию.

XSD-схема

XSD (XML Schema Definition) — это описание вашего XML. Как он должен выглядеть, что в нем должно быть? Это ТЗ, написанное на языке машины — ведь схему мы пишем… Тоже в формате XML! Получается XML, который описывает другой XML.

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

Если мы создаем SOAP-метод, то указываем в схеме:

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

Поэтому зачем запускать сложную процедуру, если запрос заведом «плохой»? И выдавать ошибку через 5 минут, а не сразу? Валидация по схеме помогает быстро отсеять явно невалидные запросы, не нагружая систему.

Более того, похожую защиту ставят и некоторые программы-клиенты для отправки запросов. Например, SOAP Ui умеет проверять ваш запрос на well formed xml, и он просто не отправит его на сервер, если вы облажались. Экономит время на передачу данных, молодец!

А простому пользователю вашего SOAP API схема помогает понять, как составить запрос. Кто такой «простой пользователь»?

  1. Разработчик системы, использующей ваше API — ему надо прописать в коде, что именно отправлять из его системы в вашу.
  2. Тестировщик, которому надо это самое API проверить — ему надо понимать, как формируется запрос.

Итого, как используется схема при разработке SOAP API:

  • Наш разработчик пишет XSD-схему для API запроса: нужно передать элемент такой-то, у которого будут такие-то дочерние, с такими-то типами данных. Эти обязательные, те нет.
  • Разработчик системы-заказчика, которая интегрируется с нашей, читает эту схему и строит свои запросы по ней.
  • Система-заказчик отправляет запросы нам.
  • Наша система проверяет запросы по XSD — если что-то не так, сразу отлуп.
  • Если по XSD запрос проверку прошел — включаем бизнес-логику!
 olga@gmail.com Ольга 1 
 name@gmail.com 1  
 maxim@gmail.com *(&$%*($ Парольчик  
 test@gmail.com Test 1  

Попробуем написать для него схему. В запросе должны быть 3 элемента (email, name, password) с типом «string» (строка). Пишем:

А в WSDl сервиса она записана еще проще:

Конечно, в схеме могут быть не только строковые элементы. Это могут быть числа, даты, boolean-значения и даже какие-то свои типы:

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

Практика: составляем свой запрос

Ок, теперь мы знаем, как «прочитать» запрос для API-метода в формате XML. Но как его составить по ТЗ? Давайте попробуем. Смотрим в документацию. И вот почему я даю пример из Дадаты — там классная документация!

Что, если я хочу, чтобы мне вернулись только женские ФИО, начинающиеся на «Ан»? Берем наш исходный пример:

 Виктор Иван 7 

В первую очередь меняем сам запрос. Теперь это уже не «Виктор Иван», а «Ан»:

 Ан 7 

Далее смотрим в ТЗ. Как вернуть только женские подсказки? Есть специальный параметр — gender. Название параметра — это название тегов. А внутри уже ставим пол. «Женский» по английски будет FEMALE, в документации также. Итого получили:

 Ан 7 FEMALE 

Ненужное можно удалить. Если нас не волнует количество подсказок, параметр count выкидываем. Ведь, согласно документации, он необязательный. Получили запрос:

 Ан FEMALE 

Вот и все! Взяли за основу пример, поменяли одно значение, один параметр добавили, один удалили. Не так уж и сложно. Особенно, когда есть подробное ТЗ и пример )))

Попробуй сам!
Напишите запрос для метода MagicSearch в Users. Мы хотим найти всех Ивановых по полному совпадению, на которых висят актуальные задачи.

Well Formed XML

Разработчик сам решает, какой XML будет считаться правильным, а какой нет. Но есть общие правила, которые нельзя нарушать. XML должен быть well formed, то есть синтаксически корректный.

Чтобы проверить XML на синтаксис, можно использовать любой XML Validator (так и гуглите). Я рекомендую сайт w3schools. Там есть сам валидатор + описание типичных ошибок с примерами.

В готовый валидатор вы просто вставляете свой XML (например, запрос для сервера) и смотрите, всё ли с ним хорошо. Но можете проверить его и сами. Пройдитесь по правилам синтаксиса и посмотрите, следует ли им ваш запрос.

Правила well formed XML:

  1. Есть корневой элемент.
  2. У каждого элемента есть закрывающийся тег.
  3. Теги регистрозависимы!
  4. Соблюдается правильная вложенность элементов.
  5. Атрибуты оформлены в кавычках.

Давайте пройдемся по каждому правилу и обсудим, как нам применять их в тестировании. То есть как правильно «ломать» запрос, проверяя его на well-formed xml. Зачем это нужно? Посмотреть на фидбек от системы. Сможете ли вы по тексту ошибки понять, где именно облажались?

1. Есть корневой элемент

Нельзя просто положить рядышком 2 XML и полагать, что «система сама разберется, что это два запроса, а не один». Не разберется. Потому что не должна.

И если у вас будет лежать несколько тегов подряд без общего родителя — это плохой xml, не well formed. Всегда должен быть корневой элемент:

 Тест 123  Антон 123 
  Тест 123  Антон 123  

Что мы делаем для тестирования этого условия? Правильно, удаляем из нашего запроса корневые теги!

2. У каждого элемента есть закрывающийся тег

Тут все просто — если тег где-то открылся, он должен где-то закрыться. Хотите сломать? Удалите закрывающийся тег любого элемента.

Но тут стоит заметить, что тег может быть один. Если элемент пустой, мы можем обойтись одним тегом, закрыв его в конце:

Это тоже самое, что передать в нем пустое значение

Аналогично сервер может вернуть нам пустое значение тега. Можно попробовать послать пустые поля в Users в методе FullUpdateUser. И в запросе это допустимо (я отправила пустым поле name1), и в ответе SOAP Ui нам именно так и отрисовывает пустые поля.

Итого — если есть открывающийся тег, должен быть закрывающийся. Либо это будет один тег со слешом в конце.

Для тестирования удаляем в запросе любой закрывающийся тег.

Тест
Тест
Тест

3. Теги регистрозависимы

Как написали открывающий — также пишем и закрывающий. ТОЧНО ТАК ЖЕ! А не так, как захотелось.

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

Тест Иван Тест 
Тест

4. Правильная вложенность элементов

Элементы могут идти друг за другом

Один элемент может быть вложен в другой

Но накладываться друг на друга элементы НЕ могут!

Иванов Иван Иванович 
Иванов Иван Иванович Иван 
Иванов Иван Иванович 
Иванов Иван Иванович 

5. Атрибуты оформлены в кавычках

Даже если вы считаете атрибут числом, он будет в кавычках:

Виктор Иван Виктор Иван

Для тестирования пробуем передать его без кавычек:

Виктор Иван

Итого

XML (eXtensible Markup Language) используется для хранения и передачи данных.

Передача данных — это запросы и ответы в API-методах. Если вы отправляете SOAP-запрос, вы априори работаете именно с этим форматом. Потому что SOAP передает данные только в XML. Если вы используете REST, то там возможны варианты — или XML, или JSON.

Хранение данных — это когда XML встречается внутри кода. Его легко понимает как машина, так и человек. В формате XML можно описывать какие-то правила, которые будут применяться к данным, или что-то еще.

Вот пример использования XML в коде open-source проекта folks. Я не знаю, что именно делает JacksonJsonProvider, но могу «прочитать» этот код — есть функционал, который мы будем использовать (featuresToEnable), и есть тот, что нам не нужен(featuresToDisable).

Формат XML подчиняется стандартам. Синтаксически некорректный запрос даже на сервер не уйдет, его еще клиент порежет. Сначала проверка на well formed, потом уже бизнес-логика.

Правила well formed XML:

  1. Есть корневой элемент.
  2. У каждого элемента есть закрывающийся тег.
  3. Теги регистрозависимы!
  4. Соблюдается правильная вложенность элементов.
  5. Атрибуты оформлены в кавычках.

Если вы тестировщик, то при тестировании запросов в формате XML обязательно попробуйте нарушить каждое правило! Да, система должна уметь обрабатывать такие ошибки и возвращать адекватное сообщение об ошибке. Но далеко не всегда она это делает.

А если система публичная и возвращает пустой ответ на некорректный запрос — это плохо. Потому что разработчик другой системы налажает в запросе, а по пустому ответу даже не поймет, где именно. И будет приставать к поддержке: «Что же у меня не так?», кидая информацию по кусочкам и в виде скринов исходного кода. Оно вам надо? Нет? Тогда убедитесь, что система выдает понятное сообщение об ошибке!

Что такое JSON — второй популярный формат

PS — больше полезных статей ищите в моем блоге по метке «полезное». А полезные видео — на моем youtube-канале

  • xml
  • api
  • тестирование
  • тестирование по
  • тестирование приложений
  • тестирование веб-приложений

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *