Перейти к основному содержимому

Структурированные текстовые данные

Всем

Структурированные данные

Что представляют собой структурированные данные?

Структурированные данные – данные, имеющие стандартизированный формат, что обеспечивает как человекочитаемость, так и машиночитаемость. Это информация, представленная в чётко организованной форме, в которой каждая единица имеет своё имя, тип, расположение и роль в общей модели. Такие данные можно обрабатывать автоматически: извлекать, фильтровать, сопоставлять и проверять на соответствие правилам без участия человека.

Структура — это организация данных по заранее определённым правилам, включающая именованные части (элементы или поля), связи между ними и порядок их следования. Структура задаёт контекст: где начинается запись, какие поля она содержит, как эти поля связаны друг с другом и каким значениям разрешено находиться в каждом из них.

Обычный текст — это сплошная последовательность символов без явных границ между смысловыми фрагментами. В структурированных данных каждая часть имеет метку (например, тег <Name>, ключ "age" или позицию в столбце), тип (строка, число, дата), и отношение к другим частям (вложенность, принадлежность к записи, порядок в списке). Благодаря этому машина понимает, где имя, где возраст, где город — и может оперировать ими как отдельными сущностями.

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


XML

XML (eXtensible Markup Language) – иерархический формат для структурированных данных, использует теги и атрибуты, применяется в конфигурациях, веб-сервисах (SOAP) и машиночитаемых документах.

Теги открываются через наименование в фигурных скобках «<Element>» и закрываются таким же тегом, но с добавлением «/» - «</Element>», и всё, что будет между «>» и «<» - будет значением элемента.

У элементов может быть атрибут, который устанавливается внутри фигурных скобок, и имеет значение, отображаемое через знак равенства "=" и заключаемое в кавычки: «<Element Attribute="Value">»:

<ParentElement>
<Child>Значение элемента</Child>
<Child2 Attribute="Значение атрибута">Значение элемента</Child2>
</ParentElement>

SGML

SGML (Standard Generalized Markup Language) был одним из первых языков разметки, стандартизированном ещё в 1986 году, и на его основе был создан HTML (HyperText Markup Language) в начале 1990-х годов.

К середине 1990-х стало понятно, что нужен более гибкий и универсальный формат, чем HTML или SGML, который можно использовать для обмена данными между системами, в конфигурационных файлах, веб-сервисах и в документообороте. Тогда, в 1996 году группа экспертов начала работу над новым стандартом, и в 1998 году W3C (World Wide Web Consortium) выпустила первую официальную спецификацию XML 1.0.

XML-файлы можно валидировать с помощью DTD или XML Schema (XSD), чтобы гарантировать целостность данных, можно использовать пространства имён, чтобы избежать коллизий имён тегов, а также комментарии, и даже экранирование символов.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<TITLE>Пример SGML</TITLE>
</HEAD>
<BODY>
<P>Это параграф текста.</P>
<!-- В SGML элементы должны быть закрыты -->
</BODY>
</HTML>

XSLT

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

После появляения XML, со временем сильно накипело то, что у этого формата не было встроенного механизма визуализации или трансформации данных — то есть, как только данные были описаны в XML, требовалось что-то ещё, чтобы отобразить их в удобном виде (например, в браузере). Чтобы решить эту задачу, W3C создала XSL (eXtensible Stylesheet Language) — набор технологий для работы с XML, включающий XSLT для преобразования, XPath для навигации и XSL-FO для форматирования в печатный формат PDF.

Первая версия XSLT 1.0 была выпущена W3C в ноябре 1999 года.

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" indent="yes"/>

<!-- Корневой элемент шаблона -->
<xsl:template match="/">
<html>
<body>
<h2>Список продуктов</h2>
<table border="1">
<tr bgcolor="#9acd32">
<th>Название</th>
<th>Цена</th>
</tr>
<!-- Цикл по элементам -->
<xsl:for-each select="products/product">
<tr>
<td><xsl:value-of select="name"/></td>
<td><xsl:value-of select="price"/></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>

XSD

XSD (XML Schema Definition) – XML-схема, описывающая структуру документа, которая создаёт модель документа и включает:

  • словарь (названия элементов и атрибутов);
  • модель отношений между элементами и атрибутами и их структуру;
  • типы данных элементов и атрибутов.

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

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="user">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="id" type="xsd:int"/>
<xsd:element name="firstName" type="xsd:string"/>
<xsd:element name="lastName" type="xsd:string"/>
<xsd:element name="email" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>

JSON

JSON (JavaScript Object Notation) – легковесный формат обмена данными, является альтернативой XML для веб-приложений, широко используется в веб-API. Пример:

{
"ключ-текст": "значение",
"ключ-число": 30,
"ключ-массив": ["значение 1", "значение 2"]
}

Формат не был изобретён с нуля — он вырос из практики использования JavaScript для передачи данных в браузерах (объектный литерал, JS Object), и Дуглас Крокфорд систематизировал и популяризировал его. Так что сейчас это независимый формат.

{
"project": "Вселенная IT",
"version": 1.5,
"active": true,
"technologies": ["C#", "Python", "Java"],
"metadata": {
"author": "Timur Tagirov",
"date": "2026-05-02"
}
}

CSV

CSV (Comma-Separated Values) – табличный формат данных, где строки – записи, столбцы разделены запятыми (или другими символами). Пример:

Name,Age,City
John,30,New York
Alice,25,"Los Angeles, CA"

Формат CSV не имеет единого стандарта, и появился ещё в 1970-х, когда возникла потребность в простом способе экспорта и импорта информации между различными системами. Он жив до сих пор за счёт своей простоты и машиночитаемости.

id,name,role,country
1,Timur,Senior Developer,Russia
2,Anna,QA Engineer,Ukraine
3,Boris,DevOps Lead,Kazakhstan

YAML

Файл с расширением .yaml или .yml содержит структурированные данные в человекочитаемом текстовом формате, основанном на отступах и двоеточиях. Такой файл описывает настройки: переменные окружения, параметры сервисов, структуру CI/CD-пайплайнов, манифесты Kubernetes. YAML поддерживает списки, словари, скаляры, многострочные строки и ссылки. Используется в Docker Compose, Ansible, GitHub Actions, Helm и многих современных инструментах.

project:
name: "Universe IT"
status: active
languages:
- C#
- Python
- Java
config:
debug: false
timeout: 30

TOML

Файл с расширением .toml содержит параметры в формате TOML (Tom’s Obvious, Minimal Language) — простом, недвусмысленном текстовом стандарте, сочетающем удобство чтения с однозначностью разбора. Такой файл состоит из секций в квадратных скобках, пар «ключ = значение», поддерживает комментарии, даты и массивы. Применяется в конфигурации Rust-проектов (Cargo.toml), Python-сборщиках (Poetry), инструментах DevOps и настройке приложений.

[package]
name = "my-pet-project"
version = "0.1.0"
authors = ["Timur Tagirov <timur@example.com>"]

[dependencies]
python = "^3.9"
requests = "2.28.0"

[server]
host = "localhost"
port = 8080
debug = true

.md, .markdown

Файл с расширением .md содержит текст с лёгкой разметкой: # для заголовков, */- для списков, ` для кода, [ссылка](url) для гиперссылок. Такой формат легко читается как «как есть» и преобразуется в HTML, PDF или другие форматы. Применяется для документации (README.md), статей, заметок, публикаций на GitHub и Docusaurus — как в этом проекте.

# Заголовок первого уровня

## Заголовок второго уровня

Это **жирный** текст и это *курсив*.

- Пункт списка 1
- Пункт списка 2

> Блок цитаты с важным замечанием.

[Ссылка на документацию](https://example.com)

.proto — файл спецификации Protocol Buffers

Файл с расширением .proto содержит описание структуры данных и интерфейсов сервисов в формате Protocol Buffers от Google. Такой файл определяет сообщения (со вложенными полями и типами), перечисления и gRPC-сервисы. Из .proto генерируются классы на разных языках (Java, Python, Go и др.), обеспечивающие эффективную сериализацию и RPC-взаимодействие. Используется в микросервисных архитектурах и высоконагруженных системах.

syntax = "proto3";

message User {
int32 id = 1;
string name = 2;
string email = 3;
repeated string hobbies = 4; // Повторяющиеся поля

enum Role {
ROLE_UNSPECIFIED = 0;
ROLE_ADMIN = 1;
ROLE_USER = 2;
}

Role user_role = 5;
}

См. также

Другие статьи этого же раздела в боковом меню (как на странице «О разделе»).