Я пишу приложение, которое использует Qt / webkit для отображения документов.
Они основаны на XML, и XSLT применяется к документу, чтобы получить окончательный
представление в HTML.
Каждый документ может ссылаться на различные ресурсы:
- Системные общие элементы в / usr / share / app / common
- Пользовательские элементы в /home/user/.config/app/custom_styles
- Элементы, относящиеся к конкретному документу, в / document / document_things
документ содержит математику, которая обрабатывается скриптами jsMath,
которые расположены в общей области системы. Есть также общие
изображения и стили CSS.
Каждый пользователь может перебирать части документа и имеет свой собственный
настройки в его домашнем каталоге, например, css styles.
Наконец, каждый документ поставляется с собственными уникальными ресурсами,
что может быть что угодно - видео, архивы или сценарии.
Приложение загружает документ и знает 3 пути для каждого
ресурсов и передает их в XSLT для генерации окончательного
HTML, который будет загружен в QWebView для представления
для пользователя.
Проблема в том, что мне нужно правильно настроить baseURL для
веб-представление, которое действительно сложно:
проблемы со схемой: Windows и Linux обрабатывают файл: /// и простой запуск '/'
URL-адреса по-разному в разных аспектах, создавая беспорядок в коде (добавить
буквы в пути на windows)
также, я только что обнаружил, что URL не может заканчиваться на '/' в Qt 4.8.0 - с
этот webkit выдает ошибку безопасности, жалуясь на межсайтовый скриптинг.
Я должен установить различные настройки безопасности в QWebSettings, такие как
LocalContentCanAccessFileUrls для вещей, чтобы работать.
Такие тонкие вещи действительно трудно отлаживать и поддерживать, особенно когда
Вы имеете в виду кросс-платформенность и множество различных версий qt / webkit
развернут везде (между прочим, 4.7 просто segfaults на неправильном XSLT ...)
Итак, вопросы:
1) Что использовать в качестве базового URL для сгенерированного HTML, учитывая, что мне нужно
включить несколько ресурсов из разных мест и работающих JS?
2) Стоит ли пытаться создать «виртуальный» каталог, объединяющий все
ресурсы, использующие символические ссылки или что-то подобное?
Это решило бы проблему с базовым URL, но я не уверен, что такое
функциональность доступна в Windows и хочет остаться с решением Qt-only ..
Вопрос становится более сложным, когда я думаю о будущем - я бы хотел
чтобы разрешить загружать документы из Интернета и при этом иметь локальные пользовательские ресурсы.
Любые предложения о том, как бороться с беспорядком?