|
1 | 1 | # catalog.xml |
2 | 2 |
|
3 | | -В **catalog.xml** описываются пути до hrc и hrd файлов. |
4 | | - |
5 | | -Формат файла catalog.xml имеет фиксированную структуру, описанную в [catalog.xsd](https://colorer.github.io/schema/v1/catalog.xsd). |
6 | | - |
7 | | -Простой пример содержимого файла выглядит представлен ниже на вкладке Simple. |
8 | | - |
9 | | -В базовой библиотеке схем широко применяются возможности синтаксиса xml по вставке одного файла в другой (external entity). Поэтому пример файла, поставляемого в базовой библиотеке схем, выглядит немного сложнее, вкладка Hard. |
| 3 | +Файл **catalog.xml** является центральным конфигурационным файлом для Colorer Library. Его основная задача – индексировать и указывать пути к файлам HRC-схем (определяющих синтаксис типов файлов) и HRD-стилей (определяющих правила их раскраски). |
| 4 | +Структура файла catalog.xml строго определена и соответствует XML-схеме, доступной по адресу: [catalog.xsd](https://colorer.github.io/schema/v1/catalog.xsd). |
| 5 | +Ниже представлены два примера структуры файла catalog.xml: |
10 | 6 |
|
| 7 | +1. **Простой пример (вкладка "Simple"):** Демонстрирует базовую структуру с прямым указанием файлов. |
| 8 | +2. **Сложный пример (вкладка "Hard"):** Иллюстрирует использование XML External Entities для включения содержимого из других файлов. Этот подход активно применяется в базовой библиотеке схем Colorer для лучшей организации и модульности. |
11 | 9 |
|
12 | 10 | === "Simple" |
13 | 11 |
|
|
57 | 55 | </catalog> |
58 | 56 | ``` |
59 | 57 |
|
60 | | -## Подстановки файлов (external entity) |
| 58 | +## Включение файлов с помощью XML External Entities |
61 | 59 |
|
62 | | -**external entity** - вставка внешнего файла в структуру текущего. |
| 60 | +**XML External Entity (внешняя сущность)** – это стандартный механизм языка XML, который позволяет включать содержимое одного XML-файла (или другого внешнего ресурса) в структуру текущего XML-документа. |
63 | 61 |
|
64 | | -Запись вида |
| 62 | +Объявление внешней сущности, например: |
65 | 63 | ``` |
66 | 64 | <!ENTITY catalog-console SYSTEM "hrd/catalog-console.xml"> |
67 | 65 | ``` |
68 | | -в начале xml файла говорит о том, что вместо `&catalog-console;` ниже в файле будет подставляться содержимое файла `hrd/catalog-console.xml`. При указании относительного пути, путь рассчитывается от текущего файла. Работа с путями описана в разделе [Форматы путей файлов](file-paths.md). |
| 66 | +размещается в секции DOCTYPE в начале XML-файла (как показано в примере "Hard"). Это объявление связывает имя сущности (`catalog-console`) с внешним файлом (`hrd/catalog-console.xml`). |
| 67 | +Впоследствии, когда XML-парсер встречает в теле документа ссылку на эту сущность (например, `&catalog-console;`), он заменяет её содержимым указанного внешнего файла. |
| 68 | +Относительные пути в атрибуте SYSTEM (как `hrd/catalog-console.xml`) разрешаются относительно местоположения текущего файла catalog.xml. Подробнее о форматах путей см. в разделе [Форматы путей файлов](file-paths.md). |
| 69 | + |
| 70 | +## Элемент `<catalog>` |
| 71 | + |
| 72 | +Это корневой элемент XML-документа catalog.xml. Он служит контейнером для двух основных секций: `<hrc-sets>` и `<hrd-sets>`. |
69 | 73 |
|
70 | | -## catalog |
| 74 | +## Элемент `<hrc-sets>` |
71 | 75 |
|
72 | | -Основной блок xml-файла. Содержит в себе hrc-sets и hrd-sets. |
| 76 | +Секция `<hrc-sets>` предназначена для регистрации HRC-схем в библиотеке. Внутри этого элемента используются дочерние элементы `<location link="..."/>` для указания путей: |
73 | 77 |
|
74 | | -## hrc-sets |
| 78 | +* **К конкретному HRC-файлу:** Например, `<location link="hrc/myparser.hrc"/>`. |
| 79 | +* **К каталогу с HRC-файлами:** Например, `<location link="hrc/languages/"/>`. В этом случае Colorer Library автоматически загрузит все файлы с расширением `.hrc` из указанного каталога. |
| 80 | + * **Исключение:** Файлы с расширением `.ent.hrc` (обычно используемые как фрагменты для XML External Entities) игнорируются при сканировании каталога. |
| 81 | + * **Нерекурсивный поиск:** Сканирование каталога происходит только на первом уровне вложенности; файлы в подкаталогах не загружаются автоматически через указание родительского каталога. |
75 | 82 |
|
76 | | -В блоке `hrc-sets` задаются пути до hrc файлов. Это может быть путь как до конкретного файла, так и до папки. В случае указания пути до папки в ней обрабатываются все файлы с расширением `.hrc`, исключая `.ent.hrc`. Но только на первом уровне, во вложенных папках поиск файлов не производится. |
| 83 | +## Элемент `<hrd-sets>` |
77 | 84 |
|
78 | | -## hrd-sets |
| 85 | +Секция `<hrd-sets>` служит для регистрации доступных HRD-стилей раскраски. Каждый стиль определяется элементом `<hrd>`, который имеет следующие атрибуты и дочерние элементы: |
| 86 | + |
| 87 | +* **Атрибут `class`**: Определяет тип вывода, для которого предназначен стиль (например, "console" для консольного вывода, "rgb" для HTML/графического вывода с RGB-цветами, "text" для простого текстового вывода). |
| 88 | +* **Атрибут `name`**: Уникальное имя стиля в рамках его класса (например, "default", "eclipse", "dark_blue"). Это имя используется для выбора стиля в приложениях. |
| 89 | +* **Атрибут `description`**: Краткое описание стиля (например, "Aqua on blue", "White (crimsoned)"). |
| 90 | +* **Элемент `<location link="..."/>`**: Указывает путь к файлу `.hrd`, содержащему определение данного стиля. |
| 91 | + |
| 92 | +Пример: |
| 93 | + |
| 94 | +```xml |
| 95 | +<hrd class="rgb" name="default" description="White (crimsoned)"> |
| 96 | + <location link="hrd/rgb/white.hrd"/> |
| 97 | +</hrd> |
| 98 | +``` |
79 | 99 |
|
80 | | -В блоке `hrd-sets` задаются пути до файлов цветовых стилей. |
| 100 | +Это определяет стиль с именем "default" для класса "rgb", описание которого "White (crimsoned)", а само определение стиля находится в файле hrd/rgb/white.hrd. |
0 commit comments