LINUX.ORG.RU

xml в html

 , , , ,


1

2

Сабж. Понятно что сразу на ум приходит технология с названием XSLT. Есть задача конвертировать xml в html, попутно обмазываясь js, css и всякими свистелками которых в самом xml нет. 90% проекта именно работа с xml. Что есть из языков и фреймворков от которых не хочется блевать и которые не требуют 100500 человек и 10 лет обучения для десятка веб страничек (понятно что вкусовщина и можно сделать на чём угодно, хоть на сишке, если упороться). Но хочется максимальной портируемости и отсутствия геморроя с запуском (тут вроде java/scala норм).

Если конечно серьёзно делать то наверное, java+spring+что там ещё потребуется по ходу (умеет ли сам spring в XSLT или надо тянуть ещё какие-то пакеты). C# как бы умеет в XSLT, но оговорка, что умеет он это безболезненно только в Windows именно в Net Framework, а в Net core и в .NET базовой поддержки XSLT нет или она обрублена судя по документации (может это конечно лишнее и не нужно, вроде как у этого такой плашки нет и возможно всё нормально и я зря подозреваю мелкомягких в засаде, ну и конечно это можно сделать через какие-то сторонние библиотеки и ясно дело через обёртки). Python вроде как умеет, но делать лёгкое портируемое приложение на питоне ну совсем так себе идея, если честно. Хочется послушать тех кто работал с XSLT (желательно в разных стеках) и узнать что им больше понравилось.

Если раздел не тот, то переносите в толксы, но хочется и анона послушать.

Сразу оговорюсь, с XSLT я не работал серьёзно никогда, так что, возможно, одного XSLT мне может и не хватит и какую-то предварительную обработку или пост обработку мне придётся делать (у меня в xml в формате base64 воткнуты бинарные данные (картинки, звук) и вот может их извлекать и обрабатывать имеет смысл до XSLT).

В идеале как я это вижу, простая софтинка которую можно запустить с условной флешки/внешнего hdd на любом компе, которая локально на локалхосте будет иметь GUI в браузере, ничего невероятно сложного. Плюсом будет если один и тот же бинарь (понятно что не нативный, а байткод какой-то)/скрипт будет работать в разных ОС.

Теперь к минусам, проект мой и ковырять мне его в одно рыло - python и c# я использовал и использую, java и scala я только в универе тыкал палочкой и на курсах (что-то вроде хеллоуворлда продвинутого, где-то там ещё и php лежит на котором в дремучие времена я делал простенький сайт чуть сложнее визитки - несколько страничек и капля интерактивности, реально в СУБД было десяток таблиц, т.е. ничего сложного). Ах да, ещё патчить доводилось код на Java, но это мелочи. С другой стороны потыкать что-то новое себе в удовольствие, я бы и не сильно против. Сразу предупрежу - rust, C и C++ идут лесом, они не для такой задачи, как и ассемблер.

★★★★★

Последнее исправление: peregrine (всего исправлений: 1)
Ответ на: комментарий от thesis

Ты не понял. Это страничек 10 с функциями на потыкать. А файлов xml скажем пол ляма и они ещё в динамике поступают из внешнего источника.

peregrine ★★★★★
() автор топика
Последнее исправление: peregrine (всего исправлений: 2)

Что есть из языков и фреймворков от которых не хочется блевать и которые не требуют 100500 человек и 10 лет обучения для десятка веб страничек (понятно что вкусовщина и можно сделать на чём угодно, хоть на сишке, если упороться). Но хочется максимальной портируемости и отсутствия геморроя с запуском (тут вроде java/scala норм).

Для Lua есть куча xml-модулей с разной степенью зависимости.

dataman ★★★★★
()

отсутствия геморроя с запуском (тут вроде java/scala норм).

Наоборот, java/scala это геморрой т.к. требует специальной среды. Это не скриптуха, которую за 5 минут в докер собрал и запулил в облако.

запустить с условной флешки/внешнего hdd на любом компе

Так тебе для десктопа что ли? Каким боком тогда тут html/css/js?

no-such-file ★★★★★
()

Ннп, делай на чем удобнее. Если xml - это контейнер для блобов, да и если нет, js прекрасно умеет это все. Итого, index.html и пачка скриптов. Легко, никаких скал, жав, байткодов и питонов. Портабельно. Хочешь локально, хочешь серви через вэб.

Anoxemian ★★★★★
()
Ответ на: комментарий от no-such-file

Так тебе для десктопа что ли?

Да, плюшкой то что можно удалённый доступ иметь. Мне веб-морда нужна.

Каким боком тогда тут html/css/js?

Ну как сказать, мне рендерить проще всего средствами браузера (да и вообще он мне сильно жизнь упростит как ни странно). Писать GUI сильно сложнее (учитывая то что библиотеки ещё и устаревают и средства которое везде хорошо бы выглядело нет).

peregrine ★★★★★
() автор топика
Ответ на: комментарий от Anoxemian

Ладно сорву чуть-чуть покровов, я читалку для себя пилю, xml это fb2 и до кучи к нему идут pdf, djvu и прочие форматы для хранения текстовой информации, многие из которых спокойно читаются браузером по крайней мере через плагин. По факту мне много не требуется - теги которые я сам могу прилепить к файлам, поиск по ним, ну и то что есть в файлах - автор и прочая стандартная лабуда для поиска. Ничего сложного на самом деле. Calibre мне не нравится, тем что он поганит структуру файлов на жестком диске, а больше ничего хорошего у нас и нет из того что не заброшено (если ещё и теги лепить к этому и пару моих хотелок то вообще ничего нет). Можно конечно условный окуляр дёргать туда-сюда, как это, например, делает myrulib ныне заброшенный лет 15 как, но это так себе идея.

peregrine ★★★★★
() автор топика
Ответ на: комментарий от peregrine

а больше ничего хорошего у нас и нет из того что не заброшено

https://www.opennet.ru/opennews/art.shtml?num=63135

Состоялся релиз каталогизатора домашней библиотеки MyLibrary 4.0. Код программы написан на языке программирования С++ и доступен (GitHub, GitFlic) под лицензией GPLv3. Графический интерфейс пользователя реализован с помощью библиотеки GTK4.

Что-то на LOR автор не пришёл. 😄

dataman ★★★★★
()

ТС весь не асилил, а в чём проблема создаёшь класс извлекаешь из xml объект - свойства xml, как поля объекта, перекидываешь их в html? Для этого стопицот библиотек.

Ygor ★★★★★
()
Последнее исправление: Ygor (всего исправлений: 1)
Ответ на: комментарий от anonymous

Эм, ты точно уверен что совсем разного поля ягоды? Что там не так и с каких пор fb2 перестал быть разновидностью xml-я (не уж то с тех пор как Дмитрий Грибов подредачил файлы в гитхабе и убрал оттуда готовые XLST файлы после того как начал работать в литресе)? Да, он расширен, но прям критично плохого, от чего просто можно избавиться на этапе предобработки там нет (по факту что там проблемного кроме внутренних якорей, которые довольно просто обрабатывать).

peregrine ★★★★★
() автор топика
Последнее исправление: peregrine (всего исправлений: 1)
Ответ на: комментарий от peregrine

Ладно сорву чуть-чуть покровов, я читалку для себя пилю

Чувак, займись реальным делом - эта фигня называется веб-браузер, надо край пару аддонов запилить или скриптов в tampermonkey.

Ygor ★★★★★
()
Ответ на: комментарий от Ygor

Ну так никто не запилил. И да, расскажи как без бека будешь на HDD по файлам искать. Я послушаю и поржу.

peregrine ★★★★★
() автор топика
Последнее исправление: peregrine (всего исправлений: 1)
Ответ на: комментарий от peregrine

И да, расскажи как без бека будешь на HDD по файлам искать.

Если делать то побольшому - возьми spring boot и напиши бэк. С поиском по локальной фс, если оно тебе надо и конвертацией в html.

Ygor ★★★★★
()

XSLT можно вызывать наверное из любых ЯП.
Я например использовал для трансформации html в xml с нужными мне данными xmllint и xsltproc вызывая их из shell скрипта.
Обе утилиты - обертки на libxml2.

MirandaUser2
()

Сразу оговорюсь, с XSLT я не работал серьёзно никогда,

С другой стороны потыкать что-то новое себе в удовольствие, я бы и не сильно против.

С этой точки зрения почему бы и нет, но на мой вкус при наличии достаточных умений в C# и python нафиг XSLT, делай всё на этих языках или на Java и Scala, если хочешь их изучить. В сложном проекте всё равно придётся добавлять какую-то обработку перед XSLT. К тому же отлаживать большой XSLT - это та ещё морока.

anonymous_incognito ★★★★★
()
Ответ на: комментарий от javascript

Осталось сделать так чтоб оно было во всех браузерах (тормозила не ровен час сдохнет вслед за нетскейп навигатором) и чтоб с СУБД для быстрого поиска всё работало.

peregrine ★★★★★
() автор топика

Понятно что сразу на ум приходит технология с названием XSLT

Сразу оговорюсь, с XSLT я не работал серьёзно никогда

Тогда выбор неочевидный и даже сомнительный.

Если суть проекта в преобразовании XML в HTML, то тогда основным инструментом разработки станет именно XSLT, а не «хостовый» язык или фреймворк, которые ты пытаешься выбрать. Мне лично XSLT показался неприятным в использовании. В нём есть внутри полезная штука — XPath, но XPath поддерживается очень много где ещё.

Вместо XSLT можно использовать XQuery. Там тоже внутри XPath, и язык, на мой взгляд, более адекватный. Но всё равно можно столкнуться с ситуацией, когда приходится ломать голову, как сделать то, что хочется, и это происходит не из-за сложности задачи или из-за того, что язык пытается уберечь от ошибок, а просто из-за его кривизны. Плюс реализаций XQuery сильно меньше, чем XSLT.

Поэтому я бы на твоём месте рассмотрел вариант использовать ЯП общего назначения с DOM-парсером, и генерить HTML императивным кодом. Лучше, если парсер умеет XPath или какие-то другие плюшки для упрощения выборок из дерева. Например, для python есть pyquery.

Единственное, в чём может быть реальный профит от XSLT — это если надо перемалывать мегатонны разных XML в секунду без возможности сэкономить за счёт кэширования. Тогда выполнение XSLT через нативные библиотеки libxml2 и libxslt может сильно сэкономить затрачиваемые ресурсы по сравнению со скриптухой (а может даже и с шарпами, но тут я не силён).

rust … идут лесом, они не для такой задачи

FWIW, я знаю людей, которые на серьёзных щах на расте пишут круды, генерилки кода и подобную фигню, которую раньше принято было на скриптухе писать. Так что не стоит его с асмом в один ряд ставить.

annulen ★★★★★
()
Последнее исправление: annulen (всего исправлений: 1)

Хочется послушать тех кто работал с XSLT

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

ya-betmen ★★★★★
()

Зачем Спринг для XSLT?

Для XSLT смотри JAXP+реализации(Вроде в JSE идёт в поставке), ну или от Апачевцев надо посмотреть Xalan.

А уж через что ты будешь отдавать сгенерированный html, то уже совсем другой вопрос и зависит от задачи. Можно вообще взять mina-http или какой ещё минималистический http-сервер.

WatchCat ★★★★★
()
Ответ на: комментарий от phoenix

Во спасибо. Буду смотреть на это и думать. Там у них и клиент так-то есть готовый, может его проще до ума доделать

peregrine ★★★★★
() автор топика
Последнее исправление: peregrine (всего исправлений: 1)
Ответ на: комментарий от annulen

Согласен, хорошо описал.

Из моего опыта: лучше всего работает сборная солянка. На XSLT делается то, что он может легко. Как только проблема начинает требовать извращений в XSLT - её решение делегируется другому коду, это может быть что угодно - от банального sed (при генерации XSLT вставляешь в текст какие-нибудь уникальные макросы, а потом тупо их заменяешь) до DOM-парсера, который пройдётся по уже более-менее готовому дереву документа и немного его подкрутит.

blex ★★★★
()