Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Javascript или регулярное выражение, чтобы сделать разметку XHTML-совместимой

Автор вопроса: KyleОтветов: 3

У меня есть встроенный редактор разметки, встроенный в мой веб-сайт, который должен создавать разметку, совместимую с XHTML. Но, как видите, он использует устаревший тег font и атрибут size.

<font style="font-family: Courier New; color: rgb(0, 0, 153);" size="2">
   asdfa
   <span style="color: rgb(0, 51, 0);">
    a
    <font size="5">fds</font>
   </span>
</font>

В других браузерах он выдает <span class="Apple-style-span" style="font-size: xx-large;"> вместо <font size="5">

Есть ли решение Javascript/Regex для взятия первого набора разметки и замены его разметкой, совместимой с XHTML, с использованием атрибута style и тега span. Заранее спасибо!!

(ps. jQuery тоже можно использовать)

  • Лучше починить сам редактор, исправить проблему, а не симптомы... какой редактор используете? Nick Craver 01.09.2010
  • @Ник Это правда. НикПравить. Я подумал, что если разработчик не исправит это, я буду в полной растерянности :) Согласно веб-сайту, вывод XHTML является экспериментальным. nicedit.com Kyle 01.09.2010
  • Это допустимо для XHTML 1.0 Transitional. :D Gumbo 01.09.2010

javascriptjqueryregexreplacexhtml

Ответы

Ответ 1 · рейтинг 2 · bobince

Приведенная выше разметка полностью действительна в XHTML 1.0 Transitional.

Используются ли устаревшие элементы, такие как <font>, полностью ортогональны тому, используется ли синтаксис XHTML или HTML. XHTML 1.0 - это не что иное, как переформулировка HTML 4.01 в синтаксисе XML: следовательно, существуют варианты Transitional и Strict, как и для HTML 4.

<font size="5"> и <span class="Apple-style-span" style="font-size: xx-large;"> семантически одинаково бесполезны. Если вы хотите, чтобы разметка использовала набор определенных элементов и классов, которые имеют смысл в контексте вашего сайта, вам придется взломать редактор, чтобы он использовал их, а не основывался исключительно на визуальном форматировании.

Вы можете разобрать XHTML и изменить его на более позднем этапе, чтобы он выглядел лучше. Но регулярное выражение вовсе не является адекватным инструментом для этого, как упоминалось ранее. Вам понадобится синтаксический анализатор XML, затем вы исправите элементы и атрибуты, а затем повторно сериализуете их в XHTML. Было бы разумно сделать это на стороне сервера, потому что получить синтаксический анализатор XML на стороне клиента немного сложно, и вам все равно придется делать это на стороне сервера, если вы собираетесь очищать не внесенные в белый список элементы и атрибуты.

Ответ 2 · рейтинг 1 · S.Jones

Я бы не рекомендовал REGEX для такой работы. (см.: лучший 'Regex для анализа HTML ' никогда не отвечайте!) Я знаю, вы не говорите о полноценном синтаксическом анализаторе, но я все же думаю, что вам будет лучше всего использовать JavaScript (или любой другой внутренний язык, который вы используете) и библиотеку, предназначенную для парсинг хтмл.

Вы можете посмотреть проект с открытым исходным кодом Tidy на Sourceforge. Введение/обзор в IBM: "Преобразование из HTML в XML с помощью HTML Tidy".

Ответ 3 · Jan.

Проверьте CKEDITOR, если есть возможность внедрить в свое приложение другой WYSIWYG-редактор.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы