OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Четверг, 28 Март, 2024 21:52

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 75 ]  На страницу 1, 2, 3, 4  След.

Нужны ли Вам инструменты для работы с XML в вашей деятельности?
Да 64%  64%  [ 23 ]
Нет 36%  36%  [ 13 ]
Всего голосов : 36
Автор Сообщение
 Заголовок сообщения: Xmlcore - реализация DOM и XML для BlackBox
СообщениеДобавлено: Вторник, 27 Май, 2008 23:05 

Зарегистрирован: Вторник, 29 Август, 2006 12:32
Сообщения: 2662
Откуда: Россия, Ярославль
Приветствую!
Где то с год назад был разговор на форуме про создание подсистемы по работе с XML. Спор разгорелся на концептуальном уровне... и затих.
Совсем недавно производственная необходимость заставила вернуться к теме XML. Были изучены стандарты организации w3c http://www.w3c.org Document Object Model http://www.w3.org/DOM/ и eXtensible Markup Language http://www.w3.org/XML/.

DOM представляет собой интерфейсное описание структуры для хранения данных документа (изначально HTML). В основе лежит класс Узел дерева, который посредством расширения приобретает ту или иную функциональность для описания различных по содержанию и назначению фрагментов документа. Был реализован только начальный, самый первый уровень спецификации DOM, т.н. Level 1. Сейчас существует уже Level 3 со значительно расширенными возможностями.

XML представляет собой указания по разметке текста документа тегами, группы которых могут интерпретироваться специальными программами-процессорами(XML Processor) особым образом. Была реализована (не полностью) версия 1.0 редакция 4 данного стандарта. Из-за того, что название подсистемы "Xml" уже значится в списке занятых на сайте Ominc., подсистема была названа Xmlcore.(здесь была бы уместна идея пространства имён подсистем, например Ominc.Xml, Yaroslavl.Xml и т.д. - мысли вслух :-) ). В качестве основы для XML парсера(обработчика текста xml-документа) был взят парсер, включёный в состав WinAOS. Нереализованными остались обработка Нотаций(Notation), Деклараций разметки(Markup declaration), Сущностей(Entities) и Ссылок на сущности(Entity reference)(обратитесь к описанию XML для подробной информации).

Итог работы: Dom level 1 реализован. Xml 1.0 частично реализован. Формат выходного и входного файлов: текст с кодировкой UTF-8. Используется подсистема Basics для работы с динамическими строками. Есть демонстрационные программы для обеих подсистем. Документации пока нет.

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

(модератор) 09.12.2010 размещено в коллекции: http://oberoncore.ru/bbcc/subs/xmlcore/


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 01 Июнь, 2008 09:39 
Аватара пользователя

Зарегистрирован: Пятница, 23 Май, 2008 09:24
Сообщения: 40
Откуда: Ленинград
XML — это не только DOM, но ещё и SAX.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 01 Июнь, 2008 10:04 

Зарегистрирован: Четверг, 17 Ноябрь, 2005 11:51
Сообщения: 2935
Откуда: г. Ярославль
SAX, DOM - это всего лишь "углы взгляда" на документ в формате XML. Программные интерфейсы (API).
Цитата:
Эти интерфейсы дают разработчикам целостный интерфейс для работы с XML-документами. Существует много доступных API; ... наиболее популярные и наиболее часто используемые: Объектная Модель Документа (Document Object Model - DOM), Простой API для XML (Simple API for XML - SAX), JDOM и Java API для Разбора XML (Java API for XML Parsing - JAXP).

http://www.ibm.com/developerworks/ru/ed ... tion5.html

Стандарт SAX (http://www.saxproject.org) не является стандартом W3C. С помощью SAX можно только прочитать данные из XML-документа. Создавать и изменять XML-документы с его помощью невозможно.

DOM – стандарт W3C. Позволяет производить любые операции с XML-данными в достаточно удобной форме – представляя XML-документ как дерево объектов. Главный недостаток DOM - необходимо построить дерево документа сразу, загрузив документ в память целиком. На больших файлах начнутся тормоза и съедание памяти.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 01 Июнь, 2008 12:57 

Зарегистрирован: Вторник, 29 Август, 2006 12:32
Сообщения: 2662
Откуда: Россия, Ярославль
OCTAGRAM писал(а):
XML — это не только DOM, но ещё и SAX.


XML - это XML. SAX это отдельная песня. Хотя если есть желание - реализуйте, лишним не будет...


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 01 Июнь, 2008 13:06 

Зарегистрирован: Вторник, 29 Август, 2006 12:32
Сообщения: 2662
Откуда: Россия, Ярославль
Иван Кузьмицкий писал(а):
Главный недостаток DOM - необходимо построить дерево документа сразу, загрузив документ в память целиком. На больших файлах начнутся тормоза и съедание памяти.


Его можно преодолеть, реализовав модуль загрузки файла по частям, для этого можно использовать особый тип интерфейса DOM - DocumentFragment.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 01 Июнь, 2008 13:15 

Зарегистрирован: Четверг, 17 Ноябрь, 2005 11:51
Сообщения: 2935
Откуда: г. Ярославль
По идее, фрагментирование DOM должно быть абсолютно прозрачно. Я работаю чисто с DOM, а как конкретная реализация подгружает части XML-документа, знать не должен.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 01 Июнь, 2008 13:32 

Зарегистрирован: Вторник, 29 Август, 2006 12:32
Сообщения: 2662
Откуда: Россия, Ярославль
Сейчас, Dom не связан с Xmlcore. Он сам по себе. Xmlcore импортирует Dom и производит с ним различные операции. Если потребуется обеспечить обратную связь, то придётся вводить некий управляющий слой, с которым вы будете работать, и который будет обеспечивать подгрузку данных из файла и изменение основной Dom-струкутры, с которой вы уже НЕ будете работать напрямую. Тогда самый удобный вариант для вас - получать по запросу фрагменты документа и обрабатывать их, затем отправлять обратно(если потребуется)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 01 Июнь, 2008 18:03 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Интересно, а как оно там в XML СУБД делается... Типа "Седны" ИСП РАН-овской... Какие там интерфейсы...


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 01 Июнь, 2008 19:48 

Зарегистрирован: Четверг, 17 Ноябрь, 2005 11:51
Сообщения: 2935
Откуда: г. Ярославль
Почитал про Седну, очень интересно. Как я понял, у них полностью свой движок. Такая XML-СУБД может работать прослойкой между интерфейсом DOM и XML-документом.

http://www.citforum.ru/database/article ... va06.shtml
Цитата:
Во многих приложениях XML -документы обрабатываются в модели DOM или преобразуются с использованием процессоров XSLT . В обоих случаях, как правило, требуется присутствие в прямо адресуемой памяти всего обрабатываемого элемента. Поскольку для хранения документа, например, в модели DOM требуется примерно в десять раз больше памяти, чем для исходного XML -документа, большие документы обрабатывать оказывается невозможно. Здесь может помочь прирожденная XML -СУБД, в базе данных которой DOM или XSLT будут хранить узлы документа, извлекая их по мере потребности.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 03 Июнь, 2008 15:54 
Администратор

Зарегистрирован: Вторник, 15 Ноябрь, 2005 01:14
Сообщения: 4695
Откуда: Россия, Орёл
Petryxa писал(а):
Предлагаю сообществу включится в разработку такого, без сомнения, нужного и полезного инструмента как XML и довести функциональные фозможности компонент до современного уровня.

Хм... от XML не далеко до реализации SVG...


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 03 Июнь, 2008 16:02 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 10:37
Сообщения: 875
Откуда: Россия, Владивосток
Борис Рюмшин писал(а):
Хм... от XML не далеко до реализации SVG...


А это насущный вопрос? SVG - тот ещё формат. Я недавно в википедии рылся, картинка в jpeg занимает 400 кб, та же самая картинка в svg - 1,5 мб и вешает Оперу :)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 03 Июнь, 2008 16:03 
Администратор

Зарегистрирован: Вторник, 15 Ноябрь, 2005 01:14
Сообщения: 4695
Откуда: Россия, Орёл
Иван Горячев писал(а):
Борис Рюмшин писал(а):
Хм... от XML не далеко до реализации SVG...


А это насущный вопрос? SVG - тот ещё формат. Я недавно в википедии рылся, картинка в jpeg занимает 400 кб, та же самая картинка в svg - 1,5 мб и вешает Оперу :)

Это полезный формат... это векторный формат, к тому же стандартный.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 03 Июнь, 2008 16:05 
Администратор

Зарегистрирован: Вторник, 15 Ноябрь, 2005 01:14
Сообщения: 4695
Откуда: Россия, Орёл
Борис Рюмшин писал(а):
Это полезный формат... это векторный формат, к тому же стандартный.

Тем более с учётом уже упоминавшегося здесь где-то AGG (http://antigrain.com/).


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 03 Июнь, 2008 16:36 

Зарегистрирован: Четверг, 17 Ноябрь, 2005 11:51
Сообщения: 2935
Откуда: г. Ярославль
Более того, векторная рисовалка InkScape, коей лично я пользуюсь заместо Корела - как раз хранит картинки в формате SVG.
И этот формат, он не только стандартный, а ещё и открытый.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 03 Июнь, 2008 21:22 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 1428
Да будь он трижды стандартный и одиннадцатижды открытый, формат - говно.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 03 Июнь, 2008 21:30 

Зарегистрирован: Четверг, 17 Ноябрь, 2005 11:51
Сообщения: 2935
Откуда: г. Ярославль
Trurl писал(а):
Да будь он трижды стандартный и одиннадцатижды открытый, формат - говно.
Личностное неприятие? :)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 03 Июнь, 2008 23:06 

Зарегистрирован: Вторник, 29 Август, 2006 12:32
Сообщения: 2662
Откуда: Россия, Ярославль
Вести с полей :)

Сделал DOM Level 2 и прикрутил к Xmlcore поддержку XML Namespaces http://www.w3.org/TR/2006/REC-xml-names-20060816.
Ещё приделал трансляцию символов разметки в коды(как в HTML: & = "&amp;" ну и т.д.). Судя по всему, это и зовётся Entities. Для XML стандартные только: $ > < " ' остальные нужно описывать в Document Type Declaration. С ним ещё есть непонятки, если кто разбирается, подскажите, где всё это добро должно храниться, у DOM.DocumentType есть только два списка, entities и notations, не пойму, как в них уложить всё, что в спецификации по DTD?
Подсистемы прикрепил, но там немного всё сумбурно, демки дикие :)

Trurl писал(а):
Да будь он трижды стандартный и одиннадцатижды открытый, формат - говно.

Нууу, у меня Опера нормально показала тестовую картинку из Википедии. Значит, получается: формат - НЕ говно.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 03 Июнь, 2008 23:34 
Администратор

Зарегистрирован: Вторник, 15 Ноябрь, 2005 01:14
Сообщения: 4695
Откуда: Россия, Орёл
Petryxa писал(а):
Вести с полей :)

Как на счёт того, чтобы поставить этот проект под управление SVN?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 04 Июнь, 2008 09:51 

Зарегистрирован: Вторник, 29 Август, 2006 12:32
Сообщения: 2662
Откуда: Россия, Ярославль
Ммм. Было бы неплохо. Ну тогда сообщите пожалуйста параметры SVN репозитория.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 04 Июнь, 2008 10:40 
Аватара пользователя

Зарегистрирован: Пятница, 11 Май, 2007 21:57
Сообщения: 1488
Откуда: Украина, Киев
Иван Горячев писал(а):
... та же самая картинка в svg - 1,5 мб и вешает Оперу :)

Оперу запросто мог повесить Flash баннер на какой-то из закладок. То-ли баннеры кривые попадаются, то-ли плагин глючный. Вообще за Flash баннеры вбывав-бы :twisted:
Trurl писал(а):
Да будь он трижды стандартный и одиннадцатижды открытый, формат - говно.

Flash - говно похлеще ИМХО.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 75 ]  На страницу 1, 2, 3, 4  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2024, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB