Решение Javascript или regex для обеспечения совместимости разметки с XHTML - PullRequest
1 голос
/ 01 сентября 2010

У меня есть встроенный редактор разметки, встроенный в мой веб-сайт, который должен создавать 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 тоже можно использовать)

Ответы [ 3 ]

2 голосов
/ 01 сентября 2010

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

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

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

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

1 голос
/ 01 сентября 2010

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

Возможно, вы захотите взглянуть на Tidy проект с открытым исходным кодом на Sourceforge. В IBM есть введение / обзор: « Преобразование из HTML в XML с HTML Tidy ».

0 голосов
/ 01 сентября 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...