[XSLT] Parseur XML : correction des erreurs détéctées
salut ,
voila j'ai un projet qui consiste à transformer un fichier html en fichier xml , dans le but de séparer le contenu et le style donc le resultat doit etre plus précisement un fichier xhmtl
il faut que l'outil prend en considération la correction des balises non fermé, de corriger la case , etc ..et de transformer les attributs et balises de forme en classes de style ..
Aprés avoir commencer une solution , parcourant le fichier et detectant les balises ouvrantes et fermante afin de faire les traitements nécessaires , j'ai découvert qu'on peut faire un analyseur syntaxique par php ..et ceci prend en charge une grande partie de la solution avec un peu de code, le probleme c'est que il ne suffit pas de détécter les erreurs , comme le fait le parseur xml , mais de les corriger ..le fait de traiter les erreurs pour les corriger me semble un peu compliqué ..afin que quelqu'un de vous puisse réfléchir avec moi !!
je vous donne un exemple
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
|
<?php
function ouverture ($parser, $name, $attrs){
/*ici je dois
-réafficher la balise
-traiter le tableau attrs pour en créer des classes de style
- vérifier s'il s'agit d'un balise de style par exp <center> pout remplacer par css*/
}
function fermeture ($parser, $name){
//réafficher la balise de fermeture
}
function texte ($parser, $data_text){
//afficher le texte
}
$xml_parseur = xml_parser_create();
xml_set_element_handler($xml_parseur, "ouverture", "fermeture");
xml_set_character_data_handler($xml_parseur, "texte");
$fp = fopen("essai.xml", "r+") or die("Fichier introuvable. L'analyse a ete suspendue");
$fp = fopen("essai.xml", "r") or die("Fichier introuvable. L'analyse a ete suspendue");
while ($fdata = fread($fp, 2048)){
xml_parse($xml_parseur, $fdata, feof($fp)) or die(
sprintf("Erreur XML : %s à la ligne %d\n",
xml_error_string(xml_get_error_code($xml_parseur)),
xml_get_current_line_number($xml_parseur))
);
/*ici en cas d'erreur, par exemple une balise fermente erroné , le pareur détécte l'erreur et on peut récupérer son code et son emplacement , et il s'arrete à ce niveau ,, la problématique mnt est de récuperer le code erreur pour faire la correction nécessaire et poursuivre l'analyse ..peut etre ecrire dans le fichier au fur et à mesure avec fputs ? A vous ! */
}
?> |
Pouvez vous réfléchir avec moi ..d'avance merciii :)
serenity