Модераторы: diadiavova
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Особенности парсеров xml. В частности интересует SAX парсер. 
V
    Опции темы
DubrovinAV
  Дата 13.10.2007, 15:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 20.9.2007

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



  Здравствуйте. Стоит задача: написать парсер XML(именно с нуля, т. к. является итоговым проектом в институте). В результате парсинга нужно преобразовать xml->html и показать иерархическую структуру исходного документа(xml). С выводом результата определился, html, а точнее xhtml получим, собрав программно к нему xsl, вывод структуры буду осуществлять опять же в html посредством списка:

Код

<ul>
    <li>ИмяЭлемента</li>
</ul>


Решать задачу "в лоб" не хочется(поймете чуть ниже). Я считаю лучше использовать уже готовое решение - SAX анализатор(DOM все же для такой задачи не обоснован)). Дело в том что нужно написать в первую очередь, как я понимаю это задание, парсер. Используя метод SAX в результате получим универсальный код, который можно использовать не только для представления xml->xhtml, но и для поиска и получения интересующих данных.

За последнюю неделю перечитал много информации в интернет, накачал книжек. Так вот хочется узнать все же особенности данного метода анализа документа, т. е. то каким должен быть "настоящий" парсер. Нужно ли обрабатывать DTD-определения, 
анализировать область CDATA и инструкции или же пропускать, проверять соответствии спецификации. Хочется все же узнать те моменты которые все же нужно воплотить в программе. Конечно я понимаю что все зависит от поставленной задачи, но... Дело в том что нужно написать качественную программу, от ее защиты многое зависит.

Спасибо.
PM MAIL   Вверх
Shedar
Дата 13.10.2007, 17:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 68
Регистрация: 10.6.2007

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



Уточните, что Вы подразумеваете под 
Цитата(DubrovinAV @  13.10.2007,  15:34 Найти цитируемый пост)
Я считаю лучше использовать уже готовое решение - SAX анализато

Подразумеваете свою реализацию указанного API или использование готовой реализации SAX парсера? По фразе вроде бы второй вариант,  но тогда не согласуется с 
Цитата(DubrovinAV @  13.10.2007,  15:34 Найти цитируемый пост)
написать парсер XML(именно с нуля

Если использовать готовую реализацию, то она сама и CDATA проанализирует и DTD и валидацию проведет если нужно.
Если же речь идет о собственной реализации. CDATA нужно анализировать  в любом случае, поскольку внутри секции могут встречаться угловые скобки и нужно их отличать от начала тега. DTD нужно обрабатывать, если реализация претендует на более-менее универсальность, поскольку в DTD могут описываться сущности  (entity), ссылки на которые потом будут в документе, соответственно невозможно раскрыть ссылки не проанализировав DTD. Что касается валидации, зависит от задачи.
PM MAIL WWW ICQ   Вверх
DubrovinAV
Дата 13.10.2007, 19:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 20.9.2007

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



 Извиняюсь, не корректно выразился. Конечно же за основу взять алгоритм SAX-анализатора(For example, endDocument(),  startElement...), а иначе смысл в моей работе)), что касается CDATA, то если судить по книгам это область документа, которая "не инициализируется процессором", т. е. нужно нам анализировать содержимое и как-то его интерпретировать или же просто игнорировать последовательность символов между "<! [CDATA[" и "]]>"? Теперь про DTD,  его нужно анализировать только на сущности, или же есть еще что-то, о чем я пока не знаю, что, кровь из носу, надо проанализировать и обработать. Поскольку в задании не сказано о проверке, то я не собираюсь проверять соответствие документа схемам либо определениям, а проверить лишь "правописание".

Извиняюсь, валидность документа - это соответствие спецификации, так сказать правильно с точки зрения грамматики, а не соответствие схеме либо DTD, я ничего не путаю?   

спасибо за ответ
PM MAIL   Вверх
Shedar
Дата 13.10.2007, 21:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 68
Регистрация: 10.6.2007

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



CDATA - область которая не анализируется парсером на наличие спецсимволов. Если мне нужно будет написать фрагмент кода в xml, то я могу написать 
Код

<![CDATA[ If(a < b && b>c && c<d) ]]> 

без CDATA это должно выглядеть вот так: 
Код

if(a &lt; b &amp;&amp; b &gt; с &amp;&amp; c &lt d))

что касается валидности. в англ. языке есть два термина, применимых к xml
wellformed - документ являющийся синтаксически корректным (соответствует спецификации)
valid - документ являющийся структурно корректным, т.е. соответствует спецификации и описанию структуры документа (DTD, XML-schema, RELAX NG и т.д.)
PM MAIL WWW ICQ   Вверх
DubrovinAV
Дата 20.10.2007, 16:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 20.9.2007

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



Приветствую. Какая структура у тега? Поправьте если что не так smile 

Общий вид:
Код

<NameSpace1:NameElement NameSpace2:NameAttribut1="Value1" NameSpace3:NameAttribut2="Value2" ...>
...
</NameSpace1:NameElement>


В в некоторых исходниках sax-парсера в функции startElement(...char* qName...); после параметра nameElement иногда указывается параметр qName. Не знаете для чего он, для каких целей в этой же функции сохранять информацию о длине имени и атрибутов? smile
 

 
PM MAIL   Вверх
DubrovinAV
Дата 23.10.2007, 16:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 20.9.2007

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



Структура у тега такая как я описал или что-то не учел? Прошу ответить.
PM MAIL   Вверх
LSD
Дата 23.10.2007, 20:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 8
Всего: 538



Цитата(DubrovinAV @  20.10.2007,  17:37 Найти цитируемый пост)
Не знаете для чего он, для каких целей в этой же функции сохранять информацию о длине имени и атрибутов?

Это qualified name.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
DubrovinAV
Дата 24.10.2007, 08:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 20.9.2007

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



Цитата

Это qualified name.


А чем полное имя отличается от пространства имен?
PM MAIL   Вверх
LSD
Дата 24.10.2007, 14:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 8
Всего: 538



Пространство имен это всего лишь часть qualified name. Вернее qualified name состоит из префикса пространства имен и локального имени.
Т.е. в твоем примере:
NameSpace1 - это префикс пространства имен (не само пространство, а именно его префикс, префикс обязательно должен быть предварительно сопоставлен с неким пространством имен)
NameElement - локальное имя элемента


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
DubrovinAV
Дата 24.10.2007, 15:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 20.9.2007

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



Все понятно. Спасибо. Еще одна тайна XML раскрыта  smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "XML/XSLT"
diadiavova

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

Также рекомендуем Вам зайти в раздел FAQ ,раздел дополняется и, возможно, там вы увидите готовое решение.

Для ответов на часто задаваемые вопросы существует FAQ раздела. Новости можно публиковать в разделе новостей. Для статей так же есть специальный раздел

Желаем удачи в Вашем деле!


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, diadiavova.

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


 




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


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

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