<?php

class xml{
    public static function print(string $_string){
        // Utiliser DOMDocument pour rendre le XML lisible
        $dom = new DOMDocument();
        $dom->preserveWhiteSpace = false;
        $dom->formatOutput = true;
        $dom->loadXML($_string);

        // Obtenir le XML formaté
        $formatted_xml = htmlspecialchars($dom->saveXML());

        // Affichage du XML formaté avec du style CSS pour colorer les éléments XML
        header('Content-Type: text/html; charset=UTF-8');
        echo "<html><head>";
        // Ajouter du CSS pour colorer les éléments XML et gérer l'enroulement
        echo "
            <style>
                pre {
                    font-family: 'Courier New', Courier, monospace; 
                    background-color: #f4f4f4; 
                    padding: 15px; 
                    border: 1px solid #ddd;
                    white-space: pre-wrap;       /* Permet l'enroulement du texte */
                    word-wrap: break-word;        /* Force l'enroulement sur les longs mots */
                    overflow-wrap: break-word;    /* Gère les débordements du texte */
                }
                .tag { color: #007700; }      /* Couleur des balises */
                .attribute { color: #0000ff; } /* Couleur des attributs */
                .value { color: #dd0000; }     /* Couleur des valeurs d'attribut */
            </style>
        ";
        echo "</head><body>";

        // Remplacer les éléments pour les colorier avec du CSS
        $formatted_xml = preg_replace('/(&lt;\/?)(\w+)(.*?&gt;)/', '<span class="tag">$1$2</span>$3', $formatted_xml);
        $formatted_xml = preg_replace('/(\w+)="(.*?)"/', '<span class="attribute">$1</span>="<span class="value">$2</span>"', $formatted_xml);

        // Afficher le XML formaté et coloré
        echo "<pre>" . $formatted_xml . "</pre>";

        echo "</body></html>";
    }
}
