2009-05-08 1 views
20

Я преобразовал весь сайт в XML/XSL и хотел бы знать все текущие проблемы при выполнении клиентского XSLT.Клиентская сторона XSLT

Вот те, я уже не знаю (из первых рук опыт):

  • Междоменные XSL файлы (это вопрос безопасности, а не кросс-браузер)
  • отключение-выход-побег (это не работает в FF ... они считают, что проблема безопасности)

Кроме того, как для поддержки браузера это все, что я знаю:

  • Opera 9+
  • FF 1.0+
  • SF 2,0 + (я могу ошибаться на этом)
  • Chrome
  • IE 6,0 +

Любые другие будут полезны тоже :)

Edit:

что касается 2-го западни есть достойный обходной путь, который позволяет передавать XHTML к вашему XSL. Он работает, фактически преобразуя и убедившись, что ваш XHTML является допустимым XML и помещает его в ваш XML как XML. Затем в XSL вы копируете xml;) и выводите его как XHTML.

+1

Мне тоже очень интересно об этом. Мне очень нравится использовать клиентскую сторону xslt, и у меня никогда не было никаких проблем с этим, но я всегда задавался вопросом, есть ли какие-то недостатки. – Zifre

+2

Слишком хорошо, чтобы быть правдой :). Возможность разгрузить все генерации шаблонов клиенту ... И позволить им кешировать шаблон ... Его полностью гениальный. В 2004 году это был почти кросс-браузер, в 2009 году ... это, из того, что я понимаю. –

+0

Почему бы просто не использовать XHTML в качестве базы, а затем применить преобразования оттуда? Зачем начинать с XML? Также вы будете использовать другие веб-стандарты, такие как CSS или такие вещи, как JavaScript и основные изображения? Каждый дополнительный файл вызовет проблемы с производительностью до тех пор, пока он не будет кэширован на стороне клиента. – JamesEggers

ответ

14
  • Скорость: браузер должен применить преобразование XSLT перед визуализацией HTML, таким образом, пользователь должен будет ждать дольше, чтобы увидеть страницу. Двигатели XSLT, используемые браузерами, могут быть не первоклассными. В Mac OS X браузер может зависнуть во время преобразования XML и вызвать «вращающийся пляжный мяч», поэтому пользователь может пробить экран и повредить его.

  • Доступность: Что относительно браузеров не в этом наборе, например, для чтения с экрана? Эти вопросы для вас важны?

+4

Выгрузили генерацию шаблонов для клиента (таким образом, сохраняя огромное количество CPU), у меня есть список браузеров, которые Я знаю, что XSLT работает, поэтому я отправляю им фактический XML/XSL. Если браузер не находится в белом списке, тогда сервер выполняет XSLT для них и отправляет HTML. Спасибо, хотя я добавлю это в список плюсов и минусов. –

+4

Я не уверен, что согласен с утверждением одеяла о том, что он будет _ильше_ медленнее запускать преобразование xslt/xml на клиенте: это может (и нередко на практике) означать меньше вещей для загрузки по n/w (xsl/xml может быть меньше результирующего html/xhtml): в зависимости от того, какой механизм сравнивается с (например, преобразование XSLT на основе JSP/ASP/серверной), этот подход на стороне клиента может фактически выгрузить время обработки от сервера к клиенту ... и должен лучше масштабироваться с более параллельными пользователями ... – monojohnny

2

Я нашел параметры для xsltfiles, которые трудно сохранить в скрещивании. Я теперь поддерживаю FF и IE, но Chrome выпал из-за этого.

+0

У вас есть блокблока в качестве примера, я смог заставить его работать нормально в хроме. –

+0

Да, у меня есть, но Chrome для нас не слишком важен, так что я просто оставил его. для (i = 0; i Peter

+2

Возможно, я выключен, но когда я прочитал «клиентский XSLT», я предположил, что вопрос относится к простому преобразованию XML -> XHTML со статическим XSLT, связанным с помощью а не движок JavaScript XSLT. Если это так, параметры передачи не имеют значения, поскольку единственным входным набором является XML-документ. –

0

XSLT-файл - это еще один объект, который необходимо загрузить, и браузер будет извлекать только 2 или 3 элемента параллельно. Мой опыт в том, что общая производительность (загрузка и генерация) заметно медленнее.

Кроме того, в зависимости от сложности и избыточности данных вы можете загружать гораздо больше, чем вам действительно нужно - т.е. если HTML уже был обработан.

+0

Я не думаю, что это правильный аргумент. Не используете ли вы CSS, потому что его другой файл будет загружен? Его можно кэшировать так же, как CSS. –

+0

@ Вы хотите сказать, что ваш XSLT не будет содержать настоящие веб-стандарты, такие как CSS? Будет ли XSLT преобразовывать ваш XML-файл в HTML и табличный дизайн или использовать CSS? На мой взгляд, это очень важный аргумент, поскольку, если вы используете XML и конвертируете его в HTML, но не используете веб-стандарты, то вы можете ошибаться. Кроме того, если ваша цель состоит в том, чтобы преобразовать ваш HTML-контент в другой формат, возможно, сначала используя XHTML, а затем преобразовать его может быть лучшим вариантом. – JamesEggers

+3

Я бы использовал все веб-технологии. CSS (дизайн), XSL/XHTML (структура), XML (данные), JS (поведение). Объем разделения данных прекрасен. –

5

На переднем плане производительности ... считают, что большинство клиентов в эти дни имеют 2 процессора и 2 ГБ оперативной памяти каждый, и что большинство серверов не ... Имеют два процессора + 2 ГБ на одного клиента. Поэтому логично, что разгрузка XSLT-преобразований должна повысить масштабируемость, а кэширование CSS + XSLT + JS должно уменьшить общий трафик.

Сказав, что я пробовал использовать XSLT для производства XHTML, содержащего SVG в прошлом, и имел epic-fail. Самая большая страница была просто слишком большой (3 000+ записей в индексе), а IE использует DOM для преобразования XSLT, что заставляет его начинать раздачу. Те же самые преобразования, выполненные в xerces-j (на сервере, в том же dev-блоке), были примерно в 1000 раз быстрее.

Это высокое время браузерной обезьяна получила с программой ;-)

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

Cheers. Кит.

+0

Мне еще предстоит попробовать SVG, потому что его не перекрестный браузер. Я знаю, что есть плагин, который предоставляет adobe, такая красивая технология. http://raphaeljs.com/ <- soo cool ... –

+0

Интересно, как это выглядит 8 лет спустя, P –

+1

lol, да 8 лет спустя. XSLT все еще делает. –

1

я работал около 1 года на проекте, где мы использовали XSLT + XML-> HTML (хотя только на стороне сервера)

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

Наложение между xslt/xml/urls становится более сложным, чем должно быть. вы не можете программировать компонентно-ориентированные.

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

Я бы увидел это как форму ранней оптимизации. вы начинаете с использования «нормального» веб-фреймворка, такого как калитка, jsf, гобелен, gwt и т. д., позже, если окажется, что ваша предварительная подготовка серверов связана с cpu, вы можете переписывать наиболее часто используемые части апликации таким образом.

otoh, он имеет реальные преимущества, если вам нужно предоставить как xml api + html-интерфейс.

+5

В основном я заменил smarty (PHP templating engine) клиентским XSLT. И при этом мне пришлось полностью изолировать данные, что замечательно. Например, я могу легко написать мобильный интерфейс, потому что все разделено. Пока что я говорю, что есть кривая обучения, но в основном в будущем будет проверять ваше приложение, если вы используете этот метод. –