рабочий подход для объединения нескольких путей к ресурсам в Qt / webkit? - PullRequest
1 голос
/ 15 февраля 2012

Я пишу приложение, которое использует Qt / webkit для отображения документов. Они основаны на XML, и XSLT применяется к документу, чтобы получить окончательный представление в HTML.

Каждый документ может ссылаться на различные ресурсы:

  1. Системные общие элементы в / usr / share / app / common
  2. Пользовательские элементы в /home/user/.config/app/custom_styles
  3. Элементы, относящиеся к конкретному документу, в / 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 ..

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

Любые предложения о том, как бороться с беспорядком?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...