XHTML-внедрение XML с использованием XSL [duplicate]

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

if (!name) {
  name = async1();
}
async2(name);

. В итоге вы пройдете через async1; проверьте, не определено ли name или нет, и соответственно вызовите обратный вызов.

async1(name, callback) {
  if (name)
    callback(name)
  else {
    doSomething(callback)
  }
}

async1(name, async2)

Хотя в в порядке хорошо , это раздражает, когда у вас много подобных случаев и обработка ошибок.

Fibers помогает в решении проблемы.

var Fiber = require('fibers')

function async1(container) {
  var current = Fiber.current
  var result
  doSomething(function(name) {
    result = name
    fiber.run()
  })
  Fiber.yield()
  return result
}

Fiber(function() {
  var name
  if (!name) {
    name = async1()
  }
  async2(name)
  // Make any number of async calls from here
}

Вы можете проверить проект здесь .

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 27 August 2018 в 02:26
поделиться

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

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

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