David Madore's WebLog: xml:lang et le DOM

Index of all entries / Index de toutes les entréesXML (RSS 1.0) • Recent comments / Commentaires récents

Entry #1742 [older|newer] / Entrée #1742 [précédente|suivante]:

(lundi)

xml:lang et le DOM

La râlante du jour (dans le fil de la quête envisagée hier) :

Le W3C standardise en XML l'usage de l'attribut xml:lang pour indiquer la langue du contenu d'un élément (la langue est implicitement héritée par tous les descendants de la balise). J'en fais un usage systématique[#] quand je tape du texte en n'importe quelle variante de XML (par exemple, si je dois citer The Lord of the Rings dans ce blog, j'écris : <cite xml:lang="en">The Lord of the Rings</cite> (et mon moteur de blog ajoutera un lang="en" en plus du xml:lang="en" pour compatibilité HTML, mais peu importe ici). Très bien.

Le W3C standardise un modèle d'objets (DOM) pour accéder à un document XML. Énormément de bibliothèques se basent dessus pour les manipulations, et il n'est pas trop déplaisant à utiliser. Tant mieux.

Mais ce DOM ignore complètement les spécificités de l'attribut xml:lang : aucune fonction n'est prévue pour interroger la langue d'un élément du DOM, ni pour copier/déplacer/supprimer un élément en préservant sa langue et celle de tous les descendants (c'est-à-dire en ajoutant un attribut xml:lang si nécessaire, ou en le retirant s'il est devenu superflu au nouvel emplacement). Il faut tout faire à la main. Moins bien. Beaucoup moins bien.

La façon évidente de procéder consiste en début de traitement à propager systématiquement l'attribut xml:lang à tous les descendants de n'importe quel nœud, à manipuler le document ainsi transformé, et à expurger les attributs xml:lang inutiles à la fin du traitement. Malheureusement, cette façon évidente est lente, très lente. Pas bien du tout, ça.

Alors, à chaque déplacement d'une balise, il faut se farcir une réflexion pénible : Est-ce que je suis en train de casser potentiellement un héritage de xml:lang, là ?

Bref, des petites crottes de ragondin, comme aime le dire mon ami David Monniaux.

[#] Dans le fol espoir, par exemple, qu'un jour il existe un correcteur orthographique en tenant compte (c'est-à-dire, capable de corriger un mélange aléatoire de français, d'anglais et de je ne sais quoi, dans n'importe quelle instance de XML, en prenant le bon dictionnaire pour chaque passage). Ou qu'un moteur de recherche sache en faire un usage intelligent. Je sais, je suis naïf, c'est touchant.

↑Entry #1742 [older|newer] / ↑Entrée #1742 [précédente|suivante]

Recent entries / Entrées récentesIndex of all entries / Index de toutes les entrées