2010-09-01 4 views
1

J'ai un éditeur de balisage intégré intégré à mon site Web, qui devrait produire un balisage conforme à la norme XHTML. Mais comme vous pouvez le voir, il utilise l'attribut obsolète font et l'attribut size.Solution Javascript ou regex pour rendre le balisage conforme à la norme XHTML

<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> 

Sur d'autres navigateurs, il produit le <span class="Apple-style-span" style="font-size: xx-large;"> au lieu de <font size="5">

Y at-il une solution Javascript/Regex pour prendre le premier jeu de balisage et de le remplacer par XHTML balisage conforme à l'aide style attribut et span balise. Merci d'avance !!

(ps. JQuery peut être utilisé aussi)

+0

Il serait préférable de réparer l'éditeur lui-même, de régler le problème et non les symptômes ... quel éditeur utilisez-vous? –

+0

@Nick True que. NicEdit. Je me suis dit que si le développeur ne l'avait pas corrigé, je serais complètement perdu :) "Sortie XHTML" est "expérimental" selon le site. http://nicedit.com/ – Kyle

+0

Ceci est valide XHTML 1.0 Transitional. : D – Gumbo

Répondre

2

Le balisage ci-dessus est parfaitement valide dans XHTML 1.0 Transitional.

Que des éléments obsolètes comme <font> soient utilisés est un problème complètement orthogonal à savoir si la syntaxe XHTML ou HTML est utilisée. XHTML 1.0 n'est rien de plus ou de moins qu'un traitement de HTML 4.01 dans la syntaxe XML: par conséquent, il existe des variantes Transitional et Strict comme pour le HTML 4.

<font size="5"> et <span class="Apple-style-span" style="font-size: xx-large;"> sont sémantiquement également inutiles. Si vous souhaitez que le balisage utilise un ensemble d'éléments et de classes définis qui sont significatifs dans le contexte de votre site, vous devrez pirater l'éditeur pour les utiliser, au lieu d'être basé uniquement sur le formatage visuel.

Vous pouvez analyser le XHTML et le modifier ultérieurement, pour essayer de l'améliorer. Mais regex n'est pas du tout un outil adéquat pour le faire, comme mentionné précédemment. Vous auriez besoin d'un analyseur XML, puis vous corrigeriez les éléments et les attributs, puis vous le ré-sérialiseriez en XHTML. Il serait judicieux de le faire du côté serveur, car obtenir un analyseur XML du côté client est un peu délicat, et vous devrez le faire du côté serveur si vous voulez nettoyer les fichiers non-inclus dans la liste blanche. éléments et attributs.

+0

Merci pour l'explication approfondie! – Kyle

0

Check out CKEDITOR si elle est une option pour mettre en œuvre un autre éditeur WYSIWYG dans votre application.

+0

CK éditeur, TinyMCE à la fois ne remplissent pas nos exigences – Kyle

1

Je ne recommanderais pas REGEX pour ce genre de travail. (voir: le plus grand 'Regex to Parse HTML' réponse jamais!) Je sais, vous ne parlez pas d'un analyseur complet, mais je pense toujours que vous seriez mieux avec JavaScript (ou quelle langue back-end vous êtes using) et une bibliothèque adaptée à l'analyse HTML.

Vous pouvez regarder le projet open source Tidy sur Sourceforge. Il y a une intro/vue d'ensemble chez IBM: "Convert from HTML to XML with HTML Tidy".

+0

+1 Merci pour le lien Tidy! – Kyle

Questions connexes