powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / В xsd указать вхождение элемента в элемент на любой глубине
4 сообщений из 4, страница 1 из 1
В xsd указать вхождение элемента в элемент на любой глубине
    #33685615
Petrovich Forever
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Задача (упрощенная от реальной):
-> в метод передаем параметром html страницы
<- из метода возвращаем StringCollection из строк Имя_Формы + Имя_Input'а

Представим себе html обычной страницы: есть нода body в которой есть нода form (которая может быть не сразу в body а вложена в td которая вложена в tr которая в table и так сколько угодно раз), а в form'е есть нода input (которая тоже может быть влодена не как child а как child child'а — тоже ведь могут быть таблицы, дивы)

Хочется получить класс page в котором будет массив form в котором массив input
Я думал сделать схему и сгенерить xsd.exe набор классов, но начав делать понял что сложное вхождение (форма входит не сразу в body а вложена в td которая вложена в tr которая в table и так сколько угодно раз) я не могу задать на схеме
Да, конечно, имея html можно обойтись обычными XPath (они очень даже просты), пробежаться по всем формам, а внутри формы пробежаться по всем инпутам, а можно вообще примитив — регекспами.

Но дума просит красоты, а чем то задним чую, что красота близко.
Красоту вижу так:

-На этапе програмирования (тоесть сейчас) я описал схему (именно то что я и ищу)
-Дальше сгенерил классы page в котором массив form в котором массив input (каждый из классов с нужными мне аттрибутами)
Все! Это сделал один раз!

Теперь к задаче:

в методе делаю лишь след-ее:
-Получил параметр html, сказал

Page myPage = Serializator.Deserialize(html)



и все!!!
Больше не написав ни строчки кода!!!

Фактически задача сводится к след-ему: как указать в схеме что элемен input входит в элемент form на каком угодно уровне вложенности?
...
Рейтинг: 0 / 0
В xsd указать вхождение элемента в элемент на любой глубине
    #33689943
qu-qu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petrovich ForeverЗадача (упрощенная от реальной):
... как указать в схеме что элемен input входит в элемент form на каком угодно уровне вложенности?

Силен же народ выдумывать себе на голову (задницу?) извращения от лени...

По-моему, т.к. схемы XSD исторически придумывались и создавались не для генерации "классов" пригодных для "[де]сериализации" (особенно под .NET Framework), а совсем для других целей - определения четкой (ключевое слово) и легко верифицируемой структуры XML-документа (без всякого намека на "гибкость"), то и ваша "благая мысль" - скорее всего не сможет быть "натянута" на существующие правила описания XSD-схем.
(по крайней мере, я бы не взялся за такое дело даже для себя лично)

Почему бы вам не посмотреть в сторону обычного DHTML DOM (IHTMLDocument3 from Mshtml.dll), где вы спокойно и без лишнего напряга можете получить методом getElementsByTagName коллекцию тегов хоть "form" внутри "body", хоть "input" внутри "form" (как раз "на каком угодно уровне вложенности") и делать с этой коллекцией все, что душе угодно?
...
Рейтинг: 0 / 0
В xsd указать вхождение элемента в элемент на любой глубине
    #33691570
Petrovich Forever
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petrovich Forever... имея html можно обойтись обычными XPath (они очень даже просты)
Уже в момент написания поста, задача реализована именно так.

qu-quСилен же народ выдумывать себе на голову (задницу?) извращения от лени...
Если следовать Вашей идее, то нам следует писать на класическом С. Классы, обьекты... - это же такое извращение.
А уж коли Xsd.exe позволяет генерировать из схемы класс, который сможет инкапсулировать в себя всю логику сериализации и десериализации - то грех не попытаться воспользоваться этой возможностью.
...
Рейтинг: 0 / 0
В xsd указать вхождение элемента в элемент на любой глубине
    #33692569
qu-qu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petrovich Forever...Если следовать Вашей идее... - это же такое извращение.

Чужую "идею" всегда легко и просто довести до абсурда (особенно в заочной полемике), гораздо тяжелее - аргументировано обосновать здравость и актуально-насущность своей "идеи"...

Использование встроенных механизмов сериализации/десериализации какой-либо платформы - не самоцель в любом мало-мальски реальном проекте, а всего-лишь одно из "облегчающих жизнь" средств для достижения определенных результатов при прочих равных затратах ресурсов. И как любое из других "средств" за бесплатно оно не дается - платить все равно придется (хоть временем на выдумывание "хитро-вытраханой" схемы, хоть временем "тормознутости" встроенного в платформу XML-сериализатора, которому на вход будут подсовывать не то, что он ждет - "жесткую XML структуру", а кучу мусора в виде иерархии "body"-ей, "table"-ов и пр. "div"-ов, по которым он должен будет выискивать как манну небесную нужные ему "form" и "input"-ы, да еще не приведи БГ - входной HTML окажется невалидный с точки зрения XML-требований, т.е. кто-нить такой же озабоченный "оптимизацией" - не закроет тег "img" или "br").

Я не агитирую вас за "мировую революцию", просто из своего личного опыта знаю - за любой возможностью сделать что-то реальное "Больше не написав ни строчки кода!!!" стоит уйма того же самого кода, написанного "до вас", "за вас" и "вместо вас" (и далеко не факт, что это будет также - "лучше вас").

З.Ы. как говаривал классик: "Выбирай, но - осторожно... Но - выбирай!"
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / В xsd указать вхождение элемента в элемент на любой глубине
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]