Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Разработка своей реализации DOM XML 
:(
    Опции темы
Izvrat
Дата 23.9.2005, 16:23 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











уж не знаю уместна ли ЗДЕСЬ эта тема....
Вобщем если есть кто, кто действительно может помоч в НАПИСАНИИ СВОЕГО движка DOM XML.

Ссылок на документацию мне давали достаточно, но все дело в том что интрефесы модели ДОМ принципаилно не дают никаких советов, что касаестья реального хранения данных. Это они оставляют на совесть разработчиков.

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

Главный вопрос который меня интересует - где и как ЛУЧШЕ (логичнее) хранить объекты XML дерева, или ссылки на них?
Т.е. ваше мнение по этому поводу.

Я встречал пока 2 варианта:
- создавать нестандартную переменную - массив в интерфейсе (т.е. в childNodes эелементов) NodeList, с сылками на обекты, недостаток - это не сильно соответвуют спецификации.
- свойство childNodes являеться массывос ссылок на дочерние элементы, а класс NodeList вообще не реализован!

- в голове витает третий вариант - хранить дерево гдето еще, ну скажем в DOMImplementation или Document,
вобщем если кто имел подобны опыт, или просто чего знает, рад буду выслушать
  Вверх
Ignat
Дата 23.9.2005, 16:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Флудератор
****


Профиль
Группа: Экс. модератор
Сообщений: 4030
Регистрация: 19.4.2004
Где: غيليندزيك مدينة

Репутация: нет
Всего: 73



Дубляж.
2Moderators, убейте тему.




--------------------
Теперь при чем :P
PM   Вверх
Izvrat
Дата 24.9.2005, 11:21 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











плизз!, убейте в другом месте (в Х-технологиях) там мне всеравно ничего не ответят ....
  Вверх
Sardar
Дата 24.9.2005, 11:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 2
Всего: 317



Цитата(Izvrat @ 23.9.2005, 15:23)
может помоч в НАПИСАНИИ СВОЕГО движка DOM XML.

Зачем? Ты в PHP5 заглядывал или всё на обум? smile
Цитата(Izvrat @ 23.9.2005, 15:23)
но все дело в том что интрефесы модели ДОМ принципаилно не дают никаких советов, что касаестья реального хранения данных.

Да, в спецификации только интерфейсы и поведение, в этом сила, разработчика не ограничивают никак.
Цитата(Izvrat @ 23.9.2005, 15:23)
где и как ЛУЧШЕ (логичнее) хранить объекты XML дерева, или ссылки на них?

В зависимости от того что ты потом хочешь делать. Если реализуетсья XPath, то помимо основного дерава с данными потребуються куча таблиц и сбалансированных деревьев, что бы выполнять быстрый поиск.

Посмотри как в xerces и ему подобных реализованно, http://xml.apache.org/


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Guest
Дата 24.9.2005, 12:50 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата(Sardar @ 24.9.2005, 11:53)
Зачем? Ты в PHP5 заглядывал или всё на обум?

не везде стоит пхп5 во первых, и во вторых, ну хочу я свой написать! люблю я пользоваться своими классами.!, что нельзя?


Цитата(Sardar @ 24.9.2005, 11:53)
Да, в спецификации только интерфейсы и поведение, в этом сила, разработчика не ограничивают никак.

и я об этом же, вопрос в том чтобы вы мне посоветовали, т.е. как бы вы поступили на моем месте?


Цитата(Sardar @ 24.9.2005, 11:53)
В зависимости от того что ты потом хочешь делать

Вот что я хочу:
хочу удобный генератор ХТМЛ страничек для интерйесов веб приложений. Парсер XML, Path может и не помешают, но это не приоритетная задача.

Насчет мнигих там доплнительных деревьев, то я так и предпологал (ну хотябы массив ID => Указатель_На_Узел), воспрос в том где бы эти самые данные размистить в каком месте модели, так чтоб W3C спокойно ночью спали smile . Еще вопрос где хранить главное дерево? стоит ли это дело запихивать через childNodes или реализовать отдельно?

И Вот моя главная задача: возможность легко и эффктивно дополнять классы ДОМ производными(да и прочими) классми для реальных нужд интерфейсов веб приложений (но на пример Element : HTMLTableElement : DBListView , Element : HTMLTableElement : DBFormView )
  Вверх
Sardar
Дата 24.9.2005, 13:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 2
Всего: 317



Цитата(Guest @ 24.9.2005, 11:50)
люблю я пользоваться своими классами.!, что нельзя?

Xм, темперамент smile
Цитата(Guest @ 24.9.2005, 11:50)
вопрос в том чтобы вы мне посоветовали, т.е. как бы вы поступили на моем месте?

Цитата(Guest @ 24.9.2005, 11:50)
Еще вопрос где хранить главное дерево?

Читаешь спецификацию DOM(1,2,3 выбери любую), создаёшь интерфейсы по IDL что они предоставили, кладёшь в свой DOM.core
Затем для каждого интерфейса пишешь имплементацию без оптимизаций, т.е. все узлы, дочернии элементы в списках childNodes, так и строим дерево.
Затем смотришь на моменты где тебе нужен быстрый доступ, как например ты уже сказал ранее, индекс ID->узел.

Ты не сказал на каком языке писать собираешся smile Если есть прямой доступ к памяти, то стоит подумать как размещать обьекты, что бы при проходе дерева процу не обнулять/подгружать по новой кешь.

Какие наработки уже есть? А то кроме эмоций пока ничего не вижу.



--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Guest
Дата 24.9.2005, 14:17 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата(Sardar @ 24.9.2005, 13:27)
Ты не сказал на каком языке писать собираешся

Разве? забыл наверно псправлюсь - на ПХП (желательно чтоб под 4 работало)

в приныепе понятно, где так я и собирался.... мне интересна деталь одна только, обязательно ли создавать в классе NodeList (для объектов childNodes) дополнительный массив, типа _сhildArray (во мнеогих реализациях ПХП так и поступали, правда видел одну, где класса NodeList и NodeNamedMap не было, а эелементы типа childNodes были обычными массивами, но чтото такой вариант мне не нравиться?), нелоьзя ли както совместить? типа чтоб работало такое:
$a = new Element;
$a->childNodes[1];
$a->childNodes->item();

это бы было красиво и удобно, но вроде ПХП не позволяет, получилось лишь

$a = new Element;
$a->childNodes(1);
$a->childNodes->item();

- но этот метод не позволяет красиво хранить дочерние объеткы

И ещо вопрос, эти самы вспомогательные массивы и деревья, где их лучше хранить - DOMImplementation, Document или еще где?


Цитата(Sardar @ 24.9.2005, 13:27)
Какие наработки уже есть? А то кроме эмоций пока ничего не вижу

та вот на этих дочерних обектах и зпанулся... пака только на стадии

Цитата(Sardar @ 24.9.2005, 13:27)
Читаешь спецификацию DOM(1,2,3 выбери любую), создаёшь интерфейсы по IDL что они предоставили, кладёшь в свой DOM.core

так что показывать особо нечего smile

  Вверх
Sardar
Дата 25.9.2005, 01:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 2
Всего: 317



Цитата(Guest @ 24.9.2005, 13:17)
на ПХП

Ты хоть сам понимаешь как это будет тормозить? Прежде чем писать, подумал, а нужно ли это вообще, т.к. имплементация DOM на ура в PHP5, а те кто ещё на 4 будут юзать DOM XML, т.к. он "нативный"(на C написан)? smile
Цитата(Guest @ 24.9.2005, 13:17)
типа чтоб работало такое:

В PHP5 представь chilsNodes как обьект NodeList + имплементируй интерфейс ArrayAccess. В итоге сможешь обращаться как к массиву, так и вызывать методы.
Цитата(Guest @ 24.9.2005, 13:17)
И ещо вопрос, эти самы вспомогательные массивы и деревья, где их лучше хранить

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


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Guest
Дата 26.9.2005, 13:43 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата(Sardar @ 25.9.2005, 01:34)
имплементация DOM на ура в PHP5

ну не везде стоит он , ПХП5, и не везде стоит модуль DOM smile
к томуже я говорил, одна из главных целей, использовать мою версию как подложку под мои классы.
Цитата(Sardar @ 25.9.2005, 01:34)
В PHP5 представь chilsNodes как обьект NodeList + имплементируй интерфейс ArrayAccess. В итоге сможешь обращаться как к массиву, так и вызывать методы.

спасибо, я так и думал. просту не хотелось "портить" класс нестандартными полями.

Цитата(Sardar @ 25.9.2005, 01:34)
Это твои деревья, конечный пользователь ничего о них знать не должен, следовательно храни где угодно.

да эт я то понял, яж говорю тут негде я не спрашиваю как это можно сделать, вопрос как лучше. Т.е. куда бы это их так подальше запихнуть, чтоб пользователь о них поменьше знал? на ваше мнение.
Еще интересно, можно ли сделать поле класса только для чтения както в ПХП4? заменить поле методом, както некрасиво, хотя кажеться по другому не получаеться (например для NodeList::length), может можно ли както запусть функция перед обращением к какому либо методу? наверно я многого хочу?...
  Вверх
  
Ответ в темуСоздание новой темы Создание опроса

Внимание: данный раздел предназначен для решения сложных, нестандартных задач.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Для профи | Следующая тема »


 




[ Время генерации скрипта: 0.0496 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.