|
ApolloXML и особенности XSD
|
|||
---|---|---|---|
#18+
ApolloXML разрабатывается как самый быстрый парсер в мире. За счёт того, что автомат знает, какой узел или атрибут ожидается на парсинг Кроме того ApolloXML скорее всего самый удобный парсер в мире, как минимум среди SAX Потому что все распарсенные узлы будут представлять собой структуру, где каждый атрибут - поле структуры Я создаю эту ветку для: 1) напомнить, что работа над проектом, потихоньку ведётся. старую ветку закрыли 2) продолжить искать единомышленников 3) получить информацию по правилам XSD Как я уже говорил, ранее, на мне самая сложная часть - генерация парсера Оформить свою часть я решил в динамическую библиотеку "apollo_engine.dll" Если найдётся энтузиаст, который сможет создать утилиту для пользователя (открывать XSD...), то он будет использовать "apollo_engine.dll" для непосредственной генерации. Причём язык утилиты не важен, Dll простая с соглашением cdecl (могу переделать на stdcall если надо). Если такой энтузиаст не найдётся, то можно будет самому сгенерировать парсер, используя "apollo_engine.dll" Мне например нужно будет парсить полуторагигабайтные XML, и функционала библиотеки "apollo_engine.dll" мне вполне хватит Так вот. На данный момент есть базовый хедер: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56.
Использовать нужно будет так: - создаём "проект" - иерархически добавляем туда узлы и атрибуты - сохраняем парсер ("проект") в файл. получится *.pas или *.h/*.cpp - удаляем "проект" НО XSD имеет кучу особенностей, с которыми я не знаком Например в XSD как-то задать правила на "текст узла" Поэтому я создаю ветку здесь, чтобы каждый желающий помочь мог здесь отписаться Если существуют какие-то особенности XSD, которые не получится описать продемонстрированным API , или же существуют особенности XSD на которые стоит обратить повышенное внимание - милости прошу Информационную помощь я разделяю на 3 категории по убыванию ценности: 1) выписать свой ответ в простой и полной форме, с примерами, личными комментариями. Иными словами такой информационный блок, после которого не нужно будет дополнительно искать информацию где-либо, не нужно будет проводить каких-либо тестов. К примеру если речь идёт о стандартных типах, то все стандартные типы должны быть перечислены, указан диапазон значений и/или pattern, область применения 2) ссылка на хорошую статью, желательно на русском 3) общая информация о чём-то Я не резиновый, ресурсов у меня не много. Реализация "движка-генератора" парсеров - уже сложная задача, которую я беру на себя. Соответственно времени/сил на изучение XSD у меня по минимуму. Почти нет. Поэтому самый ценный для меня вариант помощи - это 1, или полноценный участник проекта, энтузиаст. Присоединяйтесь ... |
|||
:
Нравится:
Не нравится:
|
|||
15.04.2013, 18:56 |
|
ApolloXML и особенности XSD
|
|||
---|---|---|---|
#18+
забыл комментарий по поводу хедера разница между alCpp/alCppAnsi и alDelphi/alDelphiAnsi в кодировке для alCpp и alDelphi файлы *.h,*.cpp,*.pas - могут сохраняться в кодировке utf8 для Ansi вариантов - файлы будут сохраняться в кодировке Ansi (текущая кодовая страница) Это никак не отразится на парсинге, а влияет только на имена структур, полей, констант и комментариев Код: pascal 1. 2.
в случае если указан def_value - атрибут считается необязательным ... |
|||
:
Нравится:
Не нравится:
|
|||
15.04.2013, 19:01 |
|
|
start [/forum/topic.php?fid=14&fpage=18&tid=1332555]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
44ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
40ms |
get tp. blocked users: |
2ms |
others: | 13ms |
total: | 146ms |
0 / 0 |