Начальная страница

Николай Жарких (Киев)

Персональный сайт

?

Импорт данных

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

Диалог настроек импорта позволяет задать такие параметры: позицию вставки, тип данных в окне ввода, тип кодирования данных, имя элемента данных. Половину диалога занимает окно ввода данных.

Селектор «Позиция вставки» содержит варианты: Первая вершина, Перед текущей, После текущей, Последняя вершина, Дочерняя вершина.

Селектор «Что импортировать» содержит варианты: Файлы, Текст.

Селектор «Кодирование» содержит варианты: Win-1251, UTF-8.

Окошко «Элемент» содержит имя элемента данных для импорта.

В окно ввода данных следует поместить данные для импорта.

Следует знать, что операция импорта является достаточно сложной и детальное поведение программы определяется не только установками диалога, но и самими данными.

Импорт текста

Если селектор «Что импортировать» установлено как Текст, Смерека считает, что окно ввода данных содержит литеральний текст импорта.

Способ обработки этого текста определяется сигнатурами.

Если текст начинается с символов <?xml и содержит строку xmlns="https://www.m-zharkikh.name/xml/Smereka/Import.xsd", текст считается XML текстом Смереки и обрабатывается, как объяснено ниже.

Если текст содержит строку <html> и задан «Элемент данных», Смерека считает, что задан HTML текст и обрабатывает его, как объяснено ниже.

Если эти сигнатуры не найдены, текст считается обычным; Смерека создает одну новую вершину класса Information и вмещает этот текст в атрибут HTMLCode для той языковой версии, которая является текущей в момент импорта.

Импорт XML текста Смереки

При импорте XML текста Смереки следует учитывать, что селектор «Кодирование» игнорируется. Используется кодирование, указанное в заголовке XML документа.

Использование ид-ов вершин. Если документ содержит абсолютные ид-ы вершин (например, <Node id="1104">, Смерека создаст новые вершины с этими ид-ами (или перезапишут существующие вершины): если документ содержит относительные ид-и вершин (например, <Node id="Ref1104">, Смерека создаст новые вершины с очередными ид-ами, при этом существующие вершины не будут изменены.

Использование атрибута parent. Рассмотрим возможные варианты.

1. Атрибут parent не задан. В этом случае импортированная вершина будет размещена согласно селектора «Позиция вставки.

2. Атрибут задано абсолютно, например <parent Target="1055" />. При этом новая вершина становится дочерью вершины, заданной этим атрибутом, селектор «Позиция вставки» игнорируется.

2. Атрибут задано относительно, например <parent Target="Ref1055" />. Если вершина с таким относительным ид-ом присутствует в импортируемом наборе вершин, новая вершина становится дочерью этой вершины; в противном случае из значения атрибута извлекается число (в нашем примере – 1055) и оно трактуется как абсолютное значение.

3. Использование атрибутов class и Template. Эти атрибуты являются указателями на метаобьекты Смереки, поэтому их можно задавать с абсолютной или относительной адресацией, например <class Target="Ref52" />, <Template Target="97" />. Но для облегчения чтения XML текста человеком (не программой!) их можно задавать в символьном виде, например <class>Information</class>, <Template>Default</Template>, где фигурируют символьные имена соответственно метаклассов или меташаблонов Смереки.

Следовательно, при импорте XML текста Смерека создает столько вершин, сколько их записано в XML файле. При других видах импорта текста из каждого текста создается одна вершина.

Импорт HTML текста

Если текст распознан как HTML текст, его кодирования определяется на основании декларации Content-Type, например <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">, а селектор «Кодирование» игнорируется.

Смерека анализирует структуру документа в поиске элемента, ид которого задано «Элементом данных». Если такой элемент найден, Смерека создает новую вершину класса Information и помещает внутренний HTML код элемента в атрибут HTMLCode для той языковой версии, которая является текущей в момент импорта.

Например, если задано имя элемента данных MainText и в HTML коде найдено элемент <div id="MainText">, то будет импортировано содержимое div-а.

Если нужный элемент данных не найден, Смерека импортирует весь HTML код литерально.

Импорт файлов

Если селектор «Что импортировать» установлено как Файлы, Смерека считает, что окно ввода данных содержит список файлов для импорта (по одному файлу в строке).

Каждая строка может представлять локальное имя файла, локальное имя каталога или URL.

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

Если строка распознается как локальный файл, Смерека прежде всего проверяет сигнатуры графических форматов GIF, JPG, PNG. Если такие сигнатуры найдены, Смерека создает новую вершину класса Image и записывает имя файла как ее атрибут Image. При определенных условиях Смерека может автоматически создавать маленькие изображения (thumbnails), которые затем могут быть использованы, например, при построении фотогалерей.

Если графические сигнатуры не найдены, Смерека обрабатывает файл как текстовый документ (по изложенным выше правилам.

Если строка распознается как локальный каталог, Смерека составляет иерархический список файлов и каталогов, которые в нем содержатся, вплоть до полного исчерпания всех вложенных каталогов. Затем каждый элемент этого списка обрабатывается по изложенным выше правилам импорта локальных файлов. Для элементов списка, которые представляют каталоги, Смерека создает вершину класса Information, а вложенные в каталог файлы и каталоги представляет дочерними вершинами. Таким образом, при импорте каталога образуется дерево вершин Смереки, изоморфное дереву файловой системы.

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