td_histoire_numerique:exercice_3
Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| td_histoire_numerique:exercice_3 [2015/11/10 08:20] – [Transformation des textes encodés en XML] fberetta | td_histoire_numerique:exercice_3 [2016/01/04 22:04] (Version actuelle) – fberetta | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| - | Revenir à la [[td_histoire_numerique: | + | Revenir à la [[td_histoire_numerique: |
| Ligne 51: | Ligne 51: | ||
| ===== Production des données ===== | ===== Production des données ===== | ||
| + | Pour des exemples de production de données, voir les exercices 4 et 5. | ||
| \\ | \\ | ||
| - | ==== Transformation des textes encodés en XML ==== | + | ===== Transformation des textes encodés en XML ===== |
| - | * Créer dans la base de données un objet digital qui correspond au texte qu'on est en train d' | + | * Créer dans la base de données un objet de type "objet digital" |
| - | * Lui donner un nom et ajouter un descriptif du texte encodé | + | * Lui donner un nom et ajouter un descriptif du texte encodé. On peut aussi décrire l' |
| * Copier le texte encodé en entier et le coller dans le champs ' | * Copier le texte encodé en entier et le coller dans le champs ' | ||
| * Sauvegarder | * Sauvegarder | ||
| Ligne 67: | Ligne 67: | ||
| * Sinon, apparaît un message d' | * Sinon, apparaît un message d' | ||
| * La suite du message contient la suite des erreurs provoquées par cette première erreur: celle-ci corrigée, tout rentre dans l' | * La suite du message contient la suite des erreurs provoquées par cette première erreur: celle-ci corrigée, tout rentre dans l' | ||
| + | * Si plusieurs erreurs se présentent, | ||
| + | |||
| + | ===== Requêtes SQL / XPath ===== | ||
| + | |||
| + | Une fois les textes transformés en XML avec la fonction indiquée ci-dessous, on peut intérroger la base de données et extraire des informations. | ||
| + | |||
| + | Pour ce faire, on utilise la langage SQL en le combinant avec le langage XPATH que PostgreSQL implémente également à condition que le champs sur lequel porte la requête soit de type ' | ||
| + | |||
| + | |||
| + | Pour apprendre la syntaxe des requêtes SQL, voir la manuel PostreSQL, chapitres 2 et 7. Pour apprendre celle du XPATH, un excellent {{: | ||
| + | |||
| + | |||
| + | Pour exécuter les requêtes ci-dessous: | ||
| + | |||
| + | * ouvrir la base de données avec pgAdminIII, sélectionner le dossier rouge ' | ||
| + | * copier la requête dans l' | ||
| + | * exécuter la requête avec le bouton vert en forme de flèche | ||
| + | * le résultat s' | ||
| + | |||
| + | |||
| + | Pour exporter le résultat: | ||
| + | |||
| + | * sous CSV = dans le menu ' | ||
| + | * pour visualiser directement le résultat avec un navigateur, sélectionner dans le menu ' | ||
| + | * le résultat apparaîtra immédiatement dans votre navigateur web | ||
| + | |||
| + | Un exemple de requête: | ||
| + | <code sql> | ||
| + | WITH tw1 AS | ||
| + | ( | ||
| + | SELECT UNNEST(xpath ('// | ||
| + | FROM objets.objet | ||
| + | WHERE pk_objet = 3 | ||
| + | ) | ||
| + | SELECT tw1.texte_xml, | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | FROM tw1 | ||
| + | JOIN vues.vm_objet_vue_de_base t1 ON t1.pk_objet = ( ( (xpath ('/ | ||
| + | LEFT JOIN vues.vm_objet_vue_de_base t2 ON t2.pk_objet = ( ((xpath('/ | ||
| + | </ | ||
| + | |||
| + | Pour des exemples d' | ||
| + | |||
| + | \\ | ||
| + | ====== Documentation ====== | ||
| + | |||
| + | |||
| + | |||
| + | ===== Code SQL ===== | ||
| + | |||
| + | Dans cette section on trouvera le code des principales fonctions SQL/PLpgSQL utilisées dans la base de données. | ||
| + | |||
| + | ==== Fonction vues.transformation_xml(integer) ==== | ||
| + | |||
| + | Cette fonction transforme le texte codé avec le système des accolades en un document XML. En argument de la fonction, il faut mettre l' | ||
| + | |||
| + | En cas d' | ||
| + | |||
| + | |||
| + | <code sql> | ||
| + | -- Function: vues.transformation_xml(integer) | ||
| + | |||
| + | -- DROP FUNCTION vues.transformation_xml(integer); | ||
| + | |||
| + | CREATE OR REPLACE FUNCTION vues.transformation_xml(integer) | ||
| + | RETURNS character varying AS | ||
| + | $BODY$ | ||
| + | WITH tw0 AS | ||
| + | ( | ||
| + | -- transforme les entités XML | ||
| + | SELECT REPLACE(REPLACE(REPLACE(texte,'&','& | ||
| + | FROM objets.objet | ||
| + | WHERE pk_objet = $1 | ||
| + | ), | ||
| + | tw1 AS | ||
| + | ( | ||
| + | -- transforme les accolades en chevrons | ||
| + | SELECT REPLACE(REPLACE(REPLACE(txt,' | ||
| + | FROM tw0 | ||
| + | ), | ||
| + | tw2 AS | ||
| + | ( | ||
| + | -- traite le cas de balises à deux caractères qui contiennent le type après l'id de l' | ||
| + | SELECT REGEXP_REPLACE(txt,' | ||
| + | FROM tw1 | ||
| + | ), | ||
| + | tw3 AS | ||
| + | ( | ||
| + | -- traite le cas de balises à deux caractères suivies d'un 0: élimine l' | ||
| + | SELECT REGEXP_REPLACE(txt,' | ||
| + | FROM tw2 | ||
| + | ), | ||
| + | tw4 AS | ||
| + | ( | ||
| + | -- traite le cas de balises à deux caractères suivies ou non d'un id possédant un ' | ||
| + | SELECT REGEXP_REPLACE(txt,' | ||
| + | FROM tw3 | ||
| + | ), | ||
| + | tw5 AS | ||
| + | ( | ||
| + | -- traite le cas de balises à deux caractères suivies d'un id : ajoute l' | ||
| + | SELECT REGEXP_REPLACE(txt,' | ||
| + | FROM tw4 | ||
| + | ), | ||
| + | tw6 AS | ||
| + | ( | ||
| + | -- traite le cas de balises seg et eud possédant un ' | ||
| + | SELECT REGEXP_REPLACE(txt,' | ||
| + | FROM tw5 | ||
| + | ), | ||
| + | tw7 AS | ||
| + | ( | ||
| + | -- traite le cas des dates avec un paramètre d' | ||
| + | SELECT REGEXP_REPLACE(txt,' | ||
| + | FROM tw6 | ||
| + | ), | ||
| + | tw8 AS | ||
| + | ( | ||
| + | -- traite le cas des dates avec un type en ajoutant l' | ||
| + | SELECT REGEXP_REPLACE(txt,' | ||
| + | FROM tw7 | ||
| + | ), | ||
| + | tw9 AS | ||
| + | ( | ||
| + | -- traite le cas des dates en ajoutant l' | ||
| + | SELECT REGEXP_REPLACE(txt,' | ||
| + | FROM tw8 | ||
| + | ) | ||
| + | | ||
| + | SET texte_xml = (concat('< | ||
| + | FROM tw9 | ||
| + | WHERE pk_objet = $1; | ||
| + | |||
| + | SELECT ' | ||
| + | |||
| + | |||
| + | $BODY$ | ||
| + | LANGUAGE sql VOLATILE | ||
| + | COST 100; | ||
| + | ALTER FUNCTION vues.transformation_xml(integer) | ||
| + | OWNER TO postgres; | ||
| + | |||
| + | </ | ||
td_histoire_numerique/exercice_3.1447140047.txt.gz · Dernière modification : de fberetta
