documents xml document processeur xquery xml programme...
TRANSCRIPT
Processeur XQuery
Programme XQuery
Documents XML
<?xml v <ref: <gr
<?xml v <ref: <gr
<?xml v <ref: <gr
Document XML
<?xml v <ref: <gr
y"inherit"
z"a"
x"preserve"
z
preserve no-inherit
no-preserve
inherit
y"inherit"
z"a"
x"preserve"
z
y"inherit"
z"a"
x"preserve"
z
y"inherit"
z"a"
x"preserve"
z
inherit
inherit
inherit
preserve
preserve
preserve
preserve
preserve
inherit no-preserve no-inherit
inherit
inherit
inherit inherit
inheritaa
a a
inherit
inherit
inherit
inherit
<r>
<e1>
<e11/>
</e1>
<e2>
<e21>
<e211><e2111/></e211>
</e21>
<e22>
<e221/>
</e22>
</e2>
<e3/>
<r>
BD
SGBD"classique"Relationnel,
Objet, Mixte...
Middleware
SGBD "XML natif"
SQL
SGBDRelationnel/Objet
Tables de lignes Index
XML Requête XMLSchéma XML
Schéma relationnel
Mapping
Stockage XML (Mapping total)
RechercheXML
Moteur SQL
Middleware
[Gar2002]
<?xml version="1.0" encoding="UTF-8"?><!-- construit à partir du modèle relationnel --><!ENTITY % xhtml SYSTEM "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">%xhtml;
<!ELEMENT Internaute EMPTY ><!ATTLIST Internaute ip CDATA #REQUIRED Numéro-i CDATA #REQUIRED k_Internaute ID #REQUIRED><!ELEMENT liste_Internaute (Internaute*) >
<!ELEMENT Membre EMPTY ><!ATTLIST Membre Nom-p CDATA #REQUIRED Prénom-p CDATA #REQUIRED Courriel CDATA #REQUIRED MdP CDATA #REQUIRED Statut (standard|administrateur) "standard" Numéro-i CDATA #REQUIRED k_Membre IDREF #REQUIRED ><!ELEMENT liste_Membre (Membre*) >
<!ELEMENT Vote (Contexte) ><!ATTLIST Vote Date-prop CDATA #REQUIRED Question CDATA #REQUIRED Date-ouverture CDATA #REQUIRED Heure-ouverture CDATA #REQUIRED Date-cloture CDATA #REQUIRED Heure-cloture CDATA #REQUIRED Titre CDATA #REQUIRED Numéro-v CDATA #REQUIRED Numero-i_Propose CDATA #REQUIRED Numéro-i_Valide CDATA #REQUIRED k_Vote ID #REQUIRED fk_Membre_Propose IDREF #REQUIRED fk_Membre_Valide IDREF #IMPLIED ><!ELEMENT Contexte (html?) ><!ELEMENT liste_Vote (Vote*) >
<!ELEMENT Illustre EMPTY ><!ATTLIST Illustre mot CDATA #REQUIRED Nunero-v CDATA #REQUIRED fk_Vote IDREF #REQUIRED k_Illustre ID #REQUIRED ><!ELEMENT liste_Illustre (Illustre*) >
<!ELEMENT Bulletin EMPTY ><!ATTLIST Bulletin Choix (oui|non|abs) "abs" Date-b CDATA #REQUIRED Code-b CDATA #REQUIRED Numero-v CDATA #REQUIRED k_Bulletin ID #REQUIRED fk_Vote IDREF #REQUIRED ><!ELEMENT liste_Bulletin (Bulletin*) >
<!ELEMENT A-Voté EMPTY ><!ATTLIST A-Voté Date-v CDATA #REQUIRED Numero-i CDATA #REQUIRED Numero-v CDATA #REQUIRED fk_Membre IDREF #REQUIRED fk_Vote IDREF #REQUIRED k_A-Voté ID #REQUIRED ><!ELEMENT liste_A-Voté (A-Voté*) >
<!ELEMENT Ma-votation (liste_Internaute, liste_Membre, liste_Illustre, liste_Vote, liste_Bulletin, liste_A-Voté) >
<?xml version="1.0" encoding="UTF-8"?>!-- construit à partir du modèle relationnel --><!ENTITY % xhtml SYSTEM "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">%xhtml;
<!ELEMENT Internaute EMPTY ><!ATTLIST Internaute ip CDATA #REQUIRED Numéro-i ID #REQUIRED ><!ELEMENT liste_Internaute (Internaute*) >
<!ELEMENT Membre EMPTY ><!ATTLIST Membre Nom-p CDATA #REQUIRED Prénom-p CDATA #REQUIRED Courriel CDATA #REQUIRED MdP CDATA #REQUIRED Statut (standard|administrateur) "standard" Numéro-i ID #REQUIRED ><!ELEMENT liste_Membre (Membre*) >
<!ELEMENT Vote (Contexte, Illustre*, Bulletin*) ><!ATTLIST Vote Date-prop CDATA #REQUIRED Question CDATA #REQUIRED Date-ouverture CDATA #REQUIRED Heure-ouverture CDATA #REQUIRED Date-cloture CDATA #REQUIRED Heure-cloture CDATA #REQUIRED Titre CDATA #REQUIRED Numéro-v ID #REQUIRED Numero-i_Propose IDREF #REQUIRED Numero-i_Valide IDREF #IMPLIED ><!ELEMENT Contexte (html?) ><!ELEMENT liste_Vote (Vote*) >
<!ELEMENT Illustre EMPTY ><!ATTLIST Illustre mot CDATA #REQUIRED >
<!ELEMENT Bulletin EMPTY ><!ATTLIST Bulletin Choix (oui|non|abs) "abs" Date-b CDATA #REQUIRED Code-b ID #REQUIRED >
<!ELEMENT A-Voté EMPTY ><!ATTLIST A-Voté Date-v CDATA #REQUIRED Numero-i IDREF #REQUIRED Numero-v IDREF #REQUIRED ><!ELEMENT liste_A-Voté (A-Voté*) >
<!ELEMENT Ma-votation (liste_Internaute, liste_Membre, liste_Vote, liste_A-Voté) >
Internaute
Membre
A-Voté Vote
Illustre Bulletin
proposevalide
SGBD Relationnel/Objet + types et fonctions "XML"
Tables de lignes+ attributs XML Index
XML Requête XMLSchéma XML
Schéma relationnel
Mapping
Stockage XML (Mapping partiel)
RechercheXML
Moteur SQL/SQLX/XML-QL
Middleware
fichiers,BLOBs...
Tablesrelationnelles
(objets)
XM
L <-> Tables
XSLT
XSLT
XQuery
XQuery
Schema XML (XSD, DTD, Relax NG...)
Schémarelationnel
Index"de chemin"
"plein texte"...
XML Requête XMLSchéma XML
Schéma XML
Transformation
Stockage XML Recherche XML
SGBD XML natif
Forêt d'arbres XML
Noyau SGBD ou Système documentaireConcurrence, fiabilité...
XML - XUpdateExtension XQuery
XPathXQuery...
[Gar2002]
WebServletXQuery
ServletXMLRPC
ServletAdmin
ServletQuery
ServletREST
SGBD XML Natif
XQuery
Client Web
Serveur d'applications Web
Application Web
XMLRPC
Service Web (SOAP)
Service Web (SOAP)
REST (GET, POST...)
query
startmax
cachesession-id
text properties
propertynamevalue
http://exist.sourceforge.net/NS/exist
pas d'opérateur
LégendeÉlément
Groupe d'éléments
#PCDATA
ID#IDREF
attribut req.attribut='fixe'%attribut opt°
%attribut/'def'{attribut lst}
xupdate:value-of xupdate:if
select test
xupdate:element xupdate:attribute xupdate:text xupdate:processing-instruction xupdate:comment
%xml_instructions;
name%namespace
name%namespace
name
xupdate:variable xupdate:insert-afterxupdate:insert-before xupdate:append xupdate:update xupdate:remove xupdate:rename
select selectselect%child
select select selectname
%select
xupdate:modifications%id
version='1.0'xmlns:xupdate='http://www.xmldb.org/xupdate'
http://www.xmldb.org/xupdate
pas d'opérateur
LégendeÉlément
Groupe d'éléments
#PCDATA
ID#IDREF
attribut req.attribut='fixe'%attribut opt°
%attribut/'def'{attribut lst}
SGBD XML Natif
XMLRPC
Serveur Java
Client Java, PHP, Perl, JSP...
Application cliente X
ML:
DB
API
XMLRPC
XMLRPCClient eXist GUI, shell, ligne de commande
XM
L:D
B A
PI
SGBD XML NatifApplication Java
Application
XM
L:D
B A
PI
Inscription : DateNom-p : CdCPrénom-p : CdCCourriel : CdCMdP : CdCStatut : ListeStatuts
Membre
Numéro-v : EntierDate-prop : DateContexte : XHTMLQuestion : CdCDate-ouverture : DateHeure-ouverture : HeureDate-cloture : DateHeure-cloture : HeureTitre : CdC
Vote
A-voté------
Date-v : Date
0..n
0..n
Code-b : EntierChoix : ListeChoixDate-b : Date
BulletinRéférence
0..n
1..1
ListeChoix = {"oui", "non", "abs"}
Propose
0..n
1..1
Numéro-i : Entierip : CdC
Internaute
Valide------
Date-valid : Date
0..n
0..1
⊆
X
=
X
Dat
e : d
ate
au f
orm
at I
SO86
01 d
e la
for
me
AA
AA-M
M-J
J
ListeStatuts = {"standard", "administrateur"}
administrateur
Heu
re :
heur
e U
TC a
u fo
rmat
ISO
8601
de
la f
orm
e TH
H:M
M:S
SZ
C1 : ∀ m ∈ Membre, ∀ v ∈ Vote, Valide(m,v) ⇒ m.statut = "administrateur"
C1
C2
C2 : ∀ i ∈ Internaute, ∀ v ∈ Vote, A-voté(i,v) ⇒ ∃ b ∈ Bulletin, Référence(b,v) ∧ A-voté(i,v).Date-v = b.Date-b
mot : CdCMot-clé
illustre1..n
0..n
<?xml version="1.0" encoding="utf-8"?>
<!ENTITY % xhtml SYSTEM "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">%xhtml;
<!ELEMENT Ma-votation (Internaute*)>
<!ELEMENT Internaute (Membre?)><!ATTLIST Internaute
Numéro-i ID #REQUIREDip CDATA #REQUIRED>
<!ELEMENT Membre (Vote*)><!ATTLIST Membre
Inscription CDATA #REQUIREDNom-p CDATA #REQUIREDPrénom-p CDATA #REQUIREDCourriel CDATA #REQUIREDMdP CDATA #REQUIREDStatut (standard | administrateur) 'standard'>
<!ELEMENT Vote (Contexte, Mot-clé*, (Valide, A-voté*, Bulletin*)?)><!ATTLIST Vote
Numéro-v ID #REQUIREDDate-prop CDATA #REQUIREDQuestion CDATA #REQUIREDTitre CDATA #REQUIREDDate-ouverture CDATA #REQUIREDDate-fermeture CDATA #REQUIREDHeure-ouverture CDATA #REQUIREDHeure-fermeture CDATA #REQUIRED>
<!ELEMENT Contexte (html?)>
<!ELEMENT Mot-clé (#PCDATA) >
<!ELEMENT Valide EMPTY><!ATTLIST Valide
Date-valid CDATA #REQUIREDNuméro-i IDREF #REQUIRED>
<!ELEMENT A-voté EMPTY><!ATTLIST A-voté
Date-v CDATA #REQUIREDNuméro-i IDREF #REQUIRED>
<!ELEMENT Bulletin EMPTY><!ATTLIST Bulletin
Choix (oui | non | abs) #REQUIREDDate-b CDATA #REQUIRED>
Membre
Internaute
Vote Bulletin
A-Voté
propose
valide
Illustre
Ma-votation
Internaute
Membre
Vote
BulletinValide
Contexte
A-voté
htm
l
Partie de DTDnon développée
Numéro-iip
InscriptionNom-p
Prénom-pCourriel
MdP%{Satut}/'standard'
Numéro-vDate-propQuestion
TitreDate-ouvertureDate-fermetureHeure-ouvertureHeure-fermeture
Date-valid#Numéro-i
Date-v#Numéro-i
{Choix}Date-b
Mot-clé
pas d'opérateur
LégendeÉlément
Groupe d'éléments
#PCDATA
ID#IDREF
attribut req.attribut='fixe'%attribut opt°
%attribut/'def'{attribut lst}
<?xml version="1.0"?><annuaire>
<personne id="p18"/></annuaire>
<?xml version="1.0"?><annuaire>
<personne id="p17"><nom>Toto</nom>
</personne><!-- Ceci est un commentaire --><personne id="p18"/>
</annuaire>
<?xml version="1.0"?><annuaire>
<personne id="p17"><nom>Bill</nom>
</personne><!-- Ceci est un commentaire --><personne id="p18"/>
</annuaire>
<?xml version="1.0"?><annuaire>
<personne id="p17"><nom>Bill</nom>
</personne><!-- Ceci est un commentaire -->
</annuaire>
<!DOCTYPE xupdate:modifications SYSTEM "xupdate.dtd"><xupdate:modifications version="1.0" xmlns:xupdate="http://www.xmldb.org/xupdate"> <!-- (1) - Insertion d'un élément --> <xupdate:insert-before select="/annuaire/personne[@id='p18']"> <xupdate:element name="personne"> <xupdate:attribute name="id">p17</xupdate:attribute> <xupdate:element name="nom">Toto</xupdate:element> </xupdate:element> <xupdate:comment>Ceci est un commentaire</xupdate:comment> </xupdate:insert-before> <!-- (2) - Mise à jour du contenu d'un élément --> <xupdate:update select="/annuaire/personne[@id='p17']/nom">Bill</xupdate:update> <!-- (3) - Suppression d'un élément --> <xupdate:remove select="/annuaire/personne[@id='p18']"/>
</xupdate:modifications>
edt
liste_salles
salle
liste_profs types_creneaux liste_semaines
prof plage
hdeb hfin
semaine
jour
creneau
type matiere
%groupeannée
idsallecapacité
{type_salle}idprof
nom prenom dpt tel
ordre num_semaine
{nomjour}njourmois
#nplage#nsalle
%#nprof
pas d'opérateur
LégendeÉlément
Groupe d'éléments
#PCDATA
ID#IDREF
attribut req.attribut='fixe'%attribut opt°
%attribut/'def'{attribut lst}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xupdate:modifications SYSTEM "xupdate.dtd">
<xupdate:modifications version="1.0" xmlns:xupdate="http://www.xmldb.org/xupdate"> <!-- partie 1 --> <xupdate:append select="/edt/liste_semaines/semaine[@num_semaine='s13']/jour[njour='27' and mois='03']"> <xupdate:element name="creneau"> <xupdate:attribute name="nplage">c3</xupdate:attribute> <xupdate:attribute name="nsalle">s110</xupdate:attribute> <xupdate:attribute name="nprof">p377</xupdate:attribute> <xupdate:element name="type">TD</xupdate:element> <xupdate:element name="matiere">J2EE</xupdate:element> </xupdate:element> </xupdate:append> <!-- partie 2 --> <xupdate:remove select="/edt/liste_semaines/semaine[@num_semaine='s13']/jour[njour='28' and mois='03']/creneau[matiere='ZOPE' and (not(type) or (type='Conférence')]"/></xupdate:modifications>
XQuery 1.0 XSLT 2.0
XMLXMLSchema
Espace de noms
XPath 2.0
tmp
ens nb
pas d'opérateur
LégendeÉlément
Groupe d'éléments
#PCDATA
ID#IDREF
attribut req.attribut='fixe'%attribut opt°
%attribut/'def'{attribut lst}
votes
inter nb
pas d'opérateur
LégendeÉlément
Groupe d'éléments
#PCDATA
ID#IDREF
attribut req.attribut='fixe'%attribut opt°
%attribut/'def'{attribut lst}
xquery version "1.0" [encoding "utf-8"] ;
Déclarations :comportements,
imports de modules,espaces de noms
variables,fonctions locales...
Requête XQuery "Principale"
Clause for
Clause let
Clause where
Clause order by
Clause return
SELECT
FROM
WHERE
GROUP BY
HAVING
ORDER BY
XQuery
Résultat
SQL
Résultat
http://www.sciences.univ-nantes.fr/info/annuaire
annuairedate-creation
%date-modification
personne
nom prenom surnom date telephone
%site-webnumerocourriel
MdP
%{usuel}/'Faux' {format}
indicatif num
pas d'opérateur
LégendeÉlément
Groupe d'éléments
#PCDATA
ID#IDREF
attribut req.attribut='fixe'%attribut opt°
%attribut/'def'{attribut lst}
<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet href='../../../styles/section.css' type='text/css'?><!DOCTYPE html:htmlPUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html:html xmlns:html="http://www.w3.org/1999/xhtml"> <html:head> <html:meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <html:title>Tableau de bord des votations</html:title> </html:head> <html:body> <html:table> <html:caption>Votes en attente de validation</html:caption> <html:thead> <html:tr> <html:td>Question</html:td> <html:td>Prénom/Nom auteur</html:td> <html:td>Date de début</html:td> </html:tr> </html:thead> <html:tbody> <html:tr> <html:td width="50%">Êtes-vous pour demander à la mairie d'installer un parc éolien sur St Martin du bois à la place d'un champ de panneaux solaires ? </html:td> <html:td>Marcel Martin</html:td> <html:td>2010-03-01</html:td> </html:tr> <html:tr> <html:td width="50%">Social : Faut-il augmenter les aides aux associations sportives ?</html:td> <html:td>Jacques Dupont</html:td> <html:td>2010-03-01</html:td> </html:tr> </html:tbody> </html:table> <html:hr /> <html:table> <html:caption>Votes clos</html:caption> <html:thead> <html:tr> <html:td>Question</html:td> <html:td>Prénom/Nom auteur</html:td> <html:td>Décision</html:td> </html:tr> </html:thead> <html:tbody> <html:tr> <html:td width="50%">Écologie : doit-on rénover la station d'épuration de la ville ?</html:td> <html:td>Jacques Dupont</html:td> <html:td>Accepté</html:td> </html:tr> <html:tr> <html:td width="50%">Écologie : Êtes-vous d'accord pour autoriser l'entreprise SolarEnergieLtd à s'installer sur notre commune ?</html:td> <html:td>Jacques Dupont</html:td> <html:td>Refusé</html:td> </html:tr> </html:tbody> </html:table> <html:hr /> <html:table> <html:caption>Votes en cours - Tendances</html:caption> <html:thead> <html:tr> <html:td>Question</html:td> <html:td>Prénom/Nom auteur</html:td> <html:td>Oui</html:td> <html:td>Non</html:td> <html:td>Abs</html:td> </html:tr> </html:thead> <html:tbody> <html:tr> <html:td width="50%">Social : Seriez-vous favorable à la création d'une association d'accompagnement des personnes en difficulté à St Martin ?</html:td> <html:td>Edgard Morino</html:td> <html:td>1</html:td> <html:td>1</html:td> <html:td>0</html:td> </html:tr> </html:tbody> </html:table> </html:body></html:html>
emploi-du-temps
jour
semainematièreannée
{nom}date
enseignementcode-plage
type%groupe
emploi-du-temps
jour
semainematièreannée
{nom}date
enseignementcode-plage
type%groupe
emploi-du-temps
jour
semainematièreannée
{nom}date
enseignementheure-début
type%groupe
pas d'opérateur
LégendeÉlément
Groupe d'éléments
#PCDATA
ID#IDREF
attribut req.attribut='fixe'%attribut opt°
%attribut/'def'{attribut lst}
pas d'opérateur
LégendeÉlément
Groupe d'éléments
#PCDATA
ID#IDREF
attribut req.attribut='fixe'%attribut opt°
%attribut/'def'{attribut lst}
pas d'opérateur
LégendeÉlément
Groupe d'éléments
#PCDATA
ID#IDREF
attribut req.attribut='fixe'%attribut opt°
%attribut/'def'{attribut lst}
edt-matières
matière
créneau
nomdate-début
date-fin
{type}heure-début
heure-findate
bilan
matière
nomdate-début
date-fintotal
C TD TP
pas d'opérateur
LégendeÉlément
Groupe d'éléments
#PCDATA
ID#IDREF
attribut req.attribut='fixe'%attribut opt°
%attribut/'def'{attribut lst}
pas d'opérateur
LégendeÉlément
Groupe d'éléments
#PCDATA
ID#IDREF
attribut req.attribut='fixe'%attribut opt°
%attribut/'def'{attribut lst}