<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>XML |</title><link>https://clementgodbarge.com/fr/tag/xml/</link><atom:link href="https://clementgodbarge.com/fr/tag/xml/index.xml" rel="self" type="application/rss+xml"/><description>XML</description><generator>HugoBlox Kit (https://hugoblox.com)</generator><language>fr-fr</language><lastBuildDate>Sun, 15 Mar 2026 00:00:00 +0000</lastBuildDate><image><url>https://clementgodbarge.com/media/icon_hu_64a6c3bec25b3d7b.png</url><title>XML</title><link>https://clementgodbarge.com/fr/tag/xml/</link></image><item><title>tei-mcp</title><link>https://clementgodbarge.com/fr/code/tei-mcp/</link><pubDate>Sun, 15 Mar 2026 00:00:00 +0000</pubDate><guid>https://clementgodbarge.com/fr/code/tei-mcp/</guid><description>&lt;h2 id="tei-mcp-la-tei-p5-à-la-portée-des-agents-ia"&gt;tei-mcp : la TEI P5 à la portée des agents IA&lt;/h2&gt;
&lt;p&gt;tei-mcp est un serveur
libre qui ouvre aux assistants de programmation un accès direct à la spécification
. Au lieu de puiser dans le souvenir de ses données d’entraînement – d’où sort souvent un balisage plausible, mais faux – l’IA interroge la spécification en temps réel.&lt;/p&gt;
&lt;h2 id="fonctions"&gt;Fonctions&lt;/h2&gt;
&lt;p&gt;Le serveur lit l’ODD de la TEI P5 et expose seize outils :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Consulter&lt;/strong&gt; tout élément, classe, macro ou module par son nom, sans distinction de casse et avec suggestions en cas de coquille&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Résoudre les attributs&lt;/strong&gt; à travers toute la hiérarchie des classes de la TEI (locaux et hérités)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Développer les modèles de contenu&lt;/strong&gt; en arbres structurés, avec résolution des classes et des macros&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Contrôler l’imbrication&lt;/strong&gt; – filiation directe ou accessibilité récursive, avec le chemin suivi&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Valider des documents&lt;/strong&gt; contre la TEI P5 : modèles de contenu, attributs, listes de valeurs fermées, intégrité des renvois et avertissements d’obsolescence&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Valider un élément isolé&lt;/strong&gt;, pour l’édition pas à pas&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Charger des personnalisations ODD&lt;/strong&gt;, qui restreignent le schéma au sous-ensemble propre à un projet&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Chercher&lt;/strong&gt; parmi tous les types d’entités au moyen d’expressions régulières&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="installation"&gt;Installation&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pip install tei-mcp
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Ou, pour l’exécuter directement :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;uvx tei-mcp
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="utilisation"&gt;Utilisation&lt;/h2&gt;
&lt;p&gt;Ajoutez-le à n’importe quel client compatible MCP (Claude, Cursor, Windsurf, etc.) :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;mcpServers&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;tei&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;command&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;uvx&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;args&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;tei-mcp&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Le code source et la documentation sont sur le
.&lt;/p&gt;</description></item><item><title>Multi-Saxon</title><link>https://clementgodbarge.com/fr/code/multi-saxon/</link><pubDate>Fri, 28 Mar 2025 00:00:00 +0000</pubDate><guid>https://clementgodbarge.com/fr/code/multi-saxon/</guid><description>&lt;h2 id="multi-saxon-du-xslt-en-parallèle-pour-les-grands-corpus-tei"&gt;Multi-Saxon : du XSLT en parallèle pour les grands corpus TEI&lt;/h2&gt;
&lt;p&gt;Multi-Saxon comble une lacune sérieuse de l’outillage XML : il exécute en parallèle des transformations XSLT 2.0 et 3.0 que LXML, la bibliothèque XML la plus répandue en Python, ne sait pas traiter. Conçu tout exprès pour les grandes collections de documents XML TEI, il en abrège sensiblement le traitement par une parallélisation efficace.&lt;/p&gt;
&lt;h2 id="principales-fonctions"&gt;Principales fonctions&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;XSLT de dernière génération&lt;/strong&gt; : traite les transformations XSLT 2.0 et 3.0, hors de portée de LXML&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Traitement parallèle&lt;/strong&gt; : la parallélisation abrège considérablement la transformation des grandes collections de documents&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Taillé pour la TEI&lt;/strong&gt; : conçu spécialement pour les documents XML de la Text Encoding Initiative (TEI)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Montée en charge&lt;/strong&gt; : traite avec la même aisance des corpus de quelques centaines ou de plusieurs milliers de documents&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Multiplateforme&lt;/strong&gt; : fonctionne sur les divers systèmes d’exploitation et environnements&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="le-problème-que-multi-saxon-résout"&gt;Le problème que Multi-Saxon résout&lt;/h2&gt;
&lt;p&gt;Les chercheurs en humanités numériques qui travaillent en TEI butent souvent sur deux obstacles :&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;LXML (bibliothèque Python courante pour le traitement XML) ne connaît que XSLT 1.0, ce qui interdit les fonctions plus avancées de XSLT 2.0/3.0&lt;/li&gt;
&lt;li&gt;Traiter un grand corpus de documents TEI l’un après l’autre peut prendre un temps rédhibitoire&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Multi-Saxon répond aux deux à la fois : il s’appuie sur les capacités XSLT avancées de Saxon, et répartit le traitement sur plusieurs cœurs, d’où des gains de performance considérables.&lt;/p&gt;
&lt;h2 id="mise-en-œuvre"&gt;Mise en œuvre&lt;/h2&gt;
&lt;p&gt;Multi-Saxon associe Python au processeur Java Saxon pour former une chaîne de transformation à haute performance :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;il s’appuie sur la bibliothèque Java Saxon pour un traitement XSLT 2.0/3.0 robuste ;&lt;/li&gt;
&lt;li&gt;il recourt au multitraitement pour distribuer les transformations sur les cœurs disponibles ;&lt;/li&gt;
&lt;li&gt;il gère les réserves de processus de façon à maximiser le débit ;&lt;/li&gt;
&lt;li&gt;il offre une interface simple pour traiter les documents TEI par lots.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="exemple-dutilisation"&gt;Exemple d’utilisation&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;multi_saxon&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;MultiSaxon&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Initialize with your XSLT stylesheet&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;transformer&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;MultiSaxon&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;transform.xsl&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Transform a single document&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;transformer&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;transform&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;input.xml&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;output.xml&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Transform an entire directory in parallel&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;transformer&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;transform_directory&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;input_dir&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;output_dir&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="ce-que-cela-change-pour-les-humanités-numériques"&gt;Ce que cela change pour les humanités numériques&lt;/h2&gt;
&lt;p&gt;Pour les projets qui manipulent de grandes collections de documents TEI, Multi-Saxon rend possibles :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;des transformations complexes à l’échelle du corpus, impossibles avec LXML ;&lt;/li&gt;
&lt;li&gt;des temps de traitement considérablement réduits (souvent d’un facteur 5 à 10 sur les machines multicœurs) ;&lt;/li&gt;
&lt;li&gt;des analyses plus fines, grâce aux fonctions avancées de XSLT 2.0/3.0 ;&lt;/li&gt;
&lt;li&gt;une chaîne de travail simplifiée pour traiter des collections entières.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Le code source et la documentation sont sur le
.&lt;/p&gt;</description></item><item><title>persNamer</title><link>https://clementgodbarge.com/fr/code/persnamer/</link><pubDate>Fri, 28 Mar 2025 00:00:00 +0000</pubDate><guid>https://clementgodbarge.com/fr/code/persnamer/</guid><description>&lt;h2 id="persnamer-relier-la-tei-au-virtual-international-authority-file"&gt;persNamer : relier la TEI au Virtual International Authority File&lt;/h2&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;persNamer est un petit outil Python qui facilite l’intégration, dans des documents TEI XML, des données d’autorité sur les personnes que fournit le VIAF (Virtual International Authority File, ou Fichier d’autorité international virtuel). En changeant les identifiants VIAF en balisage TEI prêt à l’emploi, il épargne à l’éditeur une bonne part du travail manuel qu’exige la création de notices de personnes structurées dans une édition savante numérique.&lt;/p&gt;
&lt;h2 id="le-contrôle-dautorité-en-tei-une-corvée"&gt;Le contrôle d’autorité en TEI : une corvée&lt;/h2&gt;
&lt;p&gt;Les éditions savantes numériques exigent souvent d’identifier avec précision les personnages historiques, formes normalisées des noms et dates de vie comprises. Tenir un contrôle d’autorité cohérent sur l’ensemble d’un projet suppose de :&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;repérer les personnes dans les textes historiques ;&lt;/li&gt;
&lt;li&gt;trouver à leur sujet des données faisant autorité ;&lt;/li&gt;
&lt;li&gt;rédiger des notices TEI correctement formées ;&lt;/li&gt;
&lt;li&gt;garantir l’uniformité des renvois dans tout le projet.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Autant d’étapes qui se font d’ordinaire à la main, qui prennent du temps et où se glissent des incohérences.&lt;/p&gt;
&lt;h2 id="comment-persnamer-procède"&gt;Comment persNamer procède&lt;/h2&gt;
&lt;p&gt;persNamer automatise cette chaîne de travail en :&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;allant chercher les données VIAF&lt;/strong&gt; : à partir d’un identifiant VIAF, l’outil récupère les données RDF par négociation de contenu HTTP ;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;en extrayant l’essentiel&lt;/strong&gt; : il lit le RDF pour en tirer la forme retenue du nom, la date de naissance et la date de décès ;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;produisant le balisage TEI&lt;/strong&gt; : il crée deux fragments XML essentiels :
&lt;ul&gt;
&lt;li&gt;une &lt;strong&gt;notice de fichier d’autorité&lt;/strong&gt; (élément &lt;code&gt;&amp;lt;person&amp;gt;&lt;/code&gt; muni d’un &lt;code&gt;xml:id&lt;/code&gt; généré, &lt;code&gt;&amp;lt;persName&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;birth&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;death&amp;gt;&lt;/code&gt; et &lt;code&gt;&amp;lt;idno type=&amp;quot;VIAF&amp;quot;&amp;gt;&lt;/code&gt;) ;&lt;/li&gt;
&lt;li&gt;une &lt;strong&gt;balise d’annotation&lt;/strong&gt; distincte (&lt;code&gt;&amp;lt;persName&amp;gt;&lt;/code&gt; dont l’attribut &lt;code&gt;ref&lt;/code&gt; renvoie à la notice d’autorité).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Grâce à cette double sortie, l’éditeur tient un fichier d’autorité centralisé tout en insérant sans effort les balises d’annotation dans ses textes TEI.&lt;/p&gt;
&lt;h2 id="principales-fonctions"&gt;Principales fonctions&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Identifiants normalisés&lt;/strong&gt; : produit des identifiants XML uniformes, de la forme &lt;code&gt;pers-[familyname]-[givenname initial]&lt;/code&gt; (par ex. &lt;code&gt;pers-deteligny-c&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Lecture du RDF&lt;/strong&gt; : s’appuie sur &lt;code&gt;rdflib&lt;/code&gt; pour extraire l’information de diverses propriétés RDF (par ex. &lt;code&gt;rdfs:label&lt;/code&gt;, &lt;code&gt;schema:name&lt;/code&gt;, &lt;code&gt;viaf:mainHead&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Interface en ligne de commande&lt;/strong&gt; : s’exécute simplement, le numéro VIAF étant le seul argument obligatoire&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sortie détaillée&lt;/strong&gt; : rend compte du traitement en détail, en plus du XML final&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="exemple-dutilisation"&gt;Exemple d’utilisation&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;python persNamer.py &lt;span class="m"&gt;314802260&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Cette commande produit :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-xml" data-lang="xml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;&amp;lt;person&lt;/span&gt; &lt;span class="na"&gt;xml:id=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;pers-deteligny-c&amp;#34;&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;persName&amp;gt;&lt;/span&gt;Charles deTéligny&lt;span class="nt"&gt;&amp;lt;/persName&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;birth&amp;gt;&lt;/span&gt;1535&lt;span class="nt"&gt;&amp;lt;/birth&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;death&amp;gt;&lt;/span&gt;1572-08-24&lt;span class="nt"&gt;&amp;lt;/death&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;idno&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;VIAF&amp;#34;&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;314802260&lt;span class="nt"&gt;&amp;lt;/idno&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;&amp;lt;/person&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;&amp;lt;persName&lt;/span&gt; &lt;span class="na"&gt;ref=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;#pers-deteligny-c&amp;#34;&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Charles deTéligny&lt;span class="nt"&gt;&amp;lt;/persName&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="usages-en-humanités-numériques"&gt;Usages en humanités numériques&lt;/h2&gt;
&lt;p&gt;persNamer rend particulièrement service pour :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;les éditions savantes numériques qui exigent un contrôle d’autorité ;&lt;/li&gt;
&lt;li&gt;les projets d’encodage TEI qui mettent en scène des personnages historiques ;&lt;/li&gt;
&lt;li&gt;les initiatives de données liées qui rattachent des documents à des notices d’autorité ;&lt;/li&gt;
&lt;li&gt;l’uniformité des grands corpus TEI ;&lt;/li&gt;
&lt;li&gt;l’enseignement du contrôle d’autorité dans les cours d’humanités numériques.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="mise-en-œuvre"&gt;Mise en œuvre&lt;/h2&gt;
&lt;p&gt;persNamer est écrit en Python et dépend de :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;requests&lt;/code&gt; pour les requêtes HTTP&lt;/li&gt;
&lt;li&gt;&lt;code&gt;rdflib&lt;/code&gt; pour la lecture du RDF&lt;/li&gt;
&lt;li&gt;&lt;code&gt;lxml&lt;/code&gt; pour la manipulation du XML&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Le code source et la documentation sont sur le
.&lt;/p&gt;</description></item></channel></rss>