Початкова сторінка

Микола Жарких (Київ)

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

?

Імпорт даних

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

Діалог установок імпорта дозволяє задати такі параметри : позицію вставки, тип даних у вікні вводу, кодування даних, ім’я елемента даних. Половину діалога займає вікно вводу даних.

Селектор «Позиція вставки» містить варіанти : Перша вершина, Перед поточною, Після поточної, Остання вершина, Дочірня вершина.

Селектор «Що імпортувати» містить варіанти : Файли, Текст.

Селектор «Кодування» містить варіанти : 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, а вкладені в каталог файли і каталоги представляє дочірніми вершинами. Таким чином, під час імпорту каталога утворюється дерево вершин Смереки, ізоморфне дереву файлової системи.

Отже, імпорт одного каталога може створити кілька сотень вершин, що може становити великі зручності при обробці однотипних документів.