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/25 08:27] – [Requêtes SQL / XPath] 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 ===== | ===== Requêtes SQL / XPath ===== | ||
| Ligne 92: | Ligne 93: | ||
| * le résultat apparaîtra immédiatement dans votre navigateur web | * le résultat apparaîtra immédiatement dans votre navigateur web | ||
| - | Provisoire: | + | Un exemple de requête: |
| <code sql> | <code sql> | ||
| - | SELECT | + | WITH tw1 AS |
| - | FROM ??? | + | ( |
| + | | ||
| + | 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.1448436443.txt.gz · Dernière modification : de fberetta
