<?xml version="1.0" encoding="UTF-8"?> <schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://epu.univ-lyon1.fr/info2a/forum" xmlns:tns="http://epu.univ-lyon1.fr/info2a/forum" elementFormDefault="unqualified"> <complexType name="messageType"> <sequence> <element name="titre" type="string"></element> <element name="corps" type="string"></element> </sequence> <attribute name="id" type="ID" use="optional"></attribute> <attribute name="auteur" type="IDREF" use="required"></attribute> <attribute name="reponse_a" type="IDREF" use="optional"></attribute> <attribute name="date" type="dateTime" use="required"></attribute> </complexType> <complexType name="salleType"> <sequence> <element name="titre" type="string"></element> <element name="message" type="tns:messageType" maxOccurs="unbounded" minOccurs="1"> </element> </sequence> <attribute name="id" type="ID" use="optional"></attribute> <attribute name="moderateur" type="IDREF" use="optional"></attribute> </complexType> <complexType name="membreType"> <sequence> <element name="nom" type="string"></element> <element name="email" type="string"></element> </sequence> <attribute name="id" type="ID" use="required"></attribute> </complexType> <element name="forum"> <complexType> <sequence> <element name="salle" type="tns:salleType" maxOccurs="unbounded" minOccurs="0"></element> <element name="membre" type="tns:membreType" maxOccurs="unbounded" minOccurs="0"></element> </sequence> </complexType> </element> </schema>
Requêtes
XQUERY doc("/public/bdav/forum/exemple1.xml")//message[../message/@reponse_a = @id] /
XQUERY doc("/public/bdav/forum/exemple1.xml")//message[@reponse_a = 2] /
XQUERY doc("/public/bdav/forum/exemple1.xml")//membre[@id = ../salle/message[@auteur = following::message/@auteur]/@auteur] /
XQUERY doc("/public/bdav/shakespear/hamlet.xml")//SPEECH[SPEAKER="HAMLET" or SPEAKER = "HORATIO"]/LINE /
XQUERY doc("/public/bdav/shakespear/hamlet.xml")//SPEECH[SPEAKER="HAMLET"]/following-sibling::SPEECH[1][SPEAKER="HORATIO"]/../TITLE /
XQUERY <auteurs> { for $a in doc("/public/bdav/forum/exemple1.xml")//membre return <auteur>{$a/@*}{$a/*}</auteur> } </auteurs> /
XQUERY <auteurs> { for $a in doc("/public/bdav/forum/exemple1.xml")//membre return <auteur>{$a/@*} {$a/*} {$a/..//message[@auteur = $a/@id]} </auteur> } </auteurs> /
XQUERY <html> <head><title>Forum</title></head> <body> { for $s in doc("/public/bdav/forum/exemple1.xml")//salle return (<h1>{$s/titre/text()}</h1>, for $m in $s/message let $a := $s/../membre[@id = $m/@auteur] return (<h2>{$m/titre/text()}</h2>, <p><a href="mailto:{$a/email/text()}">{$a/nom/text()}</a></p>, <p>{$m/corps/text()}</p> ) ) } </body> </html> /
XQUERY let $doc := doc("/public/bdav/shakespear/hamlet.xml") return <forum> { for $s in $doc//SCENE return <salle><titre>{$s/TITLE/text()}</titre> { for $sp in $s/SPEECH let $tit := $sp/LINE[1]/text(), $corps := $sp/LINE[position() > 1]/text(), $aut := $sp/SPEAKER/text() return <message date="{current-dateTime()}" auteur="{$aut}"> <titre>{$tit}</titre> <corps>{$corps}</corps> </message> } </salle> } { for $p in $doc//PERSONA let $n := $p/text() return <membre id="{$n}"><nom>{$n}</nom><email>{$n}@shakespeare.net</email></membre> } </forum> /