2009-07-07 8 views
0

Existe-t-il un utilitaire .NET permettant de prendre un extrait de code HTML (pas un document entier) et de générer un équivalent HTML standard conforme?Normalisation HTML automatique?

IE, les deux <b>die Bundesliga Mannschaften</b> et <span style="font-weight:bold">die Bundesliga Mannschaften</span> résolvent tous les deux la même chose.

Je n'essaie pas de réparer quoi que ce soit, juste de standardiser des textes de description bien formés, quoique désuets, afin que la sortie finale ait un format de consistance.

Merci

+0

En ligne ou en source? – Lazarus

+1

L'exemple (b vs span) n'est pas équivalent. Ils peuvent sembler similaires sans aucune autre feuille de style, mais ils ont des sémantiques différentes. – sisve

+0

Oui, je suis conscient que ceux-ci ne sont pas identiques, ce que j'essaie de faire est un peu inhabituel, pas votre opération de type HTML Tidy typique. Pourtant, je suis sûr que quelqu'un a déjà essayé de le faire auparavant. – Paul

Répondre

0

Je pense avoir trouvé ce dont j'avais besoin dans l'espace de noms Microsoft.mshtml.

1

Il n'y a pas d'outils de normalisation HTML dans .Net que je connais, cependant, un bon endroit pour commencer est Tidy (ou fork of the original). À ce stade, vous avez une chance d'être en mesure d'interpréter votre HTML dans .Net comme un document DOM, puis de transformer différentes pièces en fonction de certaines règles que vous définissez. Si vous recevez XHTML, votre travail peut être beaucoup plus facile, il suffit d'un interpréteur CSS pour gérer les attributs de style dans le cadre de votre code de normalisation.

Vous pouvez également travailler sur le portage HtmlCleaner de Java vers .Net.

+0

C'est exactement comme cela que j'ai envisagé la solution, analyser le HTML en une structure de mémoire DOM ou pseudo-DOM qui contenait des attributs de formatage CSS, puis sortir la chaîne HTML ... comme si je finissais par l'écrire moi-même. – Paul

+0

Je suggère la fourche bien rangée comme point de départ cependant. Il fait des choses comme fusionner les spans/divs imbriqués, nettoie le balisage non pertinent, etc. Il vous donnera au moins un HTML propre et fiable pour se transformer en DOM. Suivant est ce parseur CSS, puis en faisant tout Linq-XML ... – user7116

1

Notez que les deux les chaînes que vous fournissez sont valides, conformes aux normes HTML. Ce que vous voulez probablement, c'est transformer un balisage de présentation équivalent en un format canonique. Je ne connais pas un outil qui le fait automatiquement, mais vous pouvez utiliser XSLT pour le résoudre. Edit: sixlettervariables indique que vous ne pouvez pas analyser CSS dans XSLT. Donc l'astuce serait de transformer <b> en <span style="font-weight:bold"> plutôt que l'inverse :-)

+0

L'astuce serait d'avoir le XSLT gérer CSS! Imaginez une deuxième instruction CSS dans le même attribut de style. Pas un problème amusant. – user7116

Questions connexes