XML для тестировщиков (II - Basics)
Основы
Итак, несколько общих слов о XML.XML является языком разметки, по сути это означает то, что код написанный на XML не выполняет каких-либо действий (вычислений) и служит только для структурированного представления информации.
Синтаксис XML соответствует используемому в HTML. Основной конструкцией языка является тег, который в свою очередь может обладать множеством атрибутов.
Теги и элементы (node)
В сети и литературе можно найти большое количество различных трактовок определения тега (более грамотно - дескриптора). Для работы с языками разметки важнее понимать сущность данной абстракции (физический смысл, как любит говорить мой отец), а не знать дословно его определение.Для меня всегда было удобным и показательным утверждение, что тег - это описание коробки, а сама коробка представляет собой элемент (xml node). При этом в коробку можно поместить более мелкие, чтобы все вещицы лежали на своих местах и их можно было легко отыскать.
Для примера возьмем здание любого архива, в котором хранятся различные документы и прочее. Само по себе здание архива это огромная бетонная коробка, придумаем дескриптор для нее. Имя дескриптора должно однозначно отражать сущность описываемого объекта. Это нужно для того, чтобы конечный XML документ был понятен для читателя без какой-либо дополнительной документации. Для здания архива наилучшим образом подходит термин repository (хранилище).
Остановимся немного подробнее на синтаксисе. Каждый элемент XML обрамляется открывающим и закрывающим тегом. Открывающий тег записывается как <имя тега>, закрывающий - </имя тега>. В нашем случае это <repository> </repository>. Встречаются и такие элементы, которые заведомо не имеют внутреннего содержимого, т.е. важны только их характеристики (атрибуты). Для оформления таких элементов используется сокращенная запись, сочетающая в себе открывающий и закрывающий теги - <имя тега />. Но об этом чуть позже.
Добавим в наш пример еще несколько элементов. Любое здание имеет несколько комнат (room). А любой уважающий себя архив имеет огромное количество полок (shelf). Значение каждого элемента shelf отражает количество хранящихся на полке коробок.
Любой XML документ имеет древовидную структуру. Представим наш пример в виде дерева.
Вершиной является корневой элемент - repository. Прямые потомки по отношению к нему - элементы room. В свою очередь каждый элемент room имеет множество дочерних элементов shelf.
Атрибуты (attribute)
В реальном физическом мире каждый предмет обладает набором характеристик, например, цвет, вкус, запах, порядковый номер и т.д. Для элементов XML действует тот же принцип. При этом набор характеристик, которые именуются атрибутами, определяет сам разработчик.Атрибуты и их значения прописываются в дескрипторе (т.е. внутри тега), для этого применяется следующий синтаксис - <имя тега атрибут1="значение"> </имя тега>. Значение атрибута всегда записывается в кавычках (двойных или одинарных).
Вернемся к нашему примеру, какие атрибуты важны для здания, комнаты и полки? Допустим для здания нам необходимо располагать следующими данными: адрес (address), владелец (owner); для комнаты: номер (number), индекс поддерживаемых климатических условий (climate_id).
P.S.
При работе с XML очень важно использовать латинские символы в наименованиях тегов и атрибутов. Стандарт предписывает именовать элементы и атрибуты на английском языке, поэтому подавляющее большинство инструментов разработки и тестирования адекватно выполняет свои функции только при соблюдении данного правила. Однако, при работе с различными заказчиками иногда приходится иметь дело с XML, наименования тегов в которых русскоязычные (или каким-либо иным способом не соответствуют общепринятым правилам). Такие особенности обязательно нужно учитывать и планировать большее время на тестирование, т.к. используемый инструмент может не поддерживать такие экзотические решения.
Комментарии
Отправить комментарий