Как стать автором
Обновить

Комментарии 37

Внесите, пожалуйста, основной текст под кат.
проглючило Firefox... исправил. Но в карму уже насрали.
пасибо
PS не я :)
я и не говорю. Обычно это происходит молча....
НЛО прилетело и опубликовало эту надпись здесь
Видимо, всю уже просрал *-)
Исходники выложу позже...
По поводу CDATA, порой встречается достаточно объемные куски кода, заключенные в вышеупомянутые <![CDATA[ код ]]>, имхо это делает код менее читаемым. Можно вставить в самом начале документа (после <xsl:stylesheet ...>), такую конструкцию:
<xsl:output method="[xml][html][svg]" ... cdata-section-elements="tag"/>, где tag, все, что Вы не хотите анализировать, например script style br и т.д.
Предложение интересное. Однако, в данном случае в CDATA заключается материалы модулей: статьи, новости и сообщения форумов. Мне при, чтении XML-кода, нужно лишь знать где контент, а где XML-код документа. С CDATA это сделать проще, т.к. большинство редакторов XML (или поддерживающих синтаксис) блок CDATA выделяют, т.ч. его легко найти.

Кроме того, все теги не предусмотреть.
А я бы воспользовался xsl:copy-of. Эта команда копирует кусок исходного дерева в результирующее.
CDATA - зло. Ибо она как раз позволяет пихать все что угодно в код, не задумываясь ни о чем. Использую только в крайних случаях, стараюсь избегать.

З.Ы. Вы в XML запихиваете HTML иногда или я неправильно понял?
Весь контент у меня в CMS редактируется через WYSIWYG-редактор и храниться в базе. При формировании XML-документа я блоки этого контента (ели я знаю, что они могут содержать пользовательское форматирование) помещаю в CDATA.
А в базе он хранится в виде html? По-хорошему можно настроить WYSIWYG так, чтобы он форматил в XML.
Это больная проблема. Я пробовал. Если у вас есть рабочее решение или пример - поделитесь.
Я озадачился поиском подобного, есть кое-что на примете. Если то что надо - скину.
В PHP есть отличная функция DomDocument->loadHTML($htmlString), которая лишает многих головных болей. Она легко справится с <br/> и <br> и закроет незакрытые теги. Она же конвертирует HTML в валидный XHTML который вы сможете хранить в XML-документе без CDATA (в CDATA попудут только участки CSS, JS и т.п.).
Так же можно будет вырезать все опасные для дизайна и пользователей участки: class, style, script и, как следствие, повысить безопасность…
Я пользовался подобными решениями (не в PHP), однако, от них пришлось отказаться, т.к.:
- пришлось иногда вставлять Flash, баннеры и другой специфический контент.
- вырезание кода часто упирается в человеческий фактор: пользователь может ввести такое форматирование, которое сложно очистить
- больше гемора.
http://www.wymeditor.org/
Это не WYSIWYG редактор.
Вполне возможно подобрать хороший «ви-зи-виг»-редактор, который бы не генерировал мусор, а так же выдавал XHTML или XML.
Всё включать в CDATA — не очень хорошо.

А, в общем, спасибо за интересный материал.
все правильно
просто перед сохранением преобразовывайте все в HTML сущности и тогда пусть юзер пихает туда что угодно и с CDATA нет проблем
в качестве бонуса - я пользуюсь xslt-шаблонами для генерации html-кода на своей машине, а результат - все html страницы заливаю на сайт по ftp.

Экономия на CMS =)
Я тоже иногда так делаю, но, в основном, когда нужно просто подготовить материал или сделать типографику текста.
А чем перегоняету, к примеру, готовый сайт со страницами арзложенными по разным папкам?
не поделитесь?
Своей CMS-кой. Было нужно только пару раз:
- сверстать код с типографикой
- залить на сервер все в статике, т.к. MySQL временно глючил, а клиенту нужно было все срочно показывать.
А подскажите, пожалуйста, XSL-редактор, желательно с подсветкой, комплитом и прочим, и желательно с процессором.

Решил написать себе XSL для перегонки майнмапов из FreeMind в Todo список.

Ваша статья очень вовремя (:
Altova XMLSpy можно попробывать... и подсветка кода есть и помошь при наборе и "компилить" можно
Я пользуюсь для XSL notepad++, а для работы с кодом CMS HomeSite. Я бы с удовольствием оставил один HomeSite, но последний плохо работает в кодировке UTF-8.
Компил в редакторе я не использую. В XMLSpy, предложенном все есть. Он, кстати, рекомендован разработчиками XML как основной редактор.
Я конечно понимаю, что "К сожалению, дальше пришлось отказаться от использования браузера для компиляции XSLT."
Но disable-output-escaping в FireFox не поддерживается.
Решение у меня уже есть, но оно полностью не протестировано и не внедрено. Как только - так сразу наверно и сюда выложу.
Было бы очень кстати.
Извините, если не по адресу. Очень нужно быстренько создать свой сайт. Где можно найти бесплатные шаблоны?
поиск по слову Template. Тот же самы http://www.templatemonster.com
Хотя, я забыл, что http://www.templatemonster.com/ платный.

Есть бесплатные, но адресов я не помню. Но, найти не проблема, если очень надо.
Насчет компиляции XSLT на стороне сервера
Подскажите, пожалуйста, как без гемороя генерить на сервере и отдавать браузеру уже готовый XHTML
Не совсем понятен вопрос. Что означает "без геммороя"? Если вопрос как, то:
  1. Об этом я и писал в этой и предыдущей статье

  2. Google
    - PHP: XSLT - Manual
    - Выполнение XSLT-преобразований в PHP
Все зависит от конкретного языка. Я использую Parser и там также все просто
Спасибо! Последней ссылки раньше не видел. Думаю, это какраз то, что нужно.
P.S. Поставил бы вам пару плюсов, еслиб мог.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Изменить настройки темы

Истории