Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
Dernière révision Les deux révisions suivantes
enseignement:tp:bd:tp-xml-sql:2015 [2015/10/06 14:07]
ecoquery [Modalités de rendu]
enseignement:tp:bd:tp-xml-sql:2015 [2015/10/08 06:38]
ecoquery [Questions]
Ligne 38: Ligne 38:
 </code> </code>
  
 +<note tip>Il est également possible de réaliser ce tp sous postgresql. Il convient alors d'insérer les données dans la base via le script suivant: {{:enseignement:tp:bd:tp-xml-sql:forets-postgres.sql.gz|}}</note>
 ===== Génération de XML ===== ===== Génération de XML =====
  
Ligne 57: Ligne 57:
 <!ELEMENT arbre(hauteur)> <!ELEMENT arbre(hauteur)>
 <!ELEMENT hauteur (#PCDATA)> <!ELEMENT hauteur (#PCDATA)>
-]></code>+]></code>27 ou 8 réponses selon que l'on met des hauteurs vides ou non.
   - Reprendre la question précédente et ajouter un attribut ''id'' (valeur obtenue via ''A'') dans l'élément ''arbre''.<code xml><!DOCTYPE arbre [   - Reprendre la question précédente et ajouter un attribut ''id'' (valeur obtenue via ''A'') dans l'élément ''arbre''.<code xml><!DOCTYPE arbre [
 <!ELEMENT arbre(hauteur)> <!ELEMENT arbre(hauteur)>
 <!ATTLIST arbre id CDATA #REQUIRED> <!ATTLIST arbre id CDATA #REQUIRED>
 <!ELEMENT hauteur (#PCDATA)> <!ELEMENT hauteur (#PCDATA)>
-]></code> +]></code>27 ou 8 réponses selon que l'on met des hauteurs vides ou non. 
-  - Ajouter, lorsqu'elle est disponible, le nom de l'espèce (code: ''ESPAR'', nom obtenu via la vue ''documentation''((Attention, les codes sont réemployés ''select * from documentation where code = '02';'' renvoie 9 résultats))), toujours pour la parcelle 613376. Remarque: il y a deux arbres dont le code espece n'est pas dans documentation. On doit avoir le même nombre de résultats qu'à la question précédente.<code xml><!DOCTYPE arbre [+  - Ajouter, lorsqu'elle est disponible, le nom de l'espèce (code: ''ESPAR'', nom obtenu via la vue ''documentation''((Attention, les codes sont réemployés ''select * from documentation where code = '02';'' renvoie 9 résultats))), toujours pour la parcelle 613376. Remarque: il y a deux arbres dont le code espece n'est pas dans documentation. On doit avoir le même nombre de résultats qu'à la question précédente (utiliser e.g. un [[http://www.geekphilip.com/2012/04/01/visual-explanation-of-sql-joins/|XXX OUTER JOIN]]). <code xml><!DOCTYPE arbre [
 <!ELEMENT arbre(hauteur,espece?)> <!ELEMENT arbre(hauteur,espece?)>
 <!ATTLIST arbre id CDATA #REQUIRED> <!ATTLIST arbre id CDATA #REQUIRED>
Ligne 74: Ligne 74:
 <!ELEMENT nom (#PCDATA)> <!ELEMENT nom (#PCDATA)>
 <!ELEMENT quantite (#PCDATA)> <!ELEMENT quantite (#PCDATA)>
-]> </code>+]> </code>115 réponses((:!: SQLDeveloper n'affiche que les 50 première si on ne fait pas défiler les résultats))
   - Pour chaque parcelle dont l'identifiant (''IDP'') est inférieur ou égal à 600200, donner l'identifiant de la parcelle et la liste //sans doublons// des espèces présentes dans cette parcelle (son code ''ESPAR'' sous forme d'attribut XML et pour celles dont on le connait, leur nom sous forme de texte).<code xml><!DOCTYPE parcelle [   - Pour chaque parcelle dont l'identifiant (''IDP'') est inférieur ou égal à 600200, donner l'identifiant de la parcelle et la liste //sans doublons// des espèces présentes dans cette parcelle (son code ''ESPAR'' sous forme d'attribut XML et pour celles dont on le connait, leur nom sous forme de texte).<code xml><!DOCTYPE parcelle [
 <!ELEMENT parcelle (espece*)> <!ELEMENT parcelle (espece*)>
Ligne 80: Ligne 80:
 <!ELEMENT espece (#PCDATA)> <!ELEMENT espece (#PCDATA)>
 <!ATTLIST espece code CDATA #REQUIRED> <!ATTLIST espece code CDATA #REQUIRED>
-]></code>+]></code>13 réponses
   - Pour chaque parcelle dont l'identifiant (''IDP'') est inférieur ou égal à 600200, donner l'identifiant de la parcelle, le nombre d'arbres de cette parcelle et la liste //sans doublons// des espèces présentes dans cette parcelle (son code ''ESPAR'' sous forme d'attribut XML et pour celles dont on le connait, leur nom sous forme de texte).<code xml><!DOCTYPE parcelle [   - Pour chaque parcelle dont l'identifiant (''IDP'') est inférieur ou égal à 600200, donner l'identifiant de la parcelle, le nombre d'arbres de cette parcelle et la liste //sans doublons// des espèces présentes dans cette parcelle (son code ''ESPAR'' sous forme d'attribut XML et pour celles dont on le connait, leur nom sous forme de texte).<code xml><!DOCTYPE parcelle [
 <!ELEMENT parcelle (nb,espece*)> <!ELEMENT parcelle (nb,espece*)>
Ligne 87: Ligne 87:
 <!ELEMENT espece (#PCDATA)> <!ELEMENT espece (#PCDATA)>
 <!ATTLIST espece code CDATA #REQUIRED> <!ATTLIST espece code CDATA #REQUIRED>
-]></code>+]></code>13 réponses
   - Pour les espèces présentes dans entre 2 et 5 parcelles, donner leur code, leur nom et la liste //sans doublons// des parcelles (''IDP'') contenant des arbres de cette espèce.<code xml><!DOCTYPE espece [   - Pour les espèces présentes dans entre 2 et 5 parcelles, donner leur code, leur nom et la liste //sans doublons// des parcelles (''IDP'') contenant des arbres de cette espèce.<code xml><!DOCTYPE espece [
 <!ELEMENT espece (nom,parcelle+)> <!ELEMENT espece (nom,parcelle+)>
Ligne 94: Ligne 94:
 <!ELEMENT parcelle EMPTY> <!ELEMENT parcelle EMPTY>
 <!ATTLIST parcelle id CDATA #REQUIRED> <!ATTLIST parcelle id CDATA #REQUIRED>
-]></code>+]></code>15 réponses
   - Reprendre la question précédente en ajoutant le nombre d'arbres de l'espèce concernée dans la parcelle concernée sous forme de texte dans l'élément ''parcelle''.<code xml><!DOCTYPE espece [   - Reprendre la question précédente en ajoutant le nombre d'arbres de l'espèce concernée dans la parcelle concernée sous forme de texte dans l'élément ''parcelle''.<code xml><!DOCTYPE espece [
 <!ELEMENT espece (nom,parcelle+)> <!ELEMENT espece (nom,parcelle+)>
Ligne 101: Ligne 101:
 <!ELEMENT parcelle (#PCDATA)> <!ELEMENT parcelle (#PCDATA)>
 <!ATTLIST parcelle id CDATA #REQUIRED> <!ATTLIST parcelle id CDATA #REQUIRED>
-]></code>+]></code>15 réponses
  
  
 <note tip>Pour les requêtes complexes, mettez d'abord au point une requête SQL //classique// dont vous modifierez ensuite la clause ''SELECT'' pour produire du XML </note> <note tip>Pour les requêtes complexes, mettez d'abord au point une requête SQL //classique// dont vous modifierez ensuite la clause ''SELECT'' pour produire du XML </note>