Отображение изображения с использованием таблицы стилей xsl [duplicate]

Вопрос был:

Как вернуть ответ от асинхронного вызова?

blockquote>

, который может быть интерпретирован как:

Как сделать синхронный асинхронный код синхронным?

blockquote>

Решение будет состоять в том, чтобы избежать обратных вызовов и использовать комбинацию Promises и async / await.

Я хотел бы привести пример для запроса Ajax.

(Хотя он может быть записан в Javascript, я предпочитаю писать его на Python и компилировать его в Javascript, используя Transcrypt . Это будет достаточно ясно.)

Позволяет сначала включить использование JQuery, чтобы $ был доступен как S:

__pragma__ ('alias', 'S', '$')

Определить функцию, которая возвращает Promise, в этом случае вызов Ajax:

def read(url: str):
    deferred = S.Deferred()
    S.ajax({'type': "POST", 'url': url, 'data': { },
        'success': lambda d: deferred.resolve(d),
        'error': lambda e: deferred.reject(e)
    })
    return deferred.promise()

Использовать асинхронный код, как если бы он был синхронным:

async def readALot():
    try:
        result1 = await read("url_1")
        result2 = await read("url_2")
    except Exception:
        console.warn("Reading a lot failed")

3
задан kjhughes 29 April 2015 в 11:38
поделиться

2 ответа

Запуск XSLT в веб-браузере

Запуск XSLT в браузере зависит от некоторых ограничений:

  • XSLT 2.0 не поддерживается ни одним из основных веб-браузеров.
  • Модели безопасности браузера различаются в отношении обработки XSLT. Для кросс-доменных ограничений часто требуется, чтобы XSLT загружалась из того же источника, что и XML. (В этом случае это кусает вас.) Chrome делает не разрешенным загруженным локально загруженным XSLT (даже если XML локально загружен). Это может раздражать во время разработки.

По этим причинам XSLT чаще запускается на сервере или в пакетном режиме, а не в браузере.

Если вы хотите запустить XSLT в браузере и работать с Chrome, Firefox и IE, вы должны

  1. Использовать только XSLT 1.0, not XSLT 2.0.
  2. Использовать xml-stylesheet в файле XML, как вы это сделали, чтобы связать файл XSLT с XML-файлом:
    <?xml version="1.0" encoding="UTF-8"?>
    <?xml-stylesheet type="text/xsl" href="http://origin-domain/path/to/file.xsl"?>
    <rootElement>...</rootElement>
    
  3. Служить XSLT с сервера, а не из локального файла.
  4. Убедитесь, что XSLT происходит из того же домена, что и XML.

Наконец, убедитесь, что проверьте консоль браузера для любых сообщений об ошибках. Например, вот что показывает IE, когда XSLT не может быть найден:

enter image description here [/g4]

5
ответ дан Community 25 August 2018 в 19:28
поделиться

Поскольку этот ответ связан с другими вопросами, я добавлю обновление: теперь можно запустить таблицы стилей XSLT 3.0 в браузере, используя реализацию Saxon-JS. Это снимает многие ограничения, присущие встроенным XSLT-процессорам, которые поставляются с различными браузерами.

1
ответ дан Michael Kay 25 August 2018 в 19:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: