Ce document est une traduction de la proposition technique HTTP
Extensions for Distributed Authoring -- WEBDAV de The Internet Society,
dat�e de f�vrier 1999. Cette version traduite peut contenir
des erreurs absentes de l'original, dues � la traduction elle-m�me.
La version originale en anglais, la seule � pouvoir servir de r�f�rence,
se trouve � l'adresse http://www.webdav.org/specs.
Traducteurs : Jean-Jacques Thomasson : <[email protected]>
Traduction h�berg�e par <XML>fr.
Copyright � 1999 The Internet Society, tous droits r�serv�s. Note de traduction: L'entit� ISO LATIN I de "oe" ligatur� n'�tant pas support�e par certains navigateurs, il sera �crit oe. |
R�alis�e par le groupe de travail sur les r�seaux de The Internet Society
R�sum�
1 Introduction
2 Conventions d'�criture
3 Terminologie
4 Mod�le de donn�es des propri�t�s
des ressources
4.1 Mod�le des propri�t�s de ressource
4.2 Propositions en cours pour les m�ta-donn�es
4.3 Propri�t�s et ent�tes HTTP
4.4 Valeurs des propri�t�s
4.5 Noms des propri�t�s
4.6 Liens ind�pendants des m�dias
5 Collections de ressources WEB
5.1 Mod�le de l'espace de noms d'URL HTTP
5.2 Collection de ressources
5.3 Cr�ation et extraction de collections de ressources
5.4 Ressources source et ressources de sortie
6 Verrouillage
6.1 Verrous exclusifs et partag�s
6.2 Support requis
6.3 Marqueurs de verrous
6.4 sch�ma URI du marqueur de verrou opaquelocktoken
6.4.1 G�n�ration du champ noeud sans passer
par une adresse IEEE 802
6.5 Exploration des possibilit�s de verrouillage
6.6 Exploration des verrous actifs
6.7 Consid�rations d'utilisation
7 Verrou d'�criture
7.1 M�thodes restreintes par les verrous d'�criture
7.2 Verrous d'�criture et marqueurs de verrous
7.3 Verrous d'�criture et propri�t�
7.4 Verrous d'�criture sur des ressources nulles
7.5 Verrous d'�criture sur des collections
7.6 Verrous d'�criture et ent�te de requ�te
If
7.6.1 Exemple - verrou d'�criture
7.7 Verrous d'�criture et m�thodes copy/move
7.8 Rafra�chissement des verrous d'�criture
8 M�thodes HTTP
pour la r�daction
distribu�e
8.1 M�thode PROPFIND
8.1.1 Exemple - obtenir des propri�t�s nomm�es
8.1.2 Exemple - utilisation de allprop
pour
obtenir toutes les propri�t�s
8.1.3 Exemple - utilisation de propname
pour
obtenir les noms de toutes les propri�t�s
8.2 M�thode PROPPATCH
8.2.1 Codes d'�tats � utiliser avec des
m�thodes multi-�tats 207
8.2.2 Exemple - m�thode PROPPATCH
8.3 M�thode MKCOL
8.3.1 Requ�te
8.3.2 Codes d'�tats
8.3.3 Exemple - m�thde MKCOL
8.4 M�thodes GET
et HEAD
appliqu�es � des collections
8.5 M�thode POST
appliqu�e �
des collections
8.6 M�thode DELETE
8.6.1 M�thode DELETE
appliqu�e
� des ressources autres que des collections
8.6.2 M�thode DELETE
appliqu�e
� des collections
8.7 M�thode PUT
8.7.1 M�thode PUT
pour des ressources
autres que des collections
8.7.2 M�thode PUT
pour des collections
8.8 M�thode COPY
8.8.1 M�thode COPY
pour des ressources
HTTP/1.1
8.8.2 M�thode COPY
appliqu�e
� des propri�t�s
8.8.3 M�thode COPY
appliqu�e
� des collections
8.8.4 M�thode COPY
et ent�te
Overwrite
8.8.5 Codes d'�tats
8.8.6 Exemple - COPY
avec overwrite
8.8.7 Exemple - COPY
sans overwrite
8.8.8 Exemple - COPY
sur une collection
8.9 M�thode MOVE
8.9.1 M�thode MOVE
appliqu�e
aux propri�t�s
8.9.2 M�thode MOVE
appliqu�e
� des collections
8.9.3 M�thode MOVE
et l'ent�te
overwrite
8.9.4 Codes d'�tat
8.9.5 Exemple - MOVE
d'une ressource autre
qu'une collection
8.9.6 Exemple - MOVE
d'une collection
8.10 M�thode LOCK
8.10.1 Fonctionnement
8.10.2 L'effet des verrous sur les propri�t�s
et les collections
8.10.3 Verrouillage des ressources dupliqu�es
8.10.4 Valeur de Depth
et verrouillage
8.10.5 Interaction avec d'autres m�thodes
8.10.6 Tableau de compatibilit� des verrous
8.10.7 Codes d'�tat
8.10.8 Exemple - une demande de verrouillage simple
8.10.9 Exemple - rafra�chissement d'un verrou d'�criture
8.10.10 exemple - requ�te de verrou sur plusieurs
ressources
8.11 M�thode UNLOCK
8.11.1 Exemple - UNLOCK
9 Les ent�tes HTTP
pour la r�daction
distribu�e
9.1 Ent�te DAV
9.2 Ent�te Depth
9.3 Ent�te Destination
9.4 Ent�te If
9.4.1 R�gle de production de No-tag-list
9.4.2 R�gle de production de Tagged-list
9.4.3 R�gle de production inverse (not
)
9.4.4 Fonction matching
9.4.5 Ent�tes If et les proxies non conformes DAV
9.5 Ent�te de marqueur de verrou (Lock-Token
)
9.6 Ent�te Overwrite
9.7 ent�te de r�ponse Status-URI
9.8 Ent�te de requ�te Timeout
10 Extensions des codes d'�tat de HTTP/1.1
10.1 Code d'�tat 102
: Traitements
10.2 Code d'�tat 207
: Etats multiples
10.3 Code d'�tat 422
: Entit� impossible � traiter
10.4 Code d'�tat 423
: verrouill�
10.5 Code d'�tat 424
: D�pendance �chue
10.6 Code d'�tat 507
: M�moire insuffisante
11 R�ponse d'�tats multiples
12 D�finitions des �l�ments XML
12.1 El�ment XML activelock
12.1.1 El�ment XML depth
12.1.2 El�ment XML locktoken
12.1.3 El�ment XML timeout
12.2 El�ment XML collection
12.3 El�ment XML href
12.4 El�ment XML link
12.4.1 El�ment XML dst
12.4.2 El�ment XML src
12.5 El�ment XML lockentry
12.6 El�ment XML lockinfo
12.7 El�ment XML lockscope
12.7.1 El�ment XML exclusive
12.7.2 El�ment XML shared
12.8 El�ment XML locktype
12.8.1 El�ment XML write
12.9 El�ment XML multistatus
12.9.1 El�ment XML response
12.9.2 El�ment XML responsedescription
12.10 El�ment XML owner
12.11 El�ment XML prop
12.12 El�ment XML propertybehavior
12.12.1 El�ment XML keepalive
12.12.2 El�ment XML omit
12.13 El�ment XML propertyupdate
12.13.1 El�ment XML remove
12.13.2 El�ment XML set
12.14 El�ment XML propfind
12.14.1 El�ment XML allprop
12.14.2 El�ment XML propname
13 Propri�t�s DAV
13.1 Propri�t� creationdate
13.2 Propri�t� displayname
13.3 Propri�t� getcontentlanguage
13.4 Propri�t� getcontentlength
13.5 Propri�t� getcontenttype
13.6 Propri�t� getetag
13.7 Propri�t� getlastmodified
13.8 Propri�t� lockdiscovery
13.8.1 Exemple - obtenir la propri�t� lockdiscovery
13.9 Propri�t� resourcetype
13.10 Propri�t� source
13.10.1 Exemple - une propri�t� source
13.11 Propri�t� supportedlock
13.11.1 Exemple - extraire la propri�t�
supportedlock
14 R�gles pour la prise en compte de XML dans DAV
15 Classes conformes DAV
15.1 Classe 1
15.2 Classe 2
16 Consid�rations sur l'internationalisation
17 Consid�rations sur la s�curit�
17.1 Authentification des clients
17.2 Blocage du service
17.3 La s�curit� par l'obscurit�
17.4 Consid�rations sur la confidentialit�
par rapport aux verrous
17.5 Consid�rations sur la confidentialit�
par rapport aux propri�t�s
17.6 R�duction de la s�curit� �
cause des liens de type source
17.7 Cons�quences de l'usage d'entit�s externes
XML
17.8 Risques en relation avec les marqueurs de verrous
18 Consid�rations relatives � l'IANA
19 Propri�t� intellectuelle
20 Avertissements
21 R�f�rences
21.1 R�f�rences normatives
21.2 R�f�rences informatives
22 Adresses des auteurs
23 Annexes
23.1 Annexe 1 - D�finition de Type de Document (DTD)
de WEBDAV
23.2 Annexe 2 - Profil ISO 8601 pour les indications de
date et de temps
23.3 Annexe 3 - Notes sur le traitement des �l�ments
XML
23.3.1 Notes sur les �l�ments vides XML
23.3.2 Notes sur les traitements XML interdits
23.4 Annexe 4 -- Les espaces de noms XML pour WebDAV
23.4.1 Introduction
23.4.2 Signification des noms qualifi�s
24 COPYRIGHT complet
Ce document d�crit une extension du protocole HTTP/1.1 qui permet aux clients WEB de participer � des processus �ditoriaux � distance. Cette extension fournit un ensemble coh�rent de m�thodes, ent�tes, formats de corps de requ�tes et de r�ponses qui permettent de faire les op�rations suivantes :
Le raisonnement et les conditions requises pour ces op�rations sont d�crits dans un document annexe intitul� "Conditions n�cessaires au protocole d'�criture et de versionnement distribu�s pour le World Wide Web" [RFC2291].
Les sections ci-dessous forment une introduction d�taill�e aux propri�t�s des ressources (section 4), les collections de ressources (section 5), les op�rations de verrouillage (section 6). Ces sections introduisent les abstractions manipul�es par les m�thodes HTTP sp�cifiques � WebDav d�crites � la section section 8, "m�thodes HTTP pour l'�criture distribu�e".
Dans HTTP/1.1, les param�tres pass�s aux m�thodes �taient exclusivement cod�s dans les ent�tes HTTP. WebDav, au contraire, code ces informations soit dans le corps d'une entit� requ�te en utilisant le format XML (eXtensible Markup Language) [REC-XML], soit dans une ent�te HTTP. Le choix de l'utilisation de XML pour coder les param�tres d'une m�thode a �t� motiv� par la possibilit� qu'offre ce langage de pouvoir rajouter des �l�ments � des structures existantes, apportant ainsi l'extensibilit� attendue et par la possibilit� qu'offre XML de pouvoir coder l'information en utilisant les jeux de caract�res ISO 10646, afin de garantir un support international. Comme r�gle g�n�rique, on retiendra que les param�tres sont cod�s dans le corps XML des requ�tes quand leur longueur est quelconque, ou qu'ils peuvent �tre vus par un regard humain, ce qui n�cessite un codage des caract�res en ISO 10646 et qu'ils sont cod�s � l'int�rieur des ent�tes HTTP dans les autres cas. La section 9 d�crit les nouvelles ent�tes HTTP utilis�es avec les m�thodes WebDAV.
Au del� de son utilisation pour le codage des param�tres des m�thodes, XML est utilis� dans WebDav pour coder les r�ponses aux m�thodes, apportant ainsi les avantages de l'extensibilit� et de l'internationalisation de XML dans les deux cas de figure.
Les �l�ments XML utilis�s dans cette sp�cification sont d�finis dans la section 12.
L'extension de l'espaces de noms XML (Annexe 4) est aussi utilis�e dans cette sp�cification afin d'autoriser l'usage de nouveaux �l�ments XML sans que ceux-l� rentrent en collision avec d'autres.
Bien que les codes d'�tats fournis par HTTP/1.1 soient suffisants pour prendre en charge la plupart des cas d'erreur des m�thodes WebDAV, il existe quelques cas d'erreurs qui ne tombent pas nettement dans les cat�gories existantes. Les nouveaux codes d'�tats d�velopp�s pour les m�thodes WebDav sont d�finis dans la section 10. Comme il existe quelques m�thodes WebDav qui peuvent agir sur plusieurs ressources, les r�ponses de type �tats multiples ont �t� introduites pour retourner des informations d'�tats concernant plusieurs ressources. La r�ponse d'�tats multiples est d�crite dans la section 11.
WebDAV utilise le m�canisme des propri�t�s pour renregistrer l'�tat courant d'une ressource. Par exemple, qaund un verrou est pos� sur une ressource, une propri�t� d'information de verrou permet de conna�tre l'�tat courant du verrou. La section 13 d�finit les propri�t�s utilis�es avec les sp�cifications WebDAV.
La fin de la sp�cification contient des sections portant sur la compatibilit� (section 15), sur le support de l'internationalisation (section 16), et la s�curit�(section 17).
Ce document d�crivant un ensemble d'extensions au protocole HTTP/1.1, l'extension de la BNF utilis�e ici pour sp�cifier les �l�ments du protocole est exactement la m�me que celle d�crite � la section 2.1 de [RFC2068] et s'appuie �galement sur les r�gles de production de base fournies � la section 2.2 de [RFC2068].
Les mots cl�s "DOIT", "NE DOIT PAS", "REQUIS", "DEVRA", "NE DEVRA PAS", "DEVRAIT", NE DEVRAIT PAS", "RECOMMAND�", "PEUT" et "OPTIONNEL" utilis�s dans ce document doivent �tre interpr�t�s tel que d�crit dans le document RFC 2119 [RFC2119].
URI/URL : respectivement "Identifiant Uniforme de Ressource" (Uniform Resource Identifier) et "Adresse Uniforme de Ressource" (Uniform Resource Locator). Ces termes (et la distinction entre les deux) sont d�finis dans le document [RFC2396].
Collection : Une collection est une ressource compos�e d'un ensemble d'URI, celles des membres appel�s. Elles identifient les ressources membres et doivent �tre conformes aux conditions d�crites dans la section 5 de cette sp�cification.
URI membre : Toute URI de l'ensemble d'URI constituant une collection.
URI membre interne : Une URI membre en relation directe avec l'URI de la collection (la d�finition de ce que signifie "en relation directe" est �crite � la section 5.2).
Propri�t� : Une paire compos�e d'un nom et d'une valeur permettant de d�crire les caract�ristiques de la ressource.
Propri�t� vivante : Une propri�t� dont la
s�mantique et la syntaxe sont impos�es par le serveur. Par exemple,
la valeur de la propri�t� vivante "getcontentlength
",
en l'occurrence la longueur de l'entit� retourn�e par une requ�te
GET
, est calcul�e dynamiquement par le serveur.
Propri�t� morte : Une propri�t� dont la s�mantique et la syntaxe ne sont pas impos�es par le serveur. Le serveur ne fait qu'en enregistrer la valeur et il revient au poste client d'en garantir la coh�rence syntaxique et s�mantique.
Resource NULL : Une ressource qui retourne une erreur 404
(message "pas trouv�e") en r�ponse � toute m�thode
HTTP/1.1 ou DAV sauf dans le cas des m�thodes PUT
, MKCOL
,
OPTIONS
et LOCK
. Une ressource NULL NE DOIT
PAS appara�tre dans la liste des membres de sa collection parent.
Les propri�t�s sont une partie des donn�es des la ressource dont elle servent � en d�crire l'�tat. En quelque sorte, les propri�t�s sont des donn�es qui d�crivent des donn�es.
Les propri�t�s sont utilis�es dans les environnements
de r�daction distribu�e afin de fournir des moyens efficaces de
recherche et de gestion des ressources. Par exemple, une propri�t�
qui s'appellerait 'subject
' peut permettre de faire une indexation
des ressources par sujet, et une propri�t� 'author
'
offrirait la possibilit� de rechercher les documents � partir
des noms de leurs auteurs.
Le mod�le des propri�t�s DAV est form� du couple nom/valeur. Le nom d'une propri�t� permet d'en conna�tre la syntaxe et la s�mantique, et fournit une adresse par laquelle on peut faire r�f�rence � cette syntaxe et cette s�mantique.
Il y a deux cat�gories de propri�t�s : les propri�t�s "vivantes" et la propri�t�s "mortes". Une propri�t� vivante a sa syntaxe et sa s�mantique impos�es par le serveur. Les propri�t�s vivantes comprennent les cas o� a) la valeur de la propri�t� est en lecture seule et elle est maintenue par le serveur, et b) la valeur de la propri�t� est maintenue par le client et le serveur contr�le la syntaxe des valeurs transmises. Toutes les instances d'une propri�t� vivante DOIVENT �tre conformes � la d�finition qui a �t� associ�e au nom de cette propri�t�. Une propri�t� morte a sa syntaxe et sa s�mantique impos�es par le client; le serveur ne fait bien souvent qu'en enregistrer la valeur mot � mot.
Les propri�t�s ont toujours jou�es un r�le tr�s important dans la gestion des grands r�f�rentiels de documents, et beaucoup des propositions actuelles int�grent les notions de propri�t�s, ou sont des discussions relatives au r�le des m�ta-donn�es sur le Web de mani�re plus g�n�rale. Cela comprend PICS [REC-PICS], PICS-NG, XML, Web Collections, et plusieurs autres propositions concernant la repr�sentation des relations � l'int�rieur de HTML. Le travail sur PICS-NG et Web Collections a �t� poursuivi par le groupe de travail sur RDF (Resource Description Framework) du World Wide Web Consortium. RDF consiste en un mod�le de donn�es pr�vu pour fonctionner en r�seau et une repr�sentation XML de ce mod�le.
Quelques propositions proviennent des concepts de biblioth�ques �lectroniques. Parmis celles-l� se trouve l'ensemble de m�ta-donn�es Dublin Core [RFC2413] et le Warwick Framework [WF], une structure d'accueil pour diff�rents sch�mas de m�ta-donn�es. La litt�rature contient beaucoup d'exemples de m�ta-donn�es, par exemple MARC [USMARC], un format de m�ta-donn�es pour les bibliographies, et le rapport technique sur le format de bibliographie utilis� par le syst�me Dienst [RFC1807]. De plus, les minutes de la premi�re conf�rence de l'IEEE sur les m�ta-donn�es fournissent une grande vari�t� d'ensembles de m�ta-donn�es qui ont �t� d�velopp�s pour les besoins sp�cifiques de communaut�s particuli�res.
Les participants � la s�ance de travail "Metadata II" en 1996 � Warwick, UK [WF], ont pu noter que "de nouveaux ensembles de m�ta-donn�es se d�velopperont parall�llement � l'�volution de l'infrastructure r�seau" et que "diff�rentes communaut�s proposeront, concevront, et seront responsables de diff�rents types de m�ta-donn�es". Ces observations peuvent �tre corrobhor�es en notant que plusieurs ensembles de m�ta-donn�es sp�cifiques � des communaut�s particuli�res existent d�j�, et qu'il existe une r�elle motivation � d�velopper de nouvelles formes de m�ta-donn�es au fur et � mesure que le nombre de communaut�s utilisant des donn�es sous forme num�rique augmente, ce qui exige d'avoir un format de m�ta-donn�es qui permette de les identifier et de les cataloguer.
Des propri�t�s exsitent d�j�, d'une certaine mani�re, dans les ent�tes des messages HTTP. Toutefois, dans les environnements de r�daction distribu�e, un nombre relativement �lev� de propri�t�s est n�cessaire pour d�crire l'�tat d'une ressource. Les initialiser et les retourner par les seules ent�tes HTTP serait inefficace. Aussi, un m�canisme est n�cessaire pour permettre � un "principal" d'identifier l'ensemble des propri�t�s qui le concerne et qu'il a le droit d'initialiser et de lire.
La valeur d'une propri�t� exprim�e en XML DOIT �tre bien form�e.
XML a �t� retenu parce que c'est un format de donn�es flexible, se d�crivant lui-m�me, structur�, qui supporte des d�finitions de sch�mas puissants, et supporte plusieurs jeux de caract�res. La nature "auto-descriptive" de XML permet � n'importe quelle valeur de propri�t� d'�tre �tendue par l'ajout de nouveaux �l�ments. Des clients plus anciens supporteront les extensions parce qu'ils sauront toujours traiter les donn�es sp�cifi�es dans leur format original et ignorer les �l�ments rajout�s qu'ils ne comprennent pas. Le support des multiples jeux de caract�res en XML permet � toute propri�t� lisible par l'oeil humain d'�tre cod�e et lue dans un jeu de caract�res familier � l'utilisateur. Le support par XML de multiples langages humains, par l'utilisation de l'attribut "xml:lang", permet de g�rer les cas o� un m�me jeu de caract�res est commun � plusieurs langages humains.
Un nom de propri�t� est un identifiant universel unique associ� � un sch�ma qui fournit l'information quant � la syntaxe et la s�mantique de la propri�t�.
Une cons�quence de l'aspect universel et unique des noms de propri�t�s et que les donn�es re�ues par les applications clientes peuvent d�pendre de la r�gularit� de comportement d'une propri�t� en particulier utilis�e dans diff�rentes ressources, que ce soit sur le m�me serveur ou sur des serveurs diff�rents, et particuli�rement si cette propri�t� est "vivante", le r�sultat d�pendra directement de la fid�lit� de son impl�mentation par rapport � sa d�finition.
Le m�canisme des espaces de noms de XML, qui repose sur des URI s [RFC2396], est utilis� pour nommer les propri�t�s parce qu'il permet d'�viter les collisions de noms et fournit plusieurs niveaux de contr�les au niveau de leur gestion.
La propri�t� namespace
est plate; c'est �
dire qu'elle n'a pas de structure hi�rarchique reconnue. C'est �
dire que si deux propri�t�s qui s'�crivent pour l'une A
et pour l'autre A/B
existent sur une ressource, cela ne signifie
qu'il y a une quelconque relation de hi�rarchie entre les deux. Une sp�cification
s�par�e sera �ventuellement r�alis�e sur
la question de la hi�rarchisation des propri�t�s.
En conclusion, il n'est pas possible de d�finir deux fois une m�me propri�t� s'appliquant � la m�me ressource car cela provoquerait une collision dans l'espace de noms des propri�t�s de cette ressource.
Bien que les liens entre ressources soient support�s avec HTML, le Web
a besoin d'un support plus g�n�ral des liens entre les diff�rents
types de m�dia possible (ces types de m�dia sont connus comme
�tant des types MIME ou des types de contenus). WebDav fournit de tels
liens. Un lien WebDav est d�finit par un type sp�cifique de propri�t�,
formellement d�fini � la section 12.4 (�l�ment XML
Link
) , qui permet de d�finir des liens entre des ressources
de n'importe quel type de m�dia. La valeur de la propri�t�
est constitu�e des URI (Uniform Resource Identifiers) des ressources
sources et destinations des liens; le nom de la propri�t� identifie
le type de lien.
Cette section contient la description d'un nouveau type de ressource Web, le type collection, et discute de ses interactions avec le mod�le de l'espace de nom des URL de HTTP. L'objectif d'une ressource de type collection est de mod�liser des objets qui sont des regroupements de ressources (par exemple, les r�pertoires d'un syst�me de fichiers) dans l'espace de noms d'un serveur.
Toutes les ressources compatibles DAV DOIVENT supporter le mod�le de l'espace de noms des URL de HTTP comme cela est sp�cifi� comme ci-apr�s.
L'espace de noms d'URL HTTP est un mod�le hi�rarchique de noms dans lequel la hi�rarchie est syntaxiquement repr�sent�e par le caract�re "/".
Un espace de noms d'URL HTTP est r�put� �tre r�gulier quand il r�pond � la condition suivante : pour toute URL de la hi�rachie HTTP il existe une collection parente contenant cette URL comme membre interne ; seule la racine, ou collection de plus haut niveau de l'espace de noms, est exempt� de la r�gle pr�c�dente.
Ni HTTP/1.1 ni WebDav n'imposent que la totalit� de l'espace de noms d'URL HTTP soit r�gulier. Cependant, cette sp�cification pr�cise que certaines m�thodes WebDav ne sont pas autoris�es � produire des r�sultats qui rendrait l'espace de noms irr�gulier.
Bien que cela soit implcite dans [RFC2068] et [RFC2396], toute ressource, y compris les ressources de type collection, PEUVENT �tre identifi�es par plus d'une URI. Par exemple, une ressource peut �tre identifi�e pas plusieurs URL HTTP.
Une collection est une ressource dont l'�tat est
constitu� d'au moins une liste d'URI de membres internes et d'un ensemble
de propri�t�s ; une collection peut toutefois avoir des �tats
additionels tel que des corps d'entit�s retourn�s suite �
l'ex�cution d'une m�thode GET
. Une URI de membre
interne DOIT �tre en relation directe avec une URI de base de la
collection. Cela �tant, l'URI du membre interne d'une collection est
�gale � l'URI de la collection auquel on rajout un segment additionel
pour les ressources qui ne sont pas elle-m�mes des collections , ou d'un
segment additionel suivi de "/
" pour les ressources internes �
la collection qui sont elle-m�mes des collections, o� le segment
est d�fini dans la section 3.3 du document [RFC2396].
Toute URI qui est un membre interne donn� DOIT appartenir � la collection de mani�re unique, c'est � dire qu'il est interdit d'avoir plusieurs instances de la m�me URI dans une collection. Les propri�t�s d�finies sur des collections ont exactement les m�mes comportement que celles des ressources qui ne sont pas des collections.
Pour toute resource A
et B
compatible WebDAV, identifi�es
par les URI s U
et V
, o� U
est
imm�diatement relative � V
, B
DOIT
�tre une collection ayant U comme URI de membre interne. Ainsi, si les
ressources dont les URL http://foo.com/bar/blah
et http://foo.com/bar/ sont conformes �
WebDav alors la ressource ayant pour URL http://foo.com/bar/
doit �tre une collection et doit contenir l'URL http://foo.com/bar/blah
comme membre interne.
Dans la hi�rarchie des espaces de noms d'URL HTTP, les ressources de type collection PEUVENT contenir comme membres internes les URLs d'enfants non-conformes � WebDav mais cela n'est pas exig�. Par exemple, si la ressource ayant l'URL http://foo.com/bar/blah n'est pas conforme � WebDAV et que l'URL http://foo.com/bar/ est identifi�e comme �tant une collection alors l'URL http://foo.com/bar/blah peut �tre ou non un membre interne de la collection http://foo.com/bar/.
Si une ressource conforme � WebDav n'a aucun enfant conforme � WebDav dans l'arborescence de l'espace de noms d'URL HTTP alors WebDav n'exige pas que cette ressource soit une collection.
Il existe une convention �tablie qui dit que lorsque une collection
est r�f�renc�e par son nom sans le slash de fin, le slash
de fin est automatiquement rajout�. A cause de cela, une ressource peut
accepter une URI sans "/" de fin pout pointer vers une collection. Dans ce cas,
elle DEVRAIENT retourner dans sa r�ponse une ent�te content-location
pointant vers l'URI se finissant par le "/
". Par exemple, si un
client invoque une m�thode portant sur http://foo.bar/blah
(pas de "/
" � la fin), La ressource http://foo.bar/blah/
(avec un "/
" de fin) peut r�pondre comme si la
requ�te lui avait �t� appliqu�e, et en renvoyant
dans ce cas une ent�te content-location
contenant http://foo.bar/blah/.
En g�n�ral, les clients DEVRAIENT utiliser la forme avec
le "/
" pour les noms de collections.
Une ressource PEUT �tre une collection mais n'�tre pas conforme
� WEBDAV. Cela �tant, la ressource peut �tre conforme �
toutes les r�gles d�finies dans cette sp�cification quant
� la mani�re dont doit se comporter une collection sans pour autant
supporter toutes les m�thodes qu'une ressource conforme � WebDav
se doit de supporter. Dans ce cas de figure, la ressource peut retourner la
propri�t� DAV:resourcetype
avec la valeur DAV:collection
mais NE DOIT PAS retourner la valeur "1
"
dans l'ent�te DAV en r�ponse � la m�thode OPTIONS
.
Ce document contient la sp�cification de la m�thode MKCOL
qui sert � cr�er de nouvelles ressources de type collection, cela
en remplacement des m�thodes PUT
ou POST
d'HTTP/1.1
pour les raisons suivantes :
Dans HTTP/1.1, la d�finition de la m�thode PUT
est
l'enregistrement du corps de la requ�te � l'endroit sp�cifi�
par l'URI requ�te. Alors qu'un format de description de collections pourrait
tout � fait �tre con�u � partir de la m�thode
PUT
, les cons�quences de l'envoi d'une telle description
au serveur seraient ind�sirables. Par exemple, si la description d'une
collection, dans laquelle il manquerait des ressources pourtant bien pr�sentes
sur le serveur, �tait mise par PUT
sur le serveur, cela
pourrait �tre interpr�t� comme une commande de destruction
des membres correspondant � l'omission. Cela am�nerait la m�thode
PUT
� agir comme la fonction DELETE
, ce qui
est un effet ind�sirable puisque cela changerait la s�mantique
de la m�thode PUT
et rendrait difficile le contr�le
de la fonction DELETE
reposant un mod�le de gestion des
droits d'acc�s bas� sur des m�thodes.
Alors que la m�thode POST
est suffisamment ouverte pour
qu'une commande POST
de type "cr�e une collection" pourrait
�tre construite, cela est �galement ind�sirable parce qu'il
serait alors difficile de faire la diff�rence entre cette utilisaiton
de la m�thode POST
et les autres utilisations de POST
.
La d�finition exacte du comportement que les m�thodes GET
et PUT
doivent avoir quand elles sont appliqu�es �
des collections est d�finie ult�rieurement dans ce document.
Dans de nombreux cas de ressources, l'entit� retourn�e par une
m�thode GET
correspond exactement � l'�tat
persistant de la ressource, c'est le cas, par exemple, d'un fichier GIF stock�
sur un disque. Dans ce cas simple, l'URI � laquelle la ressource est
acc�d�e est identique � l'URI � laquelle la ressource,
dans son �tat persistent, est stock�e. C'est aussi le cas des
fichiers HTML sources qui sont transmis tel quel au client par le serveur (dans
le cas o� il n'y a pas de traitement particulier pr�alable �
l'affichage).
Toutefois, il arrive que le serveur traite les ressources HTML avant leur transmission
au client en tant que corps d'entit�. Par exemple, une directive de type
"server-side-include
" (SSI) incluse dans un fichier HTML
peut donner l'instruction � un serveur de remplacer la directive elle-m�me
par une valeur calcul�e telle que la date courante. Dans ce cas, le fichier
retourn� par la m�thode GET
(le fichier HTML d'origine
avec le r�sultat du calcul de la date) est diff�rent de l'�tat
persistent de la ressource (le fichier HTML d'origine contenant la directive
SSI). Il est important de remarquer que dans ce cas typique, il n'y a actuellement
aucun moyen d'acc�der la ressource HTML source qui contient la directive
avant traitement.
Parfois, l'entit� retourn�e par la m�thode GET
est le r�sultat d'un programme d'extraction de donn�es d�crites
par une ou plusieurs ressources sources (qui peuvent m�me ne pas avoir
d'emplacement � l'int�rieur m�me de l'espace de noms de
l'URI). Un seul programme d'extraction de donn�es peut, � lui
seul, g�n�rer dynamiquement un nombre potentiellement important
de ressources de sortie. Un exemple caract�ristique peut �tre celui
d'un script CGI qui d�crit un programme de type passerelle d'indexation
mettant en correspondance une partie de l'espace de nom d'un serveur avec une
demande d'indexation, par exemple http://www.foo.bar.org/finger_gateway/user@host.
Dans le cas o� les fonctions de r�daction distribu�e ne sont pas support�es, il est acceptable de ne pas �tablir de correspondance entre les ressources sources et l'espace de nom URI. En faite, cette forme de protection par rapport aux acc�s � des ressources sources a un r�el effet b�n�fique sur la s�curit�. Toutefois, si l'�dition � distance de la ressource source est souhait�e, elle doit avoir un emplacement dans l'espace de noms de l'URI. L'emplacement de la source ne doit pas se trouver au m�me endroit que celui o� la ressource calcul�e est accessible, puisque, en g�n�ral, les serveurs sont incapable, dans ce cas, de faire la distinction entre les demandes qui s'adressent aux ressources sources et celles qui concernent les ressources de sortie calcul�es. Il y a souvent une relation de type n-n entre les ressources sources et les ressources de sortie.
Sur les serveurs conformes � WebDav l'URI de la ressource source peut
�tre enr�gistr�e comme un lien vers la ressource de sortie
ayant le type DAV:source
(se r�f�rer � la
section 13.10 pour une description de la propri�t� link
de la source). Conserver les URI des sources sous la forme de liens vers les
ressources de sortie revient � faire porter au client la charge de d�couvrir
l'emplacement o� se trouve r�ellement la source sur lequel se
fait la r�daction. Remarquez qu'il n'est pas garantie que la valeur du
lien source pointe vers la bonne source. Les liens vers les sources peuvent
�tre rompus ou des erreurs peuvent avoir �t� commises au
moment de de leur saisie. Remarquez �galement que tous les serveurs ne
permettront pas aux postes clients de fixer les valeurs des liens vers les sources.
Par exemple un serveur qui g�n�rerait pour ses fichiers CGI des
liens calcul�s � la vol�e (par programme) vers les sources
n'autoriserait probablement pas les clients de le faire � sa place.
La possibilit� de verrouiller une ressource est un m�canisme permettant de s�rialiser les acc�s � cette ressource. En utilisant un verrou, un client en r�daction fournit une garantie fiable qu'un autre ne viendra pas modifier une ressource qui serait d�j� en cours de modification. En faisant cela, un client est prot�g� contre le probl�me de "derni�re mise � jour perdue".
Cette sp�cification permet d'avoir diff�rents types de verrous au moyen de deux param�tres sp�cifiques aux clients, le nombre de demandeurs impliqu�s (exclusif vs. partag�) et le type d'acc�s � leur accorder. Ce document d�finit le verrouillage pour un seul type d'acc�s : celui en �criture. Toutefois, la syntaxe est extensible et permet la sp�cification �ventuelle de verrouillage pour d'autres types d'acc�s.
La forme de verrou la plus �l�mentaire est le verrou exclusif. Il s'agit d'un verrou par lequel le droit d'acc�s fourni est accord� � un seul demandeur. La raison de cet arbitrage vient du d�sir de ne pas avoir � r�soudre le probl�me de la fusion des modifications faites sur les sources.
Toutefois, il y a des cas o� le but d'un verrou n'est pas d'en emp�cher d'autres d'exercer leur droit d'acc�s mais plut�t de fournir un m�canisme par lequel les demandeurs peuvent signaler leur intention d'exercer leur droit d'acc�s. Les verrous partag�s ont �t� d�fini pr�cis�ment pour ce cas de figure. Un verrou partag� permet � plusieurs demandeurs de recevoir un verrou. D�s lors, tout demandeur ayant un droit d'acc�s appropri� peut obtenir le verrou.
Avec les verrous partag�s, il y a deux ensembles d'autorisations pouvant toucher une ressource. Le premier est celui des droits d'acc�s. Les demandeurs qui sont autoris�s peuvent avoir, par exemple, le droit en �criture dans la ressource. Parmi eux, ceux qui ont obtenu un verrou partag� DOIVENT aussi s'autoriser mutuellement : ils constituent alors un sous-ensemble de l'ensemble des droits d'acc�s.
En consid�rant tous les demandeurs possible d'Internet, la grande majorit� d'entre eux n'auront, dans la pluplart des cas, aucun droit d'acc�s � une ressource donn�e. Parmi le petit nombre qui aura un droit d'acc�s en �criture, quelques demandeurs voudront s'assurer que leurs �ditions seront d�gag�es de tout risque d'�crasement de donn�es et utiliseront les verrous d'�criture exclusifs. D'autres pourront d�cider qu'ils ont confiance que leurs coll�gues n'�craseront pas leur travail (l'ensemble potentiel des coll�gues �tant l'ensemble des demandeurs qui ont les droits en �criture) et utiliseront un verrou partag�, qui permet d'informer les coll�gues qu'un demandeur est peut �tre d�j� en train de travailler sur la ressource.
Les extensions WebDav de HTTP n'ont pas besoin de fournir tous les moyens de communication n�cessaires aux demandeurs pour coordonner leur activit�. Quand on utilise des verrous partag�s, les demandeurs ont le droit d'utiliser n'importe quel moyen de communication pour coordoner leurs travaux (par exemple, des notes �crites, des r�unions, des post-it coll�s sur les �crans, des conversations t�l�phoniques, des courriels, etc.). Le but d'un verrou partag� est d'offrir aux collaborateurs la possibilit� de conna�tre l'identit� de celui qui travaille d�j� sur la ressource.
Les verrous partag�s font partie de cette sp�cification parce que les exp�riences pass�es sur les environnements de r�daction collaborative sur le WEB ont montr� que les verrous exclusifs sont trop souvent rigides. Un verrou exclusif est utilis� pour imposer un processus r�dactionnel particulier : pose d'un verrou exclusif, lecture de la ressource, modification du contenu, �criture de la ressource, lib�ration du verrou. Mais les verrous ne sont pas toujours correctement lib�r�s, par exemple, quand un programme "se plante", ou quand le propri�taire d'un verrou abandonne son travail en cours de route sans d�verrouiller la ressource. Alors que l'utilisation de contr�le de temps limite (timeout) et l'intervention humaine d'un administrateur sont les moyens pour supprimer le verrou ind�sirable, il peut se trouver qu'aucun de ces deux m�canismes ne soit disponible au moment o� on en a justement besoin; le contr�le de d�passement de temps peut �tre long et l'administrateur indisponible.
Il n'est pas exig� que le serveur soit conforme � WebDav pour qu'il sache supporter le verrouillage, quelque en soit la forme. Si le serveur supporte les m�canismes de verrouillage, il peut choisir de supporter n'importe quelle combinaison des formes exclusives et partag�es des verrous et pour n'importe quel type d'acc�s.
La raison de cette souplesse est que les politiques de verrouillage sont int�gr�es au coeur m�me des syst�mes de gestion et de versionnement des ressources utilis�s par diff�rents r�f�rentiels de stockage. Ces r�f�rentiels ont besoin d'avoir le contr�le sur les types de verrous qui seront disponibles. Par exemple, certains r�f�rentiels ne supportent que les verrous d'�criture partag�s tandis que d'autres ne supportent que les verrous d'�criture exclusifs et d'autres encore n'en utilisent aucun. Comme chacun de ces syst�mes est suffisamment diff�rent pour pouvoir se satisfaire de l'absence de certaines fonctions de verrouillage, cette sp�cification laisse la question du verrouillage comme �tant la seule n�gotiation possible � l'int�rieur de WebDAV.
Un marqueur de verrou est un type de marqueur d'�tat, repr�sent�
comme une URI, qui identifie un verrou particulier. Un marqueur de verrou est
retourn�, apr�s toute op�ration de verrouillage r�ussie,
dans la propri�t� lockdiscovery
du corps de la r�ponse.
Il peut �galement �tre retrouv�e en lan�ant une recherche
de verrou sur la ressource.
Les URI s de marqueurs de verrous DOIVENT �tre uniques � jamais pour toutes les resources. Cette contrainte d'unicit� permet aux marqueurs de verrous d'�tre utilis�s pour toutes les ressources et les serveurs sans crainte de confusion.
Cette sp�cification fournit un mod�le d'URI de marqueur de verrou
appel� opaquelocktoken
conforme � la contrainte d'unicit�.
Toutefois, les ressources restent libres de retourner n'importe quel mod�le
d'URI tant que cellle-l� reste conforme � la contrainte d'unicit�.
Le fait de pouvoir accc�der aux marqueurs de verrous ne signifie pas pour autant que le demandeur dispose de droits d'acc�s privil�gi�s. Tout le monde peut trouver le marqueur de verrou de n'importe quelle autre personne en ex�cutant simplement une recherche de marqueur. Les verrous DOIVENT �tre appliqu�s en fonction des m�canismes d'authentification disponibles sur le serveur, mais qui ne doit pas reposer sur une politique de secret des valeurs des marqueurs.
opaquelocktoken
Le mod�le d'URI opaquelocktoken
est con�u pour �tre
unique, dans le temps, � travers toutes les ressources. Gr�ce �
cette unicit�, un client peut soumettre un marqueur de verrou opaque
dans une ent�te If
sur une ressource diff�rente de
celle qui l'a retourn� initialement.
Toutes les ressources DOIVENT reconna�tre le mod�le opaquelocktoken
et, au minimum, reconna�tre que le marqueur de verrou ne fait pas r�f�rence
� un verrou en suspens de la ressource.
Afin de garantir l'unicit� temporelle pour toutes les ressources, le
verrou opaquelocktoken
n�cessite l'utilisation d'un m�canisme
reposant sur le principe des identifiants universels uniques (Universal Unique
Identifier - UUID-), tel qu'il est d�crit dans [ISO-11578].
Les g�n�rateurs de verrous Opaquelocktoken
, toutefois,
ont le choix dans la mani�re dont ils cr�ent les marqueurs. Ils
peuvent soit g�n�rer un nouvel UUID pour chaque marqueur de verrou
qu'ils cr�ent soit cr�er un seul UUID puis lui ajouter des caract�res
d'extension. Si la deuxi�me m�thode est choisie alors le programme
de g�n�ration des extensions DOIT garantir que la m�me
extension ne sera jamais utilis�e deux fois sur le m�me UUID.
La r�gle de production de l'UUID est la repr�sentation sous forme de cha�ne de caract�res d'un UUID, tel que d�fini dans [ISO-11578]. Notez que l'espace blanc (LWS) n'est pas autoris� entre les �l�ments de cette r�gle de production.
OpaqueLockToken-URI = "opaquelocktoken:" UUID [Extension]
Extension = path
"path" est d�fini dans la section 3.2.1 de RFC 2068 [RFC2068]
Les UUIDs, tels que d�fini dans [ISO-11578], contiennent un champ "noeud" qui contient une des adresses IEEE 802 du serveur. Comme il est dit dans la section 17.8, il y a plusieurs risques relatifs � la s�curit� inh�rents � l'exposition des adresses IEEE 802 des machines. Cette section fournit un m�canisme alternatif qui permet de g�n�rer le champ "noeud" d'un UUID sans utiliser l'adresse IEEE 802. Les serveurs WebDav PEUVENT utiliser cet algorithme pour la cr�ation du champ noeud au moment de la g�n�ration des UUIDs. Le texte de cette section est issu d'un brouillon sur Internet de Paul Leach et Rich Salz, dont les noms sont rappel�s ici afin que leurs travaux soient reconnus comme il se doit.
La solution id�ale est d'obtenir un nombre al�atoire de 47 bits de qualit� cryptographique, et de l'utiliser comme formant les 47 bits basses de l'ID du noeud, avec le bit de poids fort du premier octet de l'ID du noeud �gal � 1. Ce bit est celui r�serv� au typage unicast/multicast, jamais utilis� dans les adresses IEEE 802 pas les cartes r�seaux ; par cons�quent, il ne pourra jamais y avoir de conflit entre les UUIDs g�n�r�s par les machines, qu'elles soient �quip�es ou non d'une carte r�seau.
Si un syst�me n'a pas de fonction de base pour g�n�rer des nombres al�toire de cryptage, alors il y a, la plupart du temps, un grand nombre de de possibilit�s pour trouver une s�quence al�atoire permettant de g�n�rer une valeur. Les types de donn�es sources list�es ci-apr�s d�pendent bien s�r du syst�me, mais tr�s souvent on trouve :
(Remarquez que c'est pr�cis�ment le type de ressources al�atoires mentionn�es ci-dessus qui sont utilis�es pour alimenter les g�n�rateurs de nombres al�toires de qualit� cryptographique sur des syst�mes dont le mat�riel n'est pas �quip� de fonctions sp�cifiques pour les g�n�rer.)
De plus, des donn�es tels que le nom de l'ordinateur et le nom du syst�me d'exploiation, bien que ne pouvant �tre qualifi�es d'al�toire � proprement parler, pourront aider � faire la difff�rence avec les nombres al�atoires produits par d'autres syst�mes.
L'algorithme exact de g�n�ration d'un identifiant de noeud utilisant ces donn�es est sp�cifique au syst�me, parce que les donn�es disponibles et les fonctions pour les obtenir sont � la fois et souvent tr�s sp�cifiques au syst�me. Toutefois, en acceptant que l'on pourrait concat�ner toutes les valeurs des sources al�atoires dans un buffer, et qu'une fonction de hachage cryptographique telle que MD5 soit disponible, alors tout mot de 6 octets du buffer de hachage de MD5, ayant le bit multicast initialis� (le bit de poids fort du premier octet) pourra �tre un identifiant de noeud al�toire acceptable.
D'autres fonctions de hachage, telle que par exemple SHA-1, peuvent aussi �tre utilis�es. La seule obligation est que le r�sultat soit un nombre al�atoire adapt�, c'est � dire qu'� un ensemble d'entr�es uniform�ment distribu� produise un ensemble de sorties elles-m�mes uniform�ment distribu�es, et que la modification d'un seul bit en entr�e provoque le changement de plus de la moiti� des bits de sortie.
Puisque le support des verrous au niveau du serveur est optionnel, un client
essayant de bloquer une ressource sur un serveur peut soit essayer le verrouillage
et esp�rer que cela marche, soit ex�cuter une sorte d'exploration
pour savoir quelles sont les capacit�s du serveur � supporter
le verrouillage. Cela est connu sous le nom d'exploration
des possibilit�s de verrouillage. Cela est diff�rent de la recherche
des types de contr�les d'acc�s support�s puisque il peut
y avoir des types de contr�les d'acc�s sans verrou correspondant.
Un client peut d�terminer quels sont les types de verrous support�s
par le serveur en r�cup�rant cette information par la propri�t�
supportedlock
.
Toute ressource conforme � DAV qui supporte la m�thode LOCK DOIT
supporter la propri�t� supportedlock
.
Si un demandeur verrouille la ressource qu'un autre demandeur esp�re
acc�der, il est pratique pour le deuxi�me d'�tre capable
de trouver qui est le premier. Pour cela, il existe la propri�t�
lockdiscovery
. Elle liste tous les verrous en suspens, d�crit
leur type, et, quand ils sont disponibles, fourni les marqueur de verrous qui
s'y appliquent.
Toute ressource conforme � DAV qui supporte la m�thode LOCK DOIT
supporter la propri�t� lockdiscovery
.
Bien que les m�canismes de verrouillage sp�cifi�s dans ce document fournissent une certaine garantie contre le probl�me de la derni�re mise � jour perdue pour cause d'�crasement, ils ne peuvent cependant pas garantir � 100% que les mises � jour ne seront jamais perdues. Imaginez le sc�nario suivant :
Deux clients A
et B
souhaitent �diter la m�me
ressource "index.html
". Le client A
utilise
le protocole HTTP plut�t que WebDav , et donc, ne sait pas g�rer
les verrous.
Le client A
ne verrouille pas le document, ex�cute un GET
puis commence l'�dition.
Le client B
fait un LOCK
, ex�cute un GET
et commence l'�dition.
Le client B
termine l'�dition, ex�cute un PUT
, puis un UNLOCK
. Le client A
ex�cute un PUT
, �crase le fichier et fait perdre � B
ses mises
� jour.
Il y a plusieurs raisons pour lesquelles le protocole WebDav lui-m�me
ne peut pas anticiper cette situation. La premi�re est qu'il ne peut
pas obliger tous les clients � utiliser le verrouillage parce qu'il doit
rester compatible avec les clients HTTP qui, eux, ne comprennent pas le verrouillage.
Deuxi�mement, il ne peut pas exiger des serveurs qu'ils supportent le
verrouillage � cause de la vari�t� des impl�mentations
des r�f�rentiels, les uns s'appuyant plut�t sur des m�canismes
de r�servation et de fusion que sur des verrous. Finallement, parce que
le protocole est de type "sans gestion d'�tat" (stateless),
il ne peut obliger le client � ex�cuter une s�quence d'op�ration
pr�-d�finie telle que LOCK / GET / PUT / UNLOCK
.
Les serveurs WebDav qui supportent le verrouillage r�duisent le risque d'avoir des clients �crasant mutuellement et par accident leurs modifications respectives en exigeant d'eux qu'ils bloquent les ressources avant de les modifier. De tels serveurs prot�geront effectivement les clients HTTP 1.0 et HTTP 1.1 des modifications ind�sirables des ressources.
Les clients WebDav peuvent �tre de bons citoyens utilisant la s�quence
d'op�rations lock / retrieve / write /unlock
(au moins par
d�faut) chaque fois qu'ils interagiront avec un serveur WebDav qui supportera
le verouillage.
Les clients HTTP 1.1 peuvent �tre de bons citoyens, c'est � dire
en �vitant d'�craser les changements faits par d'autres clients,
en utilisant des balises d'entit�s dans les ent�tes If-Match
dans toute ent�te de requ�te de modification des ressources.
Les gestionnaires d'information peuvent essayer de contr�ler les �crasements en impl�mentant des proc�dures du c�t� client exigeant le verrouillage avant de modifier des ressources WebDav .
Cette section d�crit la s�mantique propre au verrou d'�criture. Le verrou d'�criture est une instance sp�cifique du type verrou ; il est le seul type de verrou d�crit dans cette s�pcification.
Un verrou d'�criture DOIT contr�ler qu'un demandeur n'ayant
pas le verrou ne peut ex�cuter avec succ�s aucune des m�thodes
PUT, POST, PROPPATCH, LOCK, UNLOCK, MOVE, DELETE
, ou MKCOL
sur la ressource verrouill�e. Toutes les autres m�thodes courantes,
en particulier GET
, fonctionnent ind�pendamment de ce verrou.
Remarquez, toutefois, que lorsque des nouvelles m�thodes seront cr��es il sera n�cessaire de sp�cifier comment elles devront se comporter vis � vis du verrou d'�criture.
Une demande r�ussie pour obtenir un verrou d'�criture DOIT se traduire par la g�n�ration d'un marqueur de verrou unique associ� au demandeur. Aussi, si cinq demandeurs ont un verrou d'�criture partag� sur la m�me ressource il y aura cinq marqueurs de verrous, un par demandeur.
Alors que ceux qui n'ont pas pos� de verrou d'�criture ne peuvent pas modifier les propri�t�s d'une ressource, il est cependant toujours possible que les valeurs des propri�t�s vivantes soient chang�es, m�me quand elles sont verrouill�es, � cause des exigences de leurs mod�les.
Seules les propri�t�s mortes et vivantes dont les sp�cifications les soumettent au contr�le des verrous sont garanties de ne pas changer quand un verrou d'�criture est pos�.
Il est possible de positionner un verrou d'�criture sur une ressource nulle afin d'en bloquer le nom.
Une ressource nulle bloqu�e en �criture, connue sous le nom de
ressource nulle verrouill�e, DOIT retourner une erreur type 404
(Pas trouv�e) ou 405
(m�thode interdite) �
toute m�thode HTTP/1.1 ou DAV
� l'exception des m�thodes
PUT, MKCOL, OPTIONS, PROPFIND, LOCK
, et UNLOCK
.
Une ressource nulle verrouill�e DOIT appara�tre comme un
membre de la collection parente dont elle fait partie. De plus, la ressource
nulle verrouill�e DOIT �tre �quip�e de toutes
les propri�t�s obligatoires de DAV
. La plupart de
ces propri�t�s, comme par exemple toutes les propri�t�s
de type get*
, n'auront aucune valeur puisqu'une ressource nulle
verrouill�e ne supporte pas la m�thode GET
. Les
ressources nulles verrouill�es DOIVENT �tre �quip�es
des propri�t�s lockdiscovery
et supportedlock
.
Jusqu'au moment o� l'une des m�thodes PUT
ou MKCOL
est ex�cut�e avec succ�s sur la ressource nulle verrouill�e,
celle-l� DOIT rester dans son �tat de ressource nulle verrouill�e.
Toutefois, d�s qu'une des m�thodes PUT
ou MKCOL
est ex�cut�e avec succ�s, alors la ressource nulle verrouill�e
cesse d'�tre dans l'�tat nul-verrouill�.
Si la ressource est d�verrouill�e, quelque en soit la raison,
sans qu'un PUT, MKCOL
, ou toute m�thode similaire n'ait
�t� ex�cut�e avec succ�s, alors la ressource
DOIT retourner � son �tat nul.
Un verrou d'�riture sur une collection, qu'il ait �t�
cr�� par une requ�te de verrouillage de type "Depth:
0
" ou "Depth: infinity
", emp�che le rajout ou le
retrait d'URI membres de la collection par d'autres demandeurs que les propritaires
des verrous. En cons�quence, quand un demandeur r�alise une requ�te
PUT
ou POST
pour cr�er une nouvelle ressource
sous une URI qui se trouve �tre un membre interne d'une collection verrouill�e
en �criture et pour maintenir la coh�rence de l'espace de noms
HTTP , ou qu'il souhaite r�aliser un DELETE
pour retirer
une ressource dont l'URI est une URI d'un membre interne d'une collection prot�g�e
en �criture, alors cette requ�te DOIT �chouer si
le demandeur n'est pas propri�taire d'un verrou d'�criture au
niveau de la collection.
Toutefois, si une demande de verrou d'�criture est faite sur une collection
contenant des URI membres qui s'appliquent � des ressources en cours
de verrouillage et d'une mani�re qui soit conflictuelle avec le verrou
d'�criture, alors la demande DOIT �chouer et retourner
le code d'�tat 423
(Verrouill�).
Si le propri�taire d'un verrou rajoute l'URI d'une ressource en tant
que membre interne d'une collection verrouill�e alors cette nouvelle
ressource DOIT �tre automatiquement rajout�e au verrou.
Cela est le seul m�canisme qui permet de rajouter une ressource �
un verrou d'�criture. Aussi, par exemple, si la collection /a/b/
est verrouill�e en �criture est que la ressource /c
est d�plac�e pour devenir /a/b/c
alors la ressource
/a/b/c
sera rajout�e au verrou d'�criture.
If
Si il n'est pas obligatoire d'avoir un agent utilisateur pour conna�tre
l'existence d'un verrou quand on demande l'ex�cution d'une op�ration
sur une ressource verrouill�e, le sc�nario suivant peut se produire.
Un programme A
, ex�cut� par un utilisateur A
,
pose un verrou d'�criture sur une ressource. Un programme B
,
�galement ex�cut� par l'utilisateur A
, n'a
pas la connaissance du verrou pos� par le programme A
, ex�cute
un PUT
sur la ressource verrouill�e. Dans ce sc�nario,
le PUT
est r�alis� avec succ�s parce que les
verrous sont associ�s � un m�me demandeur, pas un programme.
Et donc le programme B
, parce qu'il est activ� par le m�me
certificat de demandeur que A
, est autoris� � faire
le PUT
. Toutefois, si le programme B
avait eu connaissance
du verrou, il n'aurait pas �cras� la ressource, pr�f�rant
� la place pr�senter une bo�te de dialogue annon�ant
le conflit � l'utilisateur. A cause de ce sc�nario, on a besoin
d'un m�canisme pour emp�cher que des programmes diff�rents
ignorent accidentellement les verrous pos�s par d'autres programmes ayant
les m�mes privil�ges.
Afin d'emp�cher ces collisions, un marqueur de verrou DOIT �tre
pos� par un demandeur autoris� dans l'ent�te If
de toute ressource verrouill�e pouvant r�agir � des m�thodes
ou sinon la m�thode DOIT �chouer. Par exemple, si une ressource
doit �tre d�plac�e et que la source et la destination sont
toutes les deux verrouill�es alors deux marqueurs de verrous doivent
�tre soumis, l'un pour la source et l'autre pour la destination.
>>Requ�te
COPY /~fielding/index.html HTTP/1.1
Host: www.ics.uci.edu
Destination: http://www.ics.uci.edu/users/f/fielding/index.html
If: <http://www.ics.uci.edu/users/f/fielding/index.html>
(<opaquelocktoken:f81d4fae-7dec-11d0-a765-00a0c91e6bf6>)
>>R�ponse
HTTP/1.1 204 No Content
Dans cet exemple, m�me si la source et la destination sont toutes les
deux verrouill�es, un seul marqueur de verrou doit �tre soumis,
celui pour le verrou sur la destination. Cela parce que la source n'est pas
modifi�e par l'ordre COPY
, et par cons�quent, n'est
pas concern�e par le verrou d'�criture. Dans cet exemple, l'authentification
de l'agent utilisateur est d�j� intervenue via un m�canisme
en dehors du p�rim�tre concern� par le protocole HTTP ,
c'est � dire dans la couche de transport sous-jacente.
COPY/MOVE
L'ex�cution de la m�thode COPY
NE DOIT
PAS dupliquer les verrous d'�criture actifs sur la source. Toutefois,
comme il a �t� not� pr�c�demment, si l'ordre
COPY
copie la ressource dans une collection qui, elle, est verrouill�e
avec l'option "Depth: infinity
", alors la ressource sera ajout�e
au verrou.
Une requ�te MOVE
appliqu�e avec succ�s sur
une ressource ayant un verrou d'�criture NE DOIT PAS d�placer
le verrou d'�criture avec la ressource. Toutefois, la ressource est sujette
� �tre rajout�e � un verrou d�j� existant
au niveau de la destination, comme cela est sp�cifi� dans la section
7. Par exemple, si le MOVE
fait que la ressource devient un enfant
d'une collection qui est verrouill�e avec l'option "Depth: infinity",
alors la ressource sera ajout�e au verrou d�j� existant
au niveau de la collection. De plus, si une ressource verrouill�e avec
l'option "Depth: infinity
" est d�plac�e vers une
destination qui se trouve a l'int�rieur de la port�e de ce m�me
verrou (par exemple, � l'int�rieur de l'arbre d'espace de noms
couvert par le verrou), la ressource d�plac�e sera � nouveau
rajout�e au verrou. Dans ces deux exemples, et comme il est sp�cifi�
dans la section 7.6, une ent�te If
contenant un marqueur
de verrou doit �tre soumise tant pour la source que pour la destination.
Un client N'A PAS A soumettre deux fois de suite une m�me requ�te
d'�criture. Remarquez qu'un client sait toujours qu'il est en train de
soumettre un m�me verrou pour la deuxi�me fois puisqu'il doit inclure
le marqueur de verrou dans l'ent�te If
de sa requ�te
afin de pouvoir soumettre sa requ�te sur une ressource qu'il sait �tre
d�j� v�rouill�e.
Toutefois, un client peut soumettre une m�thode LOCK
avec
une ent�te If
mais sans corps. Cette forme de LOCK
DOIT �tre uniquement utilis�e pour "rafraichir"
un verrou. Cela signifie, au minimum, que tout syst�me de temporisation
associ� au verrou DOIT �tre r�initialis�.
Un serveur peut tr�s bien retourner une ent�te de d�passement de temps (timeout) avec un rafra�chissement de verrou diff�rent de l'ent�te de d�passement de temps retourn�e quand le verrou fut initialement cr��. De plus, des clients peuvent soumettre des ent�tes de d�passement de temps de valeur arbitraire dans leurs requ�tes de rafra�chissement de verrou.Les serveurs, comme toujours, peuvent ignorer les ent�tes de d�passement de temps soumises par leurs clients.
Si une erreur est re�ue en r�ponse � une requ�tre
de rafra�chissement de LOCK
le client DOIT garantir
que le verrou n'a pas d�j� �t� rafraichi.
Les nouvelles m�thodes HTTP d�crites ci-apr�s utilisent
XML comme format de requ�te et de r�ponse. Tous les clients et
les ressources conformes � DAV DOIVENT utiliser des parsers XML
conformes � la norme [REC-XML]. Tout le XML utilis� que ce soit
dans les requ�tes ou dans les r�ponses DOIT �tre,
au minimum, bien form�. Si un serveur re�oit dans une requ�te
des donn�es XML pas bien form�es il DOIT rejeter la totalit�
de la requ�te avec un code 400
(mauvaise requ�te).
Si un client re�oit dans une r�ponse des donn�es XML mal
form�es, il NE DOIT PAS supposer quoi que ce soit concernant
le r�sultat � retourner par la m�thode et DOIT se
contenter de consid�rer que le serveur ne fonctionne pas bien.
PROPFIND
La m�thode PROPFIND
permet de r�cup�rer
tant les propri�t�s de la ressource identifi�e par l'URI
requ�te si la ressource n'a aucun membre interne, que celles de la ressource
identifi�e par l'URI requ�te et ses ressources membres internes
si la ressource est une collection qui a des URIs de membres internes.
Toutes les ressources conformes � DAV DOIVENT supporter la m�thode
PROPFIND
et l'�l�ment XML propfind
(section
12.14) ainsi que tous les �l�ments XML d�finis pour �tre
utilis�s avec cet �l�ment.
Un client peut soumettre une ent�te Depth
qualifi�e
par une des valeurs "0
", "1
"
ou "infinity
" quand la m�thode PROPFIND
est appliqu�e � une ressource de type collection contenant des
URI de membres internes. Les serveurs conformes � DAV DOIVENT
supporter les comportements correspondant aux valeurs "0
", "1
" et "infinity
". Par d�faut, une m�thode PROPFIND
n'ayant pas ent�te Depth
DOIT agir comme si la valeur
"Depth: infinity
" avait �t� utilis�e.
Un client peut utiliser l'�l�ment XML propfind
dans
le corps de la m�thode request
pour pr�ciser l'information
recherch�e. Il est ainsi possible de ne demander � obtenir soit
que les valeurs de certaines propri�t�s particuli�res,
soit toutes les valeurs d'une propri�t�, ou encore une liste de
noms de propri�t�s de la ressource. Un client peut choisir de
ne soumettre qu'une requ�te sans corps. Une requ�te de type PROPFIND
avec un corps vide DOIT �tre trait�e comme une demande de
r�cup�ration de tous les noms et de toutes les valeurs de toutes
les propri�t�s de la ressource.
Tous les serveurs DOIVENT �tre capable de retourner une r�ponse
dont le contenu soit de type text/xml
ou application/xml
et dans laquelle l'�l�ment XML multistatus
sera utilis�
pour y d�crire les r�sultats obtenus dnas la recherche des diff�rentes
propri�t�s.
Si un probl�me survient dans la lecture d'une propri�t�,
alors une erreur sp�cifique DOIT �tre incluse dans la r�ponse.
Une requ�te qui porte sur l'obtention de la valeur d'une propri�t�
qui n'existe pas est un cas d'erreur qui DOIT �tre relev�.
Si la r�ponse est fournie sous la forme de l'�l�ment XML
multistatus
, il faut g�n�rer un �l�ment
XML response
contenant le code d'�tat 404
(Pas
Trouv�).
En cons�quence, l'�l�ment XML multistatus
d'une ressource de type collection ayant des URI membres DOIT avoir,
en fonction de la profondeur depth
sp�cifi�e, un
�l�ment XML response
pour chacune des URI membres
de la collection. Chaque �l�ment XML response
DOIT
contenir l'�l�ment XML href
qui donne l'URI de la
resource � laquelle se rapporte les propri�t�s de l'�l�ment
XML prop
. Les r�sultats de la m�thode PROPFIND
appliqu�e � une ressource de type collection ayant des URI de
membres internes sont retourn�s sous la forme d'une liste plate dont
l'ordre des entr�es n'est pas significative.
Dans les cas allprop
et propname
, si un demandeur
n'est pas autoris� � savoir si une propri�t� particuli�re
existe alors elle DOIT �tre exclue de la r�ponse en la rendant
invisible.
Les r�sultats de cette m�thode NE DOIVENT PAS �tre mis dans le cache.
>>Requ�te
PROPFIND /file HTTP/1.1
Host: www.foo.bar
Content-type: text/xml; charset="utf-8"
Content-Length: xxxx
<?xml version="1.0" encoding="utf-8" ?>
�� <D:propfind xmlns:D="DAV:">
���� <D:prop xmlns:R="http://www.foo.bar/boxschema/">
��������� <R:bigbox/>
��������� <R:author/>
��������� <R:DingALing/>
��������� <R:Random/>
���� </D:prop>
�� </D:propfind>
>>R�ponse
HTTP/1.1 207 Multi-Status
Content-Type: text/xml; charset="utf-8"
Content-Length: xxxx
<?xml version="1.0" encoding="utf-8" ?>
�� <D:multistatus xmlns:D="DAV:">
���� <D:response>
��������� <D:href>http://www.foo.bar/file>
��������� <D:propstat>
��������������
<D:prop xmlns:R="http://www.foo.bar/boxschema/">
�������������������
<R:bigbox>
������������������������
<R:BoxType>Box type A</R:BoxType>
�������������������
</R:bigbox>
�������������������
<R:author>
������������������������
<R:Name>J.J. Johnson</R:Name>
�������������������
</R:author>
��������������
</D:prop>
��������������
<D:status>HTTP/1.1 200 OK</D:status>
��������� </D:propstat>
��������� <D:propstat>
��������������
<D:prop><R:DingALing/><R:Random/></D:prop>
��������������
<D:status>HTTP/1.1 403 Forbidden</D:status>
��������������
<D:responsedescription> The user does not have access to the DingALing property.
��������������
</D:responsedescription>
��������� </D:propstat>
���� </D:response>
���� <D:responsedescription> There has been an access
violation error.</D:responsedescription> �� </D:multistatus>
Dans cette exemple, la m�thode PROPFIND
est appliqu�e
� une ressource qui n'est pas une collection, � savoir le fichier
http://www.foo.bar/file. L'�l�ment
XML propfind
pr�cise le nom de quatre propri�t�s
dont on cherche � obtenir les valeurs. Dans ce cas, seulement deux des
valeurs sont retourn�es, puisque le demandeur qui �met cette requ�te
n'a pas les droits d'acc�s suffisants pour voir les troisi�me
et quatri�me propri�t�s.
allprop
pour obtenir toutes les propri�t�s>>Requ�te
PROPFIND /container/ HTTP/1.1
Host: www.foo.bar
Depth: 1
Content-Type: text/xml; charset="utf-8"
Content-Length: xxxx
<?xml version="1.0" encoding="utf-8" ?>
�� <D:propfind xmlns:D="DAV:">
���� <D:allprop/>
�� </D:propfind>
>>R�ponse
HTTP/1.1 207 Multi-Status
Content-Type: text/xml; charset="utf-8"
Content-Length: xxxx
<?xml version="1.0" encoding="utf-8" ?>
�� <D:multistatus xmlns:D="DAV:">
���� <D:response>
��������� <D:href>http://www.foo.bar/container/>
��������� <D:propstat>
��������������
<D:prop xmlns:R="http://www.foo.bar/boxschema/">
�������������������
<R:bigbox>
������������������������
<R:BoxType>Box type A</R:BoxType>
�������������������
</R:bigbox>
�������������������
<R:author>
������������������������
<R:Name>Hadrian</R:Name>
�������������������
</R:author>
�������������������
<D:creationdate>
������������������������
1997-12-01T17:42:21-08:00
�������������������
</D:creationdate>
�������������������
<D:displayname>
������������������������
exemple collection
�������������������</D:displayname>
�������������������
<D:resourcetype><D:collection/></D:resourcetype>
�������������������
<D:supportedlock>
������������������������
<D:lockentry>
�����������������������������
<D:lockscope><D:exclusive/></D:lockscope>
�����������������������������
<D:locktype><D:write/></D:locktype>
������������������������
</D:lockentry>
������������������������
<D:lockentry>
�����������������������������
<D:lockscope><D:shared/></D:lockscope>
�����������������������������
<D:locktype><D:write/></D:locktype>
������������������������
</D:lockentry>
�������������������
</D:supportedlock>
��������������
</D:prop>
��������������
<D:status>HTTP/1.1 200 OK</D:status>
��������� </D:propstat>
���� </D:response>
���� <D:response>
��������� <D:href>http://www.foo.bar/container/front.html>
��������� <D:propstat>
��������������
<D:prop xmlns:R="http://www.foo.bar/boxschema/">
�������������������
<R:bigbox>
������������������������
<R:BoxType>Box type B</R:BoxType>
�������������������
</R:bigbox>
�������������������
<D:creationdate>
������������������������
1997-12-01T18:27:21-08:00
�������������������
</D:creationdate>
�������������������
<D:displayname>
������������������������
exemple HTML resource
�������������������
</D:displayname>
�������������������
<D:getcontentlength>
������������������������
4525
�������������������
</D:getcontentlength>
�������������������
<D:getcontenttype>
������������������������
text/html
�������������������
</D:getcontenttype>
�������������������
<D:getetag>
������������������������
zzyzx
�������������������
</D:getetag>
�������������������
<D:getlastmodified>
������������������������
Monday, 12-Jan-98 09:25:56 GMT
�������������������
</D:getlastmodified>
�������������������
<D:resourcetype/>
�������������������
<D:supportedlock>
������������������������
<D:lockentry>
�����������������������������
<D:lockscope><D:exclusive/></D:lockscope>
�����������������������������
<D:locktype><D:write/></D:locktype>
������������������������
</D:lockentry>
������������������������
<D:lockentry>
�����������������������������
<D:lockscope><D:shared/></D:lockscope>
�����������������������������
<D:locktype><D:write/></D:locktype>
������������������������
</D:lockentry>
�������������������
</D:supportedlock>
��������������
</D:prop>
��������������
<D:status>HTTP/1.1 200 OK</D:status>
��������� </D:propstat>
���� </D:response>
�� </D:multistatus>
Dans cette exemple, la m�thode PROPFIND
a �t�
invoqu�e sur la ressource http://www.foo.bar/container/
avec une ent�te Depth
de 1
, signifiant que
la requ�te s'applique � la ressource et ses enfants de premier
niveau, et l'�l�ment XML propfind
contient l'�l�ment
XML allprop
, ce qui signifie que la requ�te doit retourner
le nom et la valeur de toutes les propri�t�s de chaque ressource.
La ressource http://www.foo.bar/container/ poss�de les six propri�t�s suivantes :
DAV:creationdate
,DAV:displayname,
DAV:resourcetype
,DAV:supportedlock
. Les quatre derni�res sont sp�cifiques � WebDAV, et sont
d�finies dans la section 13. Comme la m�thode GET
n'est pas support�e par cette ressource, les propri�t�s
get
* (comme par exemple getcontentlength
) ne sont
pas utilisables sur cette ressource. Les propri�t�s sp�cifiques
� DAV attestent que "container
" fut cr��
le 1er d�cembre 1997, � 5:42:21 de l'apr�s midi, dans un
fuseau horaire � 8 heures ouest de GMT (creationdate
), a
le nom "exemple collection
" (displayname
), un type
de ressource collection (resourcetype
), et supports les verrous
d'�criture exclusifs et partag�s (supportedlock
).
La ressource http://www.foo.bar/container/front.html poss�de les neuf propri�t�s suivantes :
bigbox
"),DAV:creationdate,
DAV:displayname,
DAV:getcontentlength,
DAV:getcontenttype,
DAV:getetag,
DAV:getlastmodified,
DAV:resourcetype
,DAV:supportedlock
. Les propri�t�s sp�cifiques � DAV attestent que
"front.html
" fut cr�� le 1er d�cembre 1997,
� 6:27:21 de l'apr�s-midi, dans un fuseau horaire de 8 heures
� l'ouest de GMT (creationdate
), a le nom de "exemple
HTML resource
" (displayname
), a un contenu de 4525 octets
de long (getcontentlength
), a le type MIME "text/html
" (getcontenttype
), a une balise d'entit� "zzyzx
" (getetag
), fut modifi� en dernier le lundi 12 janvier
1998 � 09:25:56 GMT (getlastmodified
), a un type de ressource
vide, signifiant qu'il ne s'agit pas d'une collection (resourcetype
), et accepte les deux types de verrous d'�criture : exclusif et partag�
(supportedlock
).
propname
pour obtenir les noms de toutes les propri�t�s>>Requ�te
PROPFIND /container/ HTTP/1.1
Host: www.foo.bar
Content-Type: text/xml; charset="utf-8"
Content-Length: xxxx
<?xml version="1.0" encoding="utf-8" ?>
�� <propfind xmlns="DAV:">
���� <propname/>
�� </propfind>
>>R�ponse
HTTP/1.1 207 Multi-Status
Content-Type: text/xml; charset="utf-8"
Content-Length: xxxx
�� <?xml version="1.0" encoding="utf-8" ?>
�� <multistatus xmlns="DAV:">
���� <response>
��������� <href>http://www.foo.bar/container/>
��������� <propstat>
��������������
<prop xmlns:R="http://www.foo.bar/boxschema/">
�������������������
<R:bigbox/>
�������������������
<R:author/>
�������������������
<creationdate/>
�������������������
<displayname/>
�������������������
<resourcetype/>
�������������������
<supportedlock/>
��������������
</prop>
��������������
<status>HTTP/1.1 200 OK</status>
��������� </propstat>
���� </response>
���� <response>
��������� <href>http://www.foo.bar/container/front.html>
��������� <propstat>
��������������
<prop xmlns:R="http://www.foo.bar/boxschema/">
�������������������
<R:bigbox/>
�������������������
<creationdate/>
�������������������
<displayname/>
�������������������
<getcontentlength/>
�������������������
<getcontenttype/>
�������������������
<getetag/>
�������������������
<getlastmodified/>
�������������������
<resourcetype/>
�������������������
<supportedlock/>
��������������
</prop>
��������������
<status>HTTP/1.1 200 OK</status>
��������� </propstat>
���� </response>
�� </multistatus>
Dans cette exemple, PROPFIND
est appliqu�e � la
ressource collection http://www.foo.bar/container/,
et l'�l�ment XML propfind
contient l'�l�ment
XML propname
, signifiant que les noms de toutes les propri�t�s
doivent �tre retourn�s. Puisqu'il n'y a aucune pr�cision
de Depth
dans l'ent�te, la valeur par d�faut "infinity
" est appliqu�e et tous les noms des propri�t�s de la collection
mais �galement de tous ses descendants doivent �tre retourn�s.
Ainsi, on trouve que dans l'exemple pr�c�dent, la ressource http://www.foo.bar/container/ poss�de six propri�t�s :
DAV:creationdate,
DAV:displayname,
DAV:resourcetype
,DAV:supportedlock
. La ressource http://www.foo.bar/container/index.html, membre de la collection "enveloppe", poss�de neuf propri�t�s,
DAV:creationdate,
DAV:displayname,
DAV:getcontentlength,
DAV:getcontenttype,
DAV:getetag,
DAV:getlastmodified,
DAV:resourcetype
,DAV:supportedlock
. Cette exemple montre �galement l'utilisation de la port�e des
espaces de noms de XML, et de l'espace de noms par d�faut. Puisque l'attribut
"xmlns
" n'a pas de lettre de raccourci (pr�fixe) explicite,
l'espace de nom par d�faut s'applique � tous les �l�ments
englob�s. Par cons�quent, tous les �l�ments qui
ne font pas explicitement �tat de l'espace de noms auquel ils appartiennent
sont membres du sch�ma de donn�es de l'espace de noms "DAV:
".
La m�thode PROPPATCH
traite des instructions sp�cifi�es
dans le corps de la requ�te pour assigner et/ou supprimer des propri�t�s
d�finies sur la ressource identifi�e par l'URI requ�te.
Toutes les ressources conformes � DAV DOIVENT supporter la m�thode
PROPPATCH
et DOIVENT traiter des instructions qui sont sp�cifi�es
par les �l�ments XML propertyupdate, set
, et remove
du sch�ma de donn�es de DAV. L'ex�cution des consignes
dans cette m�thode est, bien s�r, soumise aux restrictions des
contr�les d'acc�s. Les ressources conformes � DAV DOIVENT
supporter l'initialisation de n'importe quelle propri�t� potentiellement
morte.
La corps du message de requ�te d'une m�thode PROPPATCH
DOIT contenir l'�l�ment XML propertyupdate
. Le traitement des instructions DOIT se faire dans l'ordre des instructions
re�ues (c'est � dire de haut en bas). Les instructions DOIVENT
�tre soit toutes ex�cut�es soit ne pas �tre ex�cut�es
du tout. Ainsi, si une erreur survient pendant le traitement alors toutes les
instructions d�j� ex�cut�es DOIVENT �tre
annul�es et un code d'erreur appropri� doit �tre retourn�.
Le traitement d�taill� des instructions peut �tre trouv�
dans la d�finition des instructions set
et remove
dans la section 12.13.
207
Les exemples suivant sont des codes de r�ponses qu'on s'attend �
recevoir dans les r�ponses aux m�thodes de type 207
(�tats multiples). Remarquez toutefois, que tant que cela n'est pas explicitement
prohib�, toute code de retour des s�ries 2/3/4/5xx peuvent �tre
utilis�s dans une r�ponse de type 207
(�tats
multiples).
200
(OK) - La commande a r�ussi.Comme il peut y avoir une
s�rie de commandes set
et remove
dans un corps
de requ�te, un code de retour 201
(Cr��) semble
inapropri�.
403
(Interdit) - Le client, pour une raison que le serveur choisit
de na pas d�voiler, ne peut pas modifier l'une des propri�t�s.
409
(Conflit) - Le client a transmis une valeur dont la s�mantique
est inappropri�e pour la propri�t� vis�e. Cela comprend
par exemple les tentatives d'initialisation des propri�t�s qui
sont en lecture seule.
423
(Verrouill�) - La ressource sp�cifi�e
est verrouill�e et le client, soit n'est pas le propri�taire du
verrou, soit le type de verrou requiert qu'un marqueur de verrou soit soumis
et que cela n'a pas �t� fait par le client.
507
(M�moire insuffisante) - Le serveur n'a pas assez de
m�moire pour enregistrer la propri�t�.
PROPPATCH
>>Requ�te
PROPPATCH /bar.html HTTP/1.1
Host: www.foo.com
Content-Type: text/xml; charset="utf-8"
Content-Length: xxxx
�� <?xml version="1.0" encoding="utf-8" ?>
�� <D:propertyupdate xmlns:D="DAV:" �� xmlns:Z="http://www.w3.com/standards/z39.50/">
���� <D:set>
��������� <D:prop>
��������������
<Z:authors>
�������������������
<Z:Author>Jim Whitehead</Z:Author>
�������������������
<Z:Author>Roy Fielding</Z:Author>
��������������
</Z:authors>
��������� </D:prop>
���� </D:set>
���� <D:remove>
��������� <D:prop><Z:Copyright-Owner/></D:prop>
���� </D:remove>
�� </D:propertyupdate>
>>R�ponse
HTTP/1.1 207 Multi-Status
Content-Type: text/xml; charset="utf-8"
Content-Length: xxxx
�� <?xml version="1.0" encoding="utf-8" ?>
�� <D:multistatus xmlns:D="DAV:" �� xmlns:Z="http://www.w3.com/standards/z39.50">
���� <D:response>
��������� <D:href>http://www.foo.com/bar.html>
��������� <D:propstat>
��������������
<D:prop><Z:Authors/></D:prop>
��������������
<D:status>HTTP/1.1 424 Failed Dependency</D:status>
��������� </D:propstat>
��������� <D:propstat>
��������������
<D:prop><Z:Copyright-Owner/></D:prop>
��������������
<D:status>HTTP/1.1 409 Conflict</D:status>
��������� </D:propstat>
��������� <D:responsedescription>
Copyright Owner can not be deleted or �� altered.</D:responsedescription>
���� </D:response>
�� </D:multistatus>
Dans cet exemple, le client demande au serveur d'initialiser la valeur de la
propri�t� http://www.w3.com/standards/z39.50/Authors,
et de retirer la propri�t� http://www.w3.com/standards/z39.50/Copyright-Owner.
Mais comme la propri�t� Copyright-Owner
s'av�re
�tre impossible � retirer, aucune modification de propri�t�
n'est prise en compte par le serveur. Le code de retour 424
(Echec
de d�pendance) pour la propri�t� Authors
permet
de savoir que cette action aurait �t� r�ussie si elle n'en
n'avait pas �t� emp�ch�e par le conflit sur la propri�t�
Copyright-Owner
.
MKCOL
La m�thode MKCOL
est utilis�e pour cr�er
une nouvelle collection. Toutes les ressources conformes � DAV DOIVENT
supporter la m�thode MKCOL
.
MKCOL
cr�e une nouvelle ressource de type collection �
l'emplacement sp�cifi� par l'URI requ�te. Si la ressource
identifi�e par l'URI requ�te n'est pas nulle, alors le MKCOL
DOIT �chouer. Pendant le traitement de MKCOL
, un
serveur DOIT faire en sorte que l'URI requ�te devienne un membre
de sa collection p�re, la seule exception �tant le cas o�
l'URI requ�te est elle-m�me "/"
. Dans tous les autres
cas, si la collection parente n'existe pas, alors la m�thode MKCOL
DOIT �chouer. Quand MKCOL
cr�e une nouvelle
ressource de type collection, tous les anc�tres DOIVENT pr�alabalement
exister, sinon, la m�thode DOIT �chouer et retourner le
code d'�tat 409
(Conflit). Par exemple, si une demande de
cr�ation de la collection /a/b/c/d/
est faite, et que ni
/a/b/
ni /a/b/c/
existent, alors la requ�te
DOIT �chouer.
Quand MKCOL
est invoqu�e sans corps de requ�te, la
collection nouvellement cr��e DEVRAIT n'avoir aucun membre.
Le message d'une requ�t MKCOL
peut contenir un corps. Le
comportement d'une requ�te MKCOL
ayant un corps est limit�
� la cr�ation de collections, de membres d'une collection, de
corps de membres et/ou de propri�t�s sur les collections et leurs
membres. Si le serveur re�oit une entit� de type requ�te
MKCOL
qu'il ne supporte pas ou qu'il ne comprend pas il DOIT
retourner le code d'�tat 415
(Type de m�dia non support�).
Le comportement exact que doit avoir la m�thode MKCOL
en
fonction des diff�rents types de m�dia n'est pas d�fini
dans ce document, et sera sp�cifi� dans d'autres documents.
Les codes de retour renvoy�s par la m�thode MKCOL
NE DOIVENT PAS �tre stock�s dans le cache.
201
(Cr��e) - La collection ou la ressource structur�e
a �t� correctement et compl�tement cr��e.
403
(Interdit) - Ce code indique qu'au moins une des deux conditions
est v�rifi�e :
405
(m�thode non autoris�e) - MKCOL
peut seulement �tre ex�cut� sur un ressource d�truite
ou inexistante.
409
(Conflit) - Une collection ne peut pas �tre fabriqu�e
� l'URI requ�te sp�cifi�e tant que au moins une collection
interm�diaire n'aura pas �t� cr��e.
415
(Type de m�dia non support�)- Le serveur ne
supporte pas le type de requ�te contenu dans le corps.
507
(M�moire insuffisante) - Il n'y a pas assez d'espace
pour que la ressource puisse enregistrer son �tat apr�s ex�cution
de la m�thode.
MKCOL
Cette exemple cr�e une collection nom�e /webdisc/xfiles/
sur le serveur www.server.org
.
>>Requ�te
MKCOL /webdisc/xfiles/ HTTP/1.1
Host: www.server.org
>>R�ponse
HTTP/1.1 201 Created
GET
et HEAD
appliqu�es � des collectionsLa s�mantique de la m�thode GET
est inchang�e
quand elle est appliqu�e � une collection, puisque la m�thode
GET
est d�finie ainsi, "extrait toute information (sous
la forme d'une entit�) identifi�e par l'URI requ�te" [RFC2068].
Quand la m�thode GET
est appliqu�e � une collection,
elle peut retourner le contenu d'une ressource "index.html
", ou
encore une repr�sentation humainement lisible du contenu de la collection,
ou d'autres r�sultats encore. Par cons�qsuent, il est tout �
fait possible que le r�sultat d'un GET
appliqu� �
une collection aura aucun rapport avec les membres appartenant � cette
collection.
De la m�me mani�re, la d�finition de la m�thode
HEAD
�tant la m�me que celle du GET
�
l'exception du corps du message de r�ponse, retir� dans le cas
de la m�thode HEAD
, la s�mantique de HEAD
est inchang�e quand cette m�thode est appliqu�e �
des ressources de type collection.
POST
appliqu�e
� des collectionsPuisque par d�finition la fonction r�ellement r�alis�e
par POST
est d�termin�e par le serveur et d�pend
souvent de la ressource particuli�re � laquelle elle est appliqu�e,
le comportement de POST
quand cette m�thode est appliqu�e
� des collections ne peut pas �tre modifi� dans sa signification
puisque celui-l� est largement ind�fini. En cons�quence
la s�mantique de la m�thode POST
est inchang�e
quand elle s'applique � une collection.
DELETE
DELETE
appliqu�e
� des ressources autres que des collectionsSi la m�thode DELETE
est appliqu�e � une
ressource qui n'est pas une collection et dont l'URI est un membre interne d'une
ou plusieurs collections, alors un serveur DOIT, pendant l'ex�cution
du DELETE
, retirer toutes les URI de la ressource identifi�e
par l'URI requ�te des collections qui la contiennent comme membre.
DELETE
appliqu�e � des collections La m�thode DELETE
appliqu�e � une collection
DOIT agir comme si l'ent�te "Depth: infinity
" �tait
appliqu�e. Vis � vis de la m�thode DELETE
,
un client NE DOIT soumettre AUCUNE autre valeur que infinity
pour l'ent�te Depth
.
DELETE
donne l'instruction de destruction de la collection sp�cifi�e
� l'URI requ�te ainsi que de la totalit� des ressources
identifi�es par ses membres internes.
Si l'une quelconque des ressources identifi�es par l'URI d'un membre de la collection ne peut �tre d�truite, alors aucun des anc�tres du membre NE DOIT �tre d�truit, cela afin de maintenir la coh�sion de l'espace de noms.
Toute ent�te inclue avec l'ordre DELETE
DOIT �tre
appliqu�e lors du traitement de chacune des ressources � d�truire.
Quand la m�thode DELETE
est termin�e, elle DOIT
avoir restitu�e un espace de noms r�gulier.
Si une erreur survient avec une ressource autre que celle identifi�e
par l'URI requ�te, alors la r�ponse DOIT avoir la valeur
207
(�tats multiples). Les erreurs de type 424
(Echec de d�pendance) NE DEVRAIENT PAS �tre dans un 207
(�tats multiples). Elle peuvent �tre mises de c�t� en
toute s�curit� parce que le client saura que les anc�tres
d'une ressource n'ont pu �tre d�truits quand le client re�oit
une erreur concernant la prog�niture d'un anc�tre. De plus, les
erreurs 204
(Pas de contenu) NE DEVRAIENT PAS �tre
retourn�s en 207
(�tats multiples). La raison de cette
interdiction est que le code 204
(Pas de contenu) est le code de
retour par d�faut en cas de succ�s.
DELETE
>>Requ�te
DELETE /container/ HTTP/1.1
Host: www.foo.bar
>>R�ponse
HTTP/1.1 207 Multi-Status
Content-Type: text/xml; charset="utf-8"
Content-Length: xxxx
�� <?xml version="1.0" encoding="utf-8" ?>
�� <d:multistatus xmlns:d="DAV:">
���� <d:response>
��������� <d:href>http://www.foo.bar/container/resource3</d:href>
��������� <d:status>HTTP/1.1
423 Locked</d:status>
���� </d:response>
�� </d:multistatus>
Dans cet exemple, la tentative de destruction de http://www.foo.bar/container/resource3
�choue parce que la ressource est verrouill�e, et aucun marqueur
de verrou n'a �t� soumis avec la requ�te. En cons�quence,
la tentative de destruction de http://www.foo.bar/container/
�choue aussi. Ainsi, le client est inform� que la tentative de
destruction de http://www.foo.bar/container/
a �chou� puisque le parent ne peut pas �tre d�truit
tant que ses enfants ne le sont pas. Aucune ent�te Depth
n'ayant �t� incluse, la valeur par d�faut infinity
a �t� prise en compte puisque la m�thode est appliqu�e
� une collection.
PUT
PUT
pour des ressources
autres que des collectionsUn PUT
r�alis� sur une ressource existante remplace
l'entit� que la ressource retourne en r�ponse � un GET
.
Les propri�t�s d�finies sur la ressource peuvent �tre
recalcul�es pendant le traitement du PUT
mais ne sont pas
autrement modifi�es. Par exemple, si un serveur reconnait le type de
contenu du corps de la requ�te, il peut �tre capable d'en extraire
automatiquement l'information int�ressante � exposer en tant que
propri�t�.
Un PUT
dont le r�sultat serait la cr�ation d'une
ressource sans collection parent appropri�e DOIT �chouer
et retourner un code 409
(Conflit).
PUT
appliqu�e
� des collectionsComme il est d�fini dans dans la sp�cification HTTP/1.1 [RFC2068],
la m�thode PUT
"impose que l'entit� envoy�e
soit stock�e sous l'URI requ�te transmise". Puisque la soumission
d'une entit� de type collection pourrait entra�ner implicitement
la cr�ation ou la destruction de ressources, cette sp�cification
ne d�finit intentionnellement aucun format pour la cr�ation de
collection via la m�thode PUT
. C'est la m�thode MKCOL
qui est d�finie dans cette sp�cificaiton pour la cr�ation
de collections.
Quand l'op�ration PUT
cr�e une nouvelle ressource
qui n'est pas une collection, tous ses anc�tres DOIVENT pr�alablement
exister. Si tous les anc�tres n'existent pas, la m�thode DOIT
�chouer et retourner un code 409
(Conflit). Par exemple,
si la ressource /a/b/c/d.html
doit �tre cr��e
et que /a/b/c/
n'existe pas, alors la requ�te DOIT
�chouer.
COPY
La m�thode COPY
cr�e une copie de la ressource source
identifi�e par l'URI requ�te, dans la ressource de destination,
identifi�e par l'URI qui se trouve dans l'ent�te Destination
.
L'ent�te Destination
DOIT �tre pr�sente.
Le comportement exact de la m�thode COPY
d�pend du
type de ressource source copi�e.
Toute ressource conforme � WebDav DOIT supporter la m�thode
COPY
. Toutefois, le support de la m�thode COPY
ne garantit pas qu'il soit r�ellement possible de copier la ressource.
Par exemple, des ressources pourtant pr�sentes sur le m�me serveur
peuvent �tre contr�l�es par des programmes distincts. En
cons�quence, il pourrait ne pas �tre possible de copier une ressource
� un emplacement apparemment sur le m�me serveur.
COPY
pour des ressources
HTTP/1.1Quand la ressource source n'est pas une collection, le r�sultat de la
m�thode COPY
est la cr�ation d'une nouvelle ressource
� un emplacement de la destination avec un �tat et un comportement
le plus proche possible de ceux de la ressource source. Apr�s l'ex�cution
r�ussie d'un COPY
, toutes les propri�t�s de
la ressource source DOIVENT avoir �t� copi�es sur
la ressource de destination, en �tant toutefois sujettes � des
modifications de leurs ent�tes et d'�l�ments XML, respectant
en cela les r�gles de copiage des propri�t�s. Puisque l'environnement
de la destination peut �tre diff�rent de celui de la source pour
des raisons qui sont ind�pendantes des possibilit�s de contr�le
du serveur, tel que l'absence d'une ressource pourtant n�cessaire au
bon fonctionnement de l'op�ration, il peut arriver que l'ensemble des
comportements de la ressource ne puisse �tre copi� dans la destination
cible. Les alt�rations cons�cutives de la ressource de destination
ne modifiera pas la ressource source. Les alt�rations cons�cutives
de la ressource source ne modifieront pas la ressource de destination.
COPY
appliqu�e
� des propri�t�sLa section suivante d�finie comment la m�thode COPY
s'applique
aux propri�t�s d'une ressource.
Les propri�t�s vivantes DEVRAIENT �tre dupliqu�es
comme propri�t�s vivantes en conservant au niveau de la ressource
de destination le m�me comportement que celui qu'elles ont sur la ressource
source. Si une propri�t� ne peut pas �tre copi�e
en conservant son comportement, alors sa valeur DOIT �tre dupliqu�e,
octet � octet, dans une propri�t� morte de nom identique,
sur la ressource de destination et en tenant compte des conditions pr�cis�es
par l'�l�ments XML propertybehavior
.
L'�l�ment XML propertybehavior
peut sp�cifier
que les propri�t�s sont copi�es de la meilleure mani�re
possible, que, soit toutes les propri�t�s vivantes SONT
copi�es avec succ�s soit la m�thode DOIT �chouer,
ou que, soit la copie d'une liste sp�cifi�e de propri�t�s
vivantes EST �tre r�ussie soit la m�thode DOIT
�chouer. L'�l�ment XML propertybehavior
est
d�fini � la section 12.12.
COPY
appliqu�e
� des collectionsLa m�thode COPY
appliqu�e � une collection
sans avoir pr�cis� la valeur de l'ent�te Depth
DOIT agir en prenant comme valeur par d�faut "infinity
".
Les valeurs qu'un client a le droit de soumettre dans l'ent�te depth
de la m�thode COPY
sont "0
" ou "infinity
".
Les serveurs conformes DAV
DOIVENT supporter ces deux valeurs.
La valeur infinity
signifie que la collection d'origine, identifi�e
par l'URI requ�te, doit �tre copi�e � l'emplacement
sp�cifi� par l'URI fournie dans l'ent�te Destination
,
et que toutes les ressources membres internes de la collection d'origine, sur
tous ses niveaux de profondeur, doivent �tre r�cursivement copi�es
� l'emplacement de la ressource de destination.
Une COPY
avec "Depth: 0
" ne fait que signifier que
la collection d'origine et ses propri�t�s doivent �tre copi�s
mais pas les ressources identifi�es par ses URI de membres internes.
Toute ent�te sp�cifi�e dans une requ�te COPY
DOIT �tre appliqu�e � chaque ressource copi�e,
pendant sa copie, � l'exception de l'ent�te Destination
.
L'ent�te Destination
ne fait que sp�cifier l'URI
"de destination" de l'URI requ�te. Quand on l'applique aux membres
de la collection identifi�e par l'URI requ�te, la valeur de Destination
est modifi�e pour refl�ter la position relative des ressources
dans la hi�rarchie copi�e.
Ainsi : Soit la resource /a/
� laquelle on applique les
valeurs http://fun.com/
comme valeur
d'ent�te Host
et http://fun.com/b/
pour valeur d'ent�te Destination
, alors quand la ressource
http://fun.com/a/c/d
est copi�e,
la Destination
qui DOIT �tre utilis�e est
http://fun.com/b/c/d
.
Quand l'ex�cution de la m�thode COPY
est termin�e,
elle DOIT avoir cr�� au niveau de la destination un espace
de noms r�gulier (se r�f�rer � la section 5.1 pour
la d�finition des espaces de noms r�guliers). Toutefois, si une
erreur se produit pendant la copie d'une collection interne, le serveur NE
DOIT copier aucune des ressources identifi�es par les membres
de cette collection (en clair, par exemple, le serveur DOIT ignorer le
sous-arbre de cette collection), parce que cela reviendrait sinon � cr�er
un espace de noms irr�gulier. Quand une erreur est ainsi d�tect�e,
l'op�ration de COPY
DEVRAIT essayer de se terminer
de mani�re � ce que le r�sultat soit le plus proche possible
de ce qu'�tait la ressource source � copier (par exemple, le serveur
doit essayer de copier les autres sous-arbres et leurs membres de la ressource
source, ceux qui ne sont pas des descendants de la collection ayant caus�
le probl�me). Par exemple, si un COPY
avec une profondeur
infinity
est appliqu� � la collection /a/
,
contenant les collections /a/b/
et /a/c/
, et qu'une
erreur intervient lors de la copie de /a/b/
, alors la m�thode
doit quand m�me essayer de copier /a/c/.
De la m�me mani�re, si une erreur arrive lors de la copie d'une
ressource qui n'est pas une collection et dans le cas d'un COPY
de type infinity
, le serveur DEVRAIT essayer de terminer
le traitement en rendant un r�sultat qui soit le plus proche possible
du r�sultat souhait�. Si une erreur dans l'ex�cution de
la m�thode COPY
survient sur une ressource autre que celle
identifi�e par l'URI requ�te alors la r�ponse DOIT
�tre le code 207
(multi-�tat).
Le code 424
(Echec de d�pendance) NE DEVRAIT PAS
�tre retourn� dans une r�ponse de type 207
(multi-�tat) r�sultant de l'ex�cution de la m�thode
COPY
. Les r�ponses peuvent �tre omises en toute s�curit�
parce que le client sera inform� que la prog�niture d'une ressource
n'a pas pu �tre copi�e quand il recevra l'erreur relatve aux parents.
De plus, les codes 201
(Cr��) et 204
(Pas de contenu) NE DEVRAIT PAS �tre retourn�s dans
les r�ponses 207
(�tats multiples) produites par la m�thode
COPY
. Elles peuvent �galement �tre omises en toute
s�curit� parce qu'il s'agit des codes par d�faut en cas
de r�ussite.
COPY
et ent�te
Overwrite
Si une des ressources copi�es existe au niveau de la destination sp�cifi�e
et que l'ent�te Overwrite
vaut "T
" alors, avant
d'ex�cuter la copie, le serveur DOIT ex�cuter un DELETE
de la ressource de destination correspondante avec l'option "Depth: infinity
".
Si l'ent�te Overwrite
est initialis�e � "F
"
alors l'op�ration doit �chouer.
201
(Cr��) - La ressource source a �t�
copi�e avec succ�s. Le r�sultat de cette op�ration
est la cr�ation d'une nouvelle ressource.
204
(Pas de contenu) - La ressource source a �t�
copi�e avec succ�s vers une ressource de destination pr�-existante.
403
(Interdit) - Les URI de la source et de la destination sont
les m�mes.
409
(Conflit) - Une des ressources ne peut pas �tre cr��e
au niveau de la destination tant qu'une ou plusieurs collections interm�diaires
n'auront pas �t� cr��es.
412
(Echec de la pr�condition) - Le serveur a �t�
incapable de maintenir l'aspect vivant des propri�t�s list�es
dans l'�l�ment XML propertybehavior
ou bien l'ent�te
Overwrite
vaut "F
" et l'�tat de la collection
de destination n'est pas nul.
423
(Verrouill�) - La ressource de destination �tait
verrouill�e.
502
(Mauvaise passerelle) - Cela peut arriver quand la destination
se trouve �tre sur un autre serveur et que ce dernier refuse d'accepter
la ressource.
507
(M�moire insuffisante) - La ressource de destination
n'a pas assez d'espace pour enregistrer l'�tat de la ressource apr�s
ex�cution de cette m�thode.
COPY
avec Overwrite
Dans cet exemple, la ressource http://www.ics.uci.edu/~fielding/index.html
est copi�e � la destination http://www.ics.uci.edu/users/f/fielding/index.html
.
Le code d'�tat 204
(Pas de contenu) indique que la ressource
de destination qui existait �t� �cras�e.
>>Requ�te
COPY /~fielding/index.html HTTP/1.1
Host: www.ics.uci.edu
Destination: http://www.ics.uci.edu/users/f/fielding/index.html
>>R�ponse
HTTP/1.1 204 No Content
COPY
sans Overwrite
L'exemple suivant montre la m�me op�ration de copie, mais en ayant
mis l'ent�te Overwrite
� "F
." Une r�ponse
de type 412
(Echec de pr�condition) est retourn�e
parce que la ressource de destination n'�tait pas dans un �tat
nul.
>>Requ�te
COPY /~fielding/index.html HTTP/1.1
Host: www.ics.uci.edu
Destination: http://www.ics.uci.edu/users/f/fielding/index.html
Overwrite: F
>>R�ponse
HTTP/1.1 412 Precondition Failed
COPY
d'une collection >>Requ�te
COPY /container/ HTTP/1.1
Host: www.foo.bar
Destination: http://www.foo.bar/othercontainer/
Depth: infinity
Content-Type: text/xml; charset="utf-8"
Content-Length: xxxx
����� <?xml version="1.0" encoding="utf-8"
?>
����� <d:propertybehavior xmlns:d="DAV:">
������� <d:keepalive>*</d:keepalive>
����� </d:propertybehavior>
>>R�ponse
HTTP/1.1 207 Multi-Status
Content-Type: text/xml; charset="utf-8"
Content-Length: xxxx
����� <?xml version="1.0" encoding="utf-8"
?>
����� <d:multistatus xmlns:d="DAV:">
������� <d:response>
������������ <d:href>http://www.foo.bar/othercontainer/R2/</d:href>
������������ <d:status>HTTP/1.1
412 Precondition Failed</d:status>
������� </d:response>
����� </d:multistatus>
L'ent�te Depth
est inutilement pr�cis�e car
infinity
est la valeur par d�faut de toute op�ration
de COPY
de collection. Dans cette exemple, la plupart des resssources
de la collection furent copi�es avec succ�s. Toutefois la copie
de la collection R2
a �chou�, probablement �
cause d'un probl�me li� au maintient de propri�t�s
vivantes (cela est sp�cifi� par l'�l�ment XML propertybehavior
).
Comme il y eut cette erreur sur R2
, aucun des membres de R2
ne fut copi�. Toutefois aucune erreur n'a �t� inscrite
dans la r�ponse pour les membres en question � cause de la r�gle
de minimisation des erreurs d�crites � la section 8.8.3.
MOVE
Le d�placement d'une ressource qui ne soit pas une collection par la
m�thode MOVE
est logiquement �quivalent �
l'ex�cution d'un COPY
, suivi par un traitement de maintenance
de la r�gularit�, suivi d'une destruction de la source, les trois
actions �tant ex�cut�es automatiquement. L'�tape
de maintenance de la r�gularit� autorise le serveur � ex�cuter
les actions de mises � jour cons�cutives au d�placement,
comme par exemple la mise � jour de toutes les URI autres que l'URI requ�te
qui identifie la ressource source, pour les faire pointer vers la nouvelle resssource
destination. En cons�quence, l'ent�te Destination
DOIT �tre pr�sente sur toutes les
m�thodes MOVE
et DOIT suivre
toutes les exigences de la m�thode COPY
, tout au moins pour
la partie identique � COPY
de la m�thode MOVE
.
Toutes les ressources conformes � DAV
DOIVENT
supporter la m�thode MOVE
. Toutefois, le support de la m�thode
MOVE
n'est pas une garantie que le serveur aura la capacit�
de d�placer une ressource source vers une destination particuli�re.
Par exemple, des programmes ind�pendants les uns des autres peuvent avoir, sur le m�me serveur, le contr�le de diff�rents ensembles de ressources. D�s lors, il se pourrait qu'il ne soit pas possible de d�placer une ressource d'un ensemble � un autre, c'est � dire � l'int�rieur d'un espace de noms qui se trouve pourtant �tre sur le m�me serveur.
Si une ressource existe au niveau de la destination sp�cifi�e,
un effet de bord de la m�thode MOVE
est que la ressource
destination sera DETRUITE , cela dans la limite
des �ventuelles restrictions dues � l'ent�te Overwrite
.
MOVE
appliqu�e
aux propri�t�sLe comportement des propri�t�s lors de l'ex�cution d'un
MOVE
, y compris les effets de l'�l�ment XML propertybehavior
,
DOIT �tre le m�me que celui sp�cifi� dans la
section 8.8.2.
MOVE
appliqu�e
� des collectionsL'ent�te "Depth: infinity
" utilis�e la m�thode
MOVE
est une instruction qui sert � d�placer la colllection
identifi�e par l'URI requ�te vers l'URI sp�cifi�e
dans l'ent�te Destination
et pr�cise que toutes les
ressources identifi�es par les URI de membres internes de la ressource
source, � tous les niveaux hi�rarchiques, sont � d�placer
r�cursivement vers des emplacements de la ressource de destination qui
lui seront relatifs.
La m�thode MOVE
appliqu�e � une collection
DOIT agir comme si l'ent�te "Depth: infinity
" �tait
utilis�e. Un client NE DOIT soumettre aucune autre valeur
d'ent�te que "Depth: infinity
" avec un MOVE
.
Toutes les ent�tes incluses dans un MOVE
DOIVENT
�tre appliqu�es � chaque ressource lors de son d�placement
� l'exception de la ressource sp�cifi�e dans l'ent�te
Destination
.
Le comportement de l'ent�te Destination
est le m�me
que celui d�fini pour la COPY
de collections.
Quand l'ex�cution de la m�thode MOVE
est termin�e,
elle DOIT avoir cr�� un espace de noms r�gulier
tant au niveau de la source que de la destination (se r�f�rer
� la section 5.1 pour voir la d�finition de la notion d'espace
de noms r�gulier). Toutefois, si une erreur survient pendant le d�placement
d'une collection interne, le serveur NE DOIT d�placer
aucune des resources identifi�es par les membres de la collection g�n�ratrice
de l'erreur (par exemple, le serveur DOIT sauter le sous-arbre ayant
provoqu� l'erreur et passer � un autre), parce que cela cr�erait
un espace de nom irr�gulier. Dans ce cas, apr�s que l'erreur soit
d�tect�e, l'op�ration de d�placement DEVRAIT
essayer de terminer l'action de mani�re � obtenir un r�sultat
le plus proche possible de celui esp�r� initialement (par exemple,
le serveur devrait continuer � essayer de d�placer les autres
sous-arbres et les ressources identifi�es par leurs membres qui ne sont
pas les descendants d'une collection auant provoqu� une erreur). Par
exemple, si un MOVE
de profondeur infinie est ex�cut�
sur la collection /a/
, contenant les collections /a/b/
et /a/c/
, et qu'une erreur survient dans le d�placement
/a/b/
, le serveur doit quand m�me essayer de d�placer
/a/c/
. Similairement, apr�s qu'une erreur soit rencontr�e
lors du d�placement d'une ressource autre qu'une collection et dans le
cas d'un MOVE
de profondeur infinie, le serveur DEVRAIT
doit essayer de terminer l'op�ration demand�e de mani�re
� obtenir un r�sultat le plus proche possible de celui attendu
par l'op�ration de d�placement originellement demand�e.
Si une erreur se produit avec une ressource autre que celle identifi�e
par l'URI requ�te alors la r�ponse DOIT
�tre un code 207
(�tats multiples).
Le code d'�tat 424
(Echec de d�pendance) NE
DEVRAIT PAS �tre retourn� dans le cas d'une r�ponse
207
(�tats multiples) produite par une m�thode MOVE
.
Ces erreurs peuvent �tre omises en toute s�curit� parce
que le client saura que la prog�niture d'une ressource ne peut pas �tre
d�plac�e quand il recevra le message d'erreur concernant le parent.
De plus, les r�ponses 201
(Cr��)/204
(Pas de contenu) NE DEVRAIENT PAS �tre retourn�es
dans une r�ponse 207
(�tats multiples) � un MOVE
.
Ces r�ponses peuvent �tre omises en toute s�curit�
parce qu'il s'agit des codes par d�faut des d�placements r�ussis.
MOVE
et l'ent�te
Overwrite
Si une ressource existe � l'emplacement d�fini comme destination
et que l'ent�te Overwrite
est "T
" alors, avant
d'ex�cuter le d�placement le serveur DOIT
ex�cuter un DELETE
de profondeur infinie de la ressource
destination. Si l'ent�te Overwrite
est "F
" alors
l'op�ration �chouera.
201
(Cr��) - La ressource source a �t�
d�plac�e avec succ�s, et une nouvelle ressource a �t�
cr��e � la destination indiqu�e.
204
(Pas de contenu) - La ressource source a �t�
d�plac�e avec succ�s vers une ressource destination qui
existait d�j�.
403
(Interdit) - Les URI de la source et de la destination sont
les m�mes.
409
(Conflit) - Une ressource ne peut pas �tre cr��e
� la destination tant qu'une ou plusieurs collections interm�diaires
n'auront pas �t� cr��es.
412
(Echec de la pr�condition) - Soit le serveur a �t�
incapable de maintenir l'aspect vivant des propri�t�s list�es
dans l'�l�ment XML propertybehavior
soit l'ent�te
Overwrite
vaut "F
" et l'�tat de la ressource
destination n'est pas nul.
423
(Verrouill�) - La source ou la destination �tait
verrouill�e.
502
(Mauvaise passerelle) - Cela peut survenir quand la destination
est sur un autre serveur et que le serveur de la destination refuse de recevoir
la ressource.
MOVE
d'une ressource
autre qu'une collectionCette exemple montre le d�placement de la ressource http://www.ics.uci.edu/~fielding/index.html
vers la destination http://www.ics.uci.edu/users/f/fielding/index.html
.
Le contenu de la ressource de destination serait �cras� si la
ressource destination �tait non-nulle. Dans ce cas, puisqu'il n'y avait
rien dans la ressource de destination, le code de r�ponse retourn�
est 201
(Cr��).
>>Requ�te
MOVE /~fielding/index.html HTTP/1.1
Host: www.ics.uci.edu
Destination: http://www.ics.uci.edu/users/f/fielding/index.html
>>R�ponse
HTTP/1.1 201 Created
Location: http://www.ics.uci.edu/users/f/fielding/index.html
MOVE
d'une collection >>Requ�te
MOVE /container/ HTTP/1.1
Host: www.foo.bar
Destination: http://www.foo.bar/othercontainer/
Overwrite: F
If: (<opaquelocktoken:fe184f2e-6eec-41d0-c765-01adc56e6bb4>) (<opaquelocktoken:e454f3f3-acdc-452a-56c7-00a5c91e4b77>)
Content-Type: text/xml; charset="utf-8"
Content-Length: xxxx
�� <?xml version="1.0" encoding="utf-8" ?>
�� <d:propertybehavior xmlns:d='DAV:'>
���� <d:keepalive>*</d:keepalive>
�� </d:propertybehavior>
>>R�ponse
HTTP/1.1 207 Multi-Status
Content-Type: text/xml; charset="utf-8"
Content-Length: xxxx
�� <?xml version="1.0" encoding="utf-8" ?>
�� <d:multistatus xmlns:d='DAV:'>
���� <d:response>
��������� <d:href>http://www.foo.bar/othercontainer/C2/</d:href>
��������� <d:status>HTTP/1.1
423 Locked</d:status>
���� </d:response>
�� </d:multistatus>
Dans cet exemple, le client a soumis un certain nombre de verrous avec sa requ�te.
Un marqueur de verrou sera n�cessaire pour chaque ressource verrouill�e,
source et destination, quelque soit l'endroit o� elle se trouve dans
le domaine d'application de la m�thode. Dans ce cas, le marqueur de verrou
appropri� n'a pas �t� soumis pour la destination http://www.foo.bar/othercontainer/C2/.
Cela signifie que la ressource /container/C2/
n'a pas pu �tre
d�plac�e. Et comme il y a eu une erreur sur la copie de /container/C2/
,
alors aucun des membres de ce r�pertoire ne fut copi�.� Toutefois,
aucune erreur ne fut inscrite dans la r�ponse pour ces membres �
cause de la r�gle de minimisation des erreurs d�finies �
la section 8.8.3.�L'identification de l'agent utilisateur est d�j�
intervenue via un m�canisme externe au domaine du protocole HTTP, dans
une couche de transport sous-jacente.
LOCK
La section suivante d�crit la m�thode LOCK
, utilis�e
pour poser un verrou. Les sections concernant la m�thode LOCK
d�crivent uniquement la s�mantique sp�cifique �
la m�thode LOCK
et sont ind�pendantes du type d'acc�s
contr�l� par le verrou.
Toute ressource qui supporte la m�thode LOCK
DOIT,
au minimum, supporter les formats XML de requ�te et de r�ponse
d�finis ci-apr�s.
L'invocation de la m�thode LOCK
cr�e le verrou sp�cifi�
par l'�l�ment XML lockinfo
de l'URI requ�te.
Les requ�tes portant sur la m�thode de verrouillage DEVRAIENT
avoir un corps de requ�te en XML contenant l'�l�ment XML
owner
, sauf si il s'agit d'une requ�te de rafra�chissement.
La requ�te LOCK
peut avoir dans son ent�te une valeur
de contr�le de de limitation dans le temps (un "Timeout").
Les clients DOIVENT assumer le fait que les verrous
peuvent dispara�tre arbitrairement � tout instant, cela ind�pendamment
de toute valeur de contr�le de limitation dans le temps qui aurait �t�
sp�cifi�e dans l'ent�te. L'ent�te de contr�le
de limitation dans le temps ne fait qu'indiquer au serveur quel est le comportement
� suivre dans des cas de circonstances extraordinaires. Par exemple,
un administrateur peut retirer un verrou � tout instant ou le syst�me
peut s'arr�ter brutalement de telle mani�re qu'il perde l'enregistrement
de l'existence du verrou. La r�ponse DOIT
contenir dans l'�l�ment XML prop
la valeur de la
propri�t� lockdiscovery
.
Afin d'indiquer le marqueur de verrou associ� au verrou nouvellement
cr��, une ent�te de r�ponse de type Lock-Token
DOIT �tre incluse dans la r�ponse
pour chaque demande de verrou de la requ�te LOCK
ayant r�ussi.
Remarquez que l'ent�te Lock-Token
ne serait pas retourn�e
en r�ponse � une requ�te de rafra�chissement de verrou
parce que dans ce cas, il n'y a aucune cr�ation de nouveau verrou.
Un verrou porte l'�tat de la totalit� de la ressource, incluant son corps et ses propri�t�s associ�es. En cons�quence, un verrou sur une ressource DOIT aussi verrouiller les propri�t�s de la ressource.
Pour les collections, le verrou concerne �galement la possibilit� d'y ajouter ou d'en d�truire des membres. La nature de l'effet d�pend du type de contr�le d'acc�s en vigueur.
Une ressource peut �tre rendue accessible par diff�rentes URI.
Toutefois les verrous s'appliquent aux ressources, pas aux URI. De ce faite,
une requ�te LOCK
sur une ressource NE DOIT
r�ussir que si elle peut �tre honor�e par toutes les URI
au travers desquelles la ressource est accessible.
Depth
et verrouillage L'ent�te Depth
peut �tre utilis�e avec la m�thode
LOCK
. Seules les valeurs "0
" (z�ro)
et "infinity
" SONT autoris�es.
Toutes les ressources qui supportent la m�thode LOCK
DOIVENT
supporter l'ent�te Depth
.
Une ent�te Depth
de valeur 0
(z�ro)
signifie simplement qu'il ne faut verrouiller que la ressource sp�cifi�e
par l'URI requ�te.
Si l'ent�te Depth
est initialis�e � la valeur
infinity
alors la ressource sp�cifi�e par l'URI requ�te
ainsi que tous ses membres internes, jusqu'au plus bas niveau de la hi�rarchie,
doivent �tre verrouill�s. Un r�sultat r�ussi DOIT
retourner un seul marqueur de verrou repr�sentant toutes les ressources
qui ont �t� verrouill�es. Si un UNLOCK
est
ex�cut� avec succ�s sur ce marqueur, toutes les ressources
associ�es sont d�verrouill�es. Si le verrouillage ne peut
pas �tre accord� � toutes les ressources, un code 409
(Conflit) DOIT �tre retourn� dans le corps de la r�ponse
contenant l'�l�ment XML multistatus
d�crivant
quelle(s) ressource(s) a emp�ch� le verrou d'�tre accord�.
Mais le succ�s partiel n'est pas une option autoris�e. Soit toute
la hi�rarchie est verrouill�e soit aucune ressource ne l'est.
Quand aucune ent�te Depth
n'est soumise avec la requ�te
LOCK
alors la valeur par d�faut "Depth:infinity
"
est appliqu�e.
L'interaction du LOCK
avec diff�rentes m�thodes
d�pend du type de verrou. Toutefois, ind�pendamment du type de
verrou, la destruction r�ussie d'une ressource avec la m�thode
DELETE
DOIT entra�ner la destruction de tous les verrous
qui sont rattach�s � cette ressource.
La table ci-dessous d�crit le comportement de la m�thode quand une requ�te de verrouillage est appliqu�e � une ressource.
�� �tat courant du verrou/� |�� verrou
partag� �� |�� Verrou
�� requ�te de verrou�������
|��������������������
|�� exclusif
�� =========================+=====================+==============
�� aucun���������������
����|�� Vrai�������������
|�� Vrai
�� -------------------------+---------------------+--------------
�� Verrou partag頠��������
|�� Vrai�������������
|�� Faux
�� -------------------------+---------------------+--------------
�� Verrou exclusif���������
|�� Faux ������������
|�� Faux*
�� --------------------------------------------------------------
L�gende : Vrai = le verrou peut �tre accord�. Faux = le verrou NE DOIT PAS �tre accord�. *=Il est interdit � un demandeur de demander deux fois de suite le m�me verrou.
L'�tat de verrouillage courant d'une ressource est indiqu� dans
la colonne la plus � gauche, et les diff�rents cas de demandes
de verrouillage sont list�s dans la premi�re rang�e. A
l'intersection d'une colonne et d'une rang�e se trouve le r�sultat
de la demande de verrouillage. Par exemple, si un verrou partag� est
pos� une ressource, et qu'une demande de verrou exclusif est faite, l'entr�e
dans la table donne la valeur "faux
", indiquant que le verrou NE
DOIT PAS �tre accord�.
200
(OK) - La demande de verrouillage a r�ussie et la valeur
de la propri�t� lockdiscovery
est incluse dans le
corps.
412
(Echec de la pr�condition) - Soit le marqueur de verrou
inclus n'a pas pu �tre impos� � cette ressource soit le
serveur n'a pas pu satisfaire la demande pr�cis�e dans l'�l�ment
XML lockinfo
.
423
(Verrouill�) - La ressource est verrouill�e,
donc la m�thode a �t� rejet�e.
>>Requ�te
LOCK /workspace/webdav/proposal.doc HTTP/1.1
Host: webdav.sb.aol.com
Timeout: Infinite, Second-4100000000
Content-Type: text/xml; charset="utf-8"
Content-Length: xxxx
Authorization: Digest username="ejw",
realm="[email protected]", nonce="...",
uri="/workspace/webdav/proposal.doc",
response="...", opaque="..."
�� <?xml version="1.0" encoding="utf-8" ?>
�� <D:lockinfo xmlns:D='DAV:'>
���� <D:lockscope><D:exclusive/></D:lockscope>
���� <D:locktype><D:write/></D:locktype>
���� <D:owner>
��������� <D:href>http://www.ics.uci.edu/~ejw/contact.html</d:href>
���� </D:owner>
�� </D:lockinfo>
>>R�ponse
HTTP/1.1 200 OK
Content-Type: text/xml; charset="utf-8"
Content-Length: xxxx
�� <?xml version="1.0" encoding="utf-8" ?>
�� <D:prop xmlns:D="DAV:">
���� <D:lockdiscovery>
��������� <D:activelock>
��������������
<D:locktype><D:write/></D:locktype>
��������������
<D:lockscope><D:exclusive/></D:lockscope>
��������������
<D:depth>Infinity</D:depth>
��������������
<D:owner>
�������������������
<D:href>http://www.ics.uci.edu/~ejw/contact.html
</D:href>
��������������
</D:owner>
��������������
<D:timeout>Second-604800</D:timeout>
��������������
<D:locktoken>
�������������������
<D:href>opaquelocktoken:e71d4fae-5dec-22d6-fea5-00a0c91e6be4</D:href>
��������������
</D:locktoken>
��������� </D:activelock>
���� </D:lockdiscovery>
�� </D:prop>
Cet exemple montre la cr�ation r�ussie d'un verrou d'�criture
exclusif sur la ressource http://webdav.sb.aol.com/workspace/webdav/proposal.doc.
La ressource http://www.ics.uci.edu/~ejw/contact.html
contient les donn�es d'identification du propri�taire du verrou.
Le serveur a une politique de gestion du temps limite bas�e sur l'activit�
de cette ressource, et entra�ne la destruction automatique du verrou apr�s
une semaine (604800 secondes). Remarquez que les champs nonce
,
response
, et opaque
n'ont pas �t� calcul�s
dans l'ent�te Authorization
de la requ�te.
>>Requ�te
LOCK /workspace/webdav/proposal.doc HTTP/1.1
Host: webdav.sb.aol.com
Timeout: Infinite, Second-4100000000
If: (<opaquelocktoken:e71d4fae-5dec-22d6-fea5-00a0c91e6be4>) Authorization:
Digest username="ejw",
realm="[email protected]", nonce="...",
uri="/workspace/webdav/proposal.doc",
response="...", opaque="..."
>>R�ponse
HTTP/1.1 200 OK
Content-Type: text/xml; charset="utf-8"
Content-Length: xxxx
�� <?xml version="1.0" encoding="utf-8" ?>
�� <D:prop xmlns:D="DAV:">
���� <D:lockdiscovery>
��������� <D:activelock>
��������������
<D:locktype><D:write/></D:locktype>
��������������
<D:lockscope><D:exclusive/></D:lockscope>
��������������
<D:depth>Infinity</D:depth>
��������������
<D:owner>
�������������������
<D:href>http://www.ics.uci.edu/~ejw/contact.html
</D:href>
��������������
</D:owner>
��������������
<D:timeout>Second-604800</D:timeout>
��������������
<D:locktoken>
�������������������
<D:href>opaquelocktoken:e71d4fae-5dec-22d6-fea5-00a0c91e6be4</D:href>
��������������
</D:locktoken>
��������� </D:activelock>
���� </D:lockdiscovery>
�� </D:prop>
Cette demande rafra�chirait le verrou en r�initialisant tous les
compteurs de limitation de temps. Remarquez que le client a demand� un
temps infini mais que le serveur a choisi d'ignorer cette demande. Dans cet
exemple, les champs nonce
, response
, et opaque
n'ont pas �t� calcul�s dans l'ent�te Authorization
de la requ�te.
>>Requ�te
LOCK /webdav/ HTTP/1.1
Host: webdav.sb.aol.com
Timeout: Infinite, Second-4100000000
Depth: infinity
Content-Type: text/xml; charset="utf-8"
Content-Length: xxxx
Authorization: Digest username="ejw",
realm="[email protected]", nonce="...",
uri="/workspace/webdav/proposal.doc",
response="...", opaque="..."
�� <?xml version="1.0" encoding="utf-8" ?>
�� <D:lockinfo xmlns:D="DAV:">
���� <D:locktype><D:write/></D:locktype>
���� <D:lockscope><D:exclusive/></D:lockscope>
���� <D:owner>
��������� <D:href>http://www.ics.uci.edu/~ejw/contact.html</D:href>
���� </D:owner>
�� </D:lockinfo>
>>R�ponse
HTTP/1.1 207 Multi-Status
Content-Type: text/xml; charset="utf-8"
Content-Length: xxxx
�� <?xml version="1.0" encoding="utf-8" ?>
�� <D:multistatus xmlns:D="DAV:">
���� <D:response>
��������� <D:href>http://webdav.sb.aol.com/webdav/secret</D:href>
��������� <D:status>HTTP/1.1
403 Forbidden</D:status>
���� </D:response>
���� <D:response>
��������� <D:href>http://webdav.sb.aol.com/webdav/</D:href>
��������� <D:propstat>
��������������
<D:prop><D:lockdiscovery/></D:prop>
��������������
<D:status>HTTP/1.1 424 Failed Dependency</D:status>
��������� </D:propstat>
���� </D:response>
�� </D:multistatus>
Cet exemple montre une demande de pose d'un verrou d'�criture exclusif sur une collection et tout ses enfants. Dans cette requ�te, le client a sp�cifi� qu'il souhaite obtenir un verrou de dur�e infinie, si un tel verrou est disponible, et, dans le cas contraire, souhaite obtenir un temps limit� � 4.1 millliards de secondes, si cela est possible. Le corps de l'entit� requ�te contient l'information d'identification du demandeur faisant la demande de verouillage, ici, il s'agit de l'URL d'une page web.
La r�ponse retourn�e concernant la ressource http://webdav.sb.aol.com/webdav/secret
est 403
(Interdit). Et comme cette ressource ne put �tre
verrouill�e, aucune autre ne le fut. Remarquez aussi que la propri�t�
lockdiscovery
de l'URI requ�te a �t� incluse
dans la r�ponse comme cela est exig�. Dans cet exemple, la propri�t�
lockdiscovery
est vide, ce qui signifie qu'il n'y a actuellement
aucun verrou de pos� sur cette ressource.
Dans cet exemple, les champs nonce
, response
, et
opaque
n'ont pas �t� calcul�s dans l'ent�te
Authorization
de la requ�te.
UNLOCK
La m�thode UNLOCK
supprime de l'URI requ�te le verrou
identifi� par le marqueur de verrou sp�cifi� dans le champ
Lock-Token
de l'ent�te de la requ�te ainsi que de toutes
les ressources incluses dans le verrou. Si toutes les ressources qui ont �t�
verrouill�es par le marqueur de verrou ne peuvent �tre d�verrouill�es
alors la requ�te UNLOCK
DOIT �chouer.
Toute ressource conforme � DAV et supportant la m�thode LOCK
DOIT supporter la m�thode UNLOCK
.
UNLOCK
>>Requ�te
UNLOCK /workspace/webdav/info.doc HTTP/1.1
Host: webdav.sb.aol.com
Lock-Token: <opaquelocktoken:a515cfa4-5da4-22e1-f5b5-00a0451e6bf7> Authorization:
Digest username="ejw",
realm="[email protected]", nonce="...",
uri="/workspace/webdav/proposal.doc",
response="...", opaque="..."
>>R�ponse
HTTP/1.1 204 No Content
Dans cet exemple, le verrou identifi� par le marqueur de verrou "opaquelocktoken:a515cfa4-5da4-22e1-f5b5-00a0451e6bf7"
est retir� avec succ�s de la ressource http://webdav.sb.aol.com/workspace/webdav/info.doc.
Si ce verrou avait inclu plus d'une ressource, le verrou aurait �t�
supprim� sur chacune d'elles. Le code d'�tat 204
(Pas de contenu) est utilis� au lieu du code 200
(OK) parce
que l'entit� r�ponse n'a pas de corps.
Dans cet exemple, les champs nonce
, response
, et
opaque
n'ont pas �t� calcul�s dans l'ent�te
Authorization
de la requ�te.
HTTP
pour la r�daction
distribu�eDAV
DAV = "DAV" ":" "1" ["," "2"] ["," 1#extend]
Cet ent�te indique que la ressource supporte le sch�ma et le protocole
DAV
tels que sp�cifi�s. Toute ressource conforme �
DAV
DOIT retourner l'ent�tes DAV
avec
toute r�ponse � la m�thode OPTIONS
.
La valeur est une liste de toutes les classes conformes que la ressource supporte.
Remarquez que ci-dessus, une virgule a d�j� �t�
rajout�e au 2
. C'est parce qu'une ressource ne peut pas
avoir une conformit� de niveau 2
sans �tre �galement
conforme de niveau 1
. R�f�rez-vous � la section
15 pour plus de d�tails. En g�n�ral, toutefois, le support
d'une classe de conformit� ne pr�sage pas du support d'aucune
autre.
Depth
Depth = "Depth" ":" ("0" | "1" | "infinity")
L'ent�te Depth
est utilis�e avec les m�thodes
qui agissent sur des ressources qui ont potentiellement des membres internes
afin de leur indiquer si la m�thode doit �tre appliqu�e
seulement � la ressource ("Depth: 0
"), � la ressource
et ses enfants imm�diats ("Depth: 1
"), ou � la ressource
et toute sa prog�niture ("Depth: infinity
").
L'ent�te Depth
est uniquement support�e si une d�finition
de la m�thode est explicitement fournie pour le support.
Les r�gles suivantes repr�sentent le comportement par d�faut
de toute m�thode supportant l'ent�te Depth
. Une m�thode
peut surcharger les comportement par d�faut en les red�finissant
dans sa d�finition.
Les m�thodes qui supportent l'ent�te Depth
peuvent
d�cider de pas supporter toutes les valeurs possibles et d�finir,
au cas par cas, le comportement de la m�thode lorsque l'ent�te
Depth
est absente. Par exmeple, la m�thode MOVE
ne supporte que la valeur "Depth: infinity
" et si l'ent�te
Depth
est absente elle agit comme si la valeur "Depth: infinity
"
avait �t� sp�cifi�e.
Les clients NE DOIVENT PAS consid�rer que les m�thodes s'ex�cutant sur les membres de leurs arborescences le font selon un ordre ou une ex�cution atomique particuli�re � moins que la m�thode n'en fournisse explicitement la garantie.
Pour son ex�cution, une m�thode ayant une ent�te Depth
ex�cutera le mieux possible la t�che qui lui est assign�e
puis retournera une r�ponse sp�cifiant ce qui fut achev�
et ce qui fut impossible � r�aliser.
Ainsi, par exemple, une tentative de copie d'arborescence avec la m�thode
COPY
peut r�ussir sur certains membres et �chouer
sur d'autres.
Toute ent�te de m�thode dont le comportement d�pend de
la valeur de l'ent�te Depth
DOIT �tre appliqu�e
� toutes les ressources se trouvant dans le champ d'application de la
m�thode except� aux endroits o� des comportements diff�rents
ont �t� clairement sp�cifi�s. Par exemple, une ent�te
If-Match
verra sa valeur appliqu�e � chaque ressource
se trouvant dans le champ de la m�thode et entra�nera son �chec
sur les ressources ne satisfaisant pas � cette pr�condition.
Si une ressource, source ou destination, se trouvant � l'int�rieur
du champ d'application de la m�thode ayant une ent�te Depth
est verrouill�e de telle mani�re que la m�thode ne peut
r�ussir, alors le marqueur de verrou de cette ressource DOIT �tre
soumis en m�me temps que la requ�te dans l'ent�te If
de la requ�te
.
L'ent�te Depth
ne fait que sp�cifier le comportement
de la m�thode au regard de ses enfants internes. Si une ressource n'a
pas d'enfant interne alors l'ent�te Depth
DOIT �tre
ignor�e.
Remarquez bien que c'est toujours une erreur que de soumettre une valeur d'ent�te
Depth
qui ne soit pas autoris�e par la d�finition
de la m�thode. Aussi, soumettre un "Depth: 1
" avec la m�thode
COPY
, m�me si la ressource n'a aucun membre interne, entra�nera
le retour d'un code 400
(mauvaise requ�te). La m�thode
doit �chouer non pas parce que la ressource n'a pas de membre interne
mais � cause de la valeur interdite de l'ent�te Depth
.
Destination
Destination = "Destination" ":" absoluteURI
L'ent�te Destination
sp�cifie l'URI des ressources
destination des m�thodes de type COPY
et MOVE
,
qui ont besoin d'avoir deux URI en param�tres. Remarquez que la r�gle
de production de absoluteURI
est d�finie dans [RFC2396].
If
If = "If" ":" ( 1*No-tag-list | 1*Tagged-list)
No-tag-list = List
Tagged-list = Resource 1*List
Resource = Coded-URL
List = "(" 1*(["Not"](State-token | "[" entity-tag "]")) ")" State-token = Coded-URL
Coded-URL = "<" absoluteURI ">"
L'ent�te If
a un objectif fonctionnel similaire �
l'ent�te If-Match
d�finie � la section 14.25
de [RFC2068]. Cependant, l'ent�te If
est sens�e �tre utilis�e avec toute URI repr�sentant
une information d'�tat, r�f�renc�e par un marqueur
d'�tat, concernant tant une ressource qu'un ETags
. Un cas
typique de marqueur d'�tat est un marqueur de verrou, et les marqueurs
de verrou sont les seuls marqueurs d'�tats d�finis dans cette
sp�cification.
Toute ressource conforme � DAV DOIT supporter l'ent�te
If
.
Le but de l'ent�te If
est de d�crire une s�rie
de listes d'�tats. Si l'�tat de la ressource � laquelle
l'ent�te est appliqu�e ne correspond � aucun des �tats
sp�cifi�s alors la requ�te DOIT �chouer avec
un code 412
(Echec de la pr�condition). Si l'un des �tats
d�crits correspond � l'�tat de la ressource alors la requ�te
peut r�ussir.
Remarquez que la r�gle de production de absoluteURI
est
d�finie dans [RFC2396].
No-tag-list
La r�gle de production de No-tag-list
permet de d�crire
une s�rie de marqueurs d'�tat et d'ETags
. Si plusieurs
No-tag-list
sont utilis�s alors il suffit qu'un seul d'entre
eux corresponde � l'�tat de la ressource pour que la requ�te
puisse continuer.
Si une m�thode, de par la pr�sence d'une ent�te Depth
ou Destination
, s'applique � plusieurs ressources alors
la r�gle de produciton No-tag-list
DOIT �tre
appliqu� � chacune des ressources sur laquelle est appliqu�e
la m�thode.
IF
avec
un No-tag-list
If: (<locktoken:a-write-lock-token> ["I am an ETag"]) (["I am another
ETag"])
L'ent�te pr�c�dente signifie que toute ressource pr�sente
dans le champ d'application de la m�thode DOIT, soit �tre
verrouill�e avec le marqueur de verrou sp�cifi� et �tre
dans l'�tat d�fini par le premier Etag "I am an ETag
"
soit �tre dans l'�tat identifi� par le second Etag "I
am another ETag
". Pour �tre tout � fait clair, on peut imaginer
l'ent�te If
pr�c�dente comme �tant �crite
sous la forme (or (and <locktoken:a-write-lock-token> ["I am an ETag"])
(and ["I am another ETag"]))
.
Tagged-list
La r�gle de production tagged-list
s'applique �
la production d'une liste ne s'appliquant qu'� la ressource qui la pr�c�de.
Le champ d'application de la r�gle commence imm�diatement apr�s
la sp�cification de la ressource et se termine avec la sp�cification
de la ressource suivante, si il y en a une.
Quand l'ent�te If
est appliqu�e � une ressource
particuli�re, le serveur DOIT chercher l'existence de Tagged-list
pour savoir si une des ressources list�es correspond � la (aux)
ressource(s) op�rande(s) pour la m�thode en cours. Si aucune des
r�gles de production de ressources ne correspond � la ressource
courante alors l'ent�te DOIT �tre ignor�e. Si l'une
des r�gles de production de ressource correspond effectivement �
la ressource consid�r�e alors la liste de production de ressources
suivante DOIT �tre appliqu�e � la ressource de la
mani�re sp�cifi�e dans la section pr�c�dente.
La m�me URI NE DOIT PAS appara�tre plus d'une fois
dans une r�gle de production d'une ressource dans une ent�te If
.
If
avec
Tagged-List
COPY /resource1 HTTP/1.1
Host: www.foo.bar
Destination: http://www.foo.bar/resource2
If: <http://www.foo.bar/resource1>
(<locktoken:a-write-lock-token> [W/"A weak ETag"]) (["strong ETag"])
<http://www.bar.bar/random>(["another
strong ETag"])
Dans cet exemple, la ressource http://www.foo.bar/resource1
est copi�e � la ressource de destination http://www.foo.bar/resource2
.
Quand la m�thode est appliqu�e pour la premi�re fois �
http://www.foo.bar/resource1
,
resource1
DOIT �tre dans l'�tat sp�cifi�
par "(<locktoken:a-write-lock-token> [W/"A weak ETag"]) (["strong ETag"])
",
c'est � dire, qu'elle DOIT �tre, soit verrouill�e
avec un marqueur de verroude type "locktoken:a-write-lock-token
"
et avoir une balise d'entit� faible W/"A weak ETag"
soit
avoir une balise d'entit� forte "strong ETag
".
Cela est la seule condition de succ�s puisque la ressource http://www.bar.bar/random
ne se voit jamais appliquer la m�thode (la seule autre ressource list�e
dans l'ent�te If
) et http://www.foo.bar/resource2
n'est pas list�e dans l'ent�te If
.
not
Chaque marqueur d'�tat ou ETag
est soit courant, et par
cons�quent d�crit l'�tat de la ressource, soit n'est pas
courant, et ne d�crit pas l'�tat de la ressource. L'op�ration
bool�enne qui consiste � faire correspondre un marqueur d'�tat
ou ETag
avec l'�tat courant d'une ressource se r�sume
� une valeur true
ou false
. La r�gle
de production not
est utilis�e pour inverser cette valeur.
La port�e de la r�gle de production not
est le state-token
ou entity-tag
qui le suit imm�diatement.
If: (Not <locktoken:write1> <locktoken:write2>)
Quand cette ent�te If
est soumise avec une requ�te,
elle implique que toutes les ressources op�randes NE DOIVENT
PAS �tre verrouill�es avec locktoken:write1
mais DOIVENT �tre verrouill�es avec locktoken:write2
.
Matching
Quand l'ent�te If
est trait�e, la d�finition
de la correspondance d'un marqueur d'�tat ou d'une balise d'entit�
se fait come suit :
Correspondance d'une balise d'entit� (Matching entity tag)
: quand la balise d'entit� correspond � une balise d'entit�
associ�e � la ressource.
Correspondance d'un marqueur d'�tat (Matching state token)
: quand il y a une correspondance parfaite entre le marqueur d'�tat dans
l'ent�te If
et l'un des marqueurs d'�tat de la ressource.
If
et les proxies
non conformes � DAVLes proxies qui ne sont pas conformes � DAV ne sauront pas traiter l'ent�te
If
et HTTP impose que les ent�tes incomprises soient ignor�es.
Donc, quand on communique avec des proxies par le protocole HTTP/1.1, l'ent�te
de requ�te "Cache-Control: no-cache
" DOIT �tre
utilis�e afin d'emp�cher que le proxy essaie, mal, de satisfaire
la requ�te en utilisant sa m�moire cache. Avec les proxies HTTP/1.0
l'ent�te de requ�te "Pragma: no-cache
" DOIT
�tre utilis�e pour les m�mes raisons.
Lock-Token
Lock-Token = "Lock-Token" ":" Coded-URL
L'ent�te Lock-Token
est utilis�e dans les requ�tes
de la m�thode UNLOCK
pour identifier le marqueur de verrou
� retirer. Le marqueur de verrou sp�cifi� dans l'ent�te
de requ�te Lock-Token
DOIT identifier un verrou s'appliquant
� une ressource reconnue de l'URI requ�te (c'est � dire
s'appliquer � un membre de cette URI requ�te).
L'ent�te Lock-Token
est utilis�e dans les r�ponses
aux requ�tes de la m�thode LOCK
pour indiquer le marqueur
de verrou cr�� quand la requ�te a r�ussie et qu'un
nouveau verrou a �t� cr��.
Overwrite
Overwrite = "Overwrite" ":" ("T" | "F")
L'ent�te Overwrite
pr�cise si le serveur doit �craser
l'�tat d'une ressource destination non-nulle en cas de COPY
ou MOVE
. La valeur "F
" signifie que le serveur NE
DOIT PAS ex�cuter le COPY
ou le MOVE
si l'�tat de la ressource de destination est non-nul. si l'ent�te
overwrite
n'est pas incluse dans une requ�te COPY
ou MOVE
alors la ressource DOIT utiliser la vaeur par d�faut
"T
". Tandis que l'ent�te Overwrite
semble dupliquer
la fonctionnalit� de l'ent�te If-Match: *
de HTTP/1.1,
If-Match
s'applique uniquement � l'URI requ�te, et
pas � la Destination
d'un COPY
ou d'un MOVE
.
Si un COPY
ou un MOVE
ne peut pas s'ex�cuter
� cause de la valeur de son ent�te Overwrite
, la m�thode
DOIT alors �chouer et retourner le code d'�tat 412
(Echec de la pr�condition).
Toute ressource conforme � DAV DOIT supporter l'ent�te
Overwrite
.
Status-URI
L'ent�te de r�ponse Status-URI
peut �tre utilis�e
avec le code d'�tat 102
(traitement) pour transmettre une
information au client comme par exemple sur l'�tat d'une m�thode.
Status-URI = "Status-URI" ":" *(Status-Code Coded-URL)
; Status-Code
est d�fini en 6.1.1 de [RFC2068]
Les URI list�es dans l'ent�te sont des ressources de type source
qui ont �t� modifi�es par la m�thode en suspens.
Le code d'�tat indique si la m�thode a pu �tre appliqu�e
� la ressource identifi�e. Ainsi, par exemple, si une m�thode
MOVE
appliqu�e � une collection est en suspens et
qu'une r�ponse 102
(traitement) est retourn�e dans
l'ent�te de r�ponse Status-URI
, les URI incluses permettront
de conna�tre les ressources que la m�thode a tent� de d�placer
et quel en fut le r�sultat.
Timeout
TimeOut = "Timeout" ":" 1#TimeType
TimeType = ("Second-" DAVTimeOutVal | "Infinite" | Other) DAVTimeOutVal = 1*digit
�� Other = "Extend" field-value�� ; Voir la section
4.2 of [RFC2068]
Les clients peuvent inclure les ent�tes Timeout
dans leurs
requ�tes LOCK
. Toutefois, le serveur n'est pas oblig�
d'honorer voir m�me seulement de consid�rer ces ent�tes.
Les ent�tes Timeout
sont r�serv�es aux requ�tes
portant sur la m�thode LOCK
: les clients NE DOIVENT
PAS soumettre d'ent�te Timeout
avec toute m�thode
autre que la m�thode LOCK
.
L'ent�te Timeout
DOIT contenir au moins un TimeType
et peut en contenir plusieurs. L'objectif d'une liste de TimeType
est de pouvoir indiquer au client plusieurs valeurs et types de valeurs qui
lui soient acceptables. Le client liste les entr�es TimeType
par ordre de pr�f�rence.
Les valeurs de la r�ponse � un Timeout
DOIVENT
utiliser l'une des valeurs Second
, Infinite
, ou un
TimeType
que le client a d�clar� comme lui �tant
familier. Le serveur est en droit de supposer que le client est familier avec
n'importe lequel des TimeType
qui lui a �t� soumis
dans l'ent�te Timeout
.
Le TimeType
"Second
" sp�cifie le nombre
de secondes qui s'�couleront entre le moment ou le verrou sera accord�
par le serveur et la destruction automatique de ce verrou. La valeur de limite
de temps pour le TimeType
"Second
" NE DOIT
PAS �tre plus grand que 232-1.
Le compteur de limite de temps DEVRAIT �tre r�initialis�
� chaque fois que le propri�taire d'un verrou envoie une m�thode
� n'importe lequel des membres du verrou, y compris des m�thodes
non-support�es, ou des m�thodes qui ont �chou�es.
Toutefois, le verrou DOIT �tre rafra�chi si la m�thode
de rafra�chissement de LOCK
est re�ue avec succ�s.
Si la limite de temps est atteinte, alors le verrou peut �tre perdu.
Plus pr�cis�ment, si le serveur souhaite r�cup�rer
les verrous en d�passement de temps, il DOIT agir comme si il
ex�cutait une m�thode UNLOCK
sur la resource utilisant
le marqueur du verrou en d�passement de temps. Cela pourrait �tre
fait au titre des privil�ges que lui conf�re son autorit�
en �crasement. Des traces de cette activit� devraient alors �tre
mises � jour et indiquer l'emplacement des verrous, envoyer des notifications
etc..., exactement comme cela se fait pour les requ�tes de la m�thode
UNLOCK
.
Les serveurs sont avertis qu'ils doivent pr�ter une attention toute particuli�re aux valeurs qui leurs sont soumises par les clients, puisqu'elles seront autant d'indications quant au type d'activit� que le client a l'intention d'ex�cuter. Par exemple, une applet s'ex�cutant dans un navigateur peut avoir besoin de verrouiller une ressource ; mais � cause de l'instabilit� de l'environnement dans lequel elle s'ex�cute, elle peut tr�s bien �tre arr�t�e sans qu'aucun message d'avertissement soit �mis. En cons�quence, il est fortement probable que l'applet aura besoin d'avoir un temps limite d'ex�cution de petite dur�e de mani�re � ce que, si elle venait � mourir, le verrou pourrait �tre rapidement r�cup�r�. Toutefois, un syst�me de gestion de documents a de fortes chances d'avoir besoin de demander des dur�es de temps limite extr�mement longues parce que son utilisateur peut plannifier de continuer son travail r�dactionnel hors connexion.
Un client NE DOIT PAS se contenter de consid�rer qu'un verrou est perdu parce que le temps limite pr�vu a �t� d�pass�.
Les codes d'�tats suivants ont �t� ajout�s � ceux d�finis dans HTTP/1.1 [RFC2068].
102
: traitement Le code d'�tat 102
(Traitement) est une r�ponse
interm�diaire utilis�e pour informer le client que le serveur
a accept� la totalit� de la requ�te, mais n'a pas fini de
l'ex�cuter. Ce code d'�tat DEVRAIT �tre seulement
envoy� quand le serveur a de s�rieuses raisons de juger que la
requ�te prendra un temps significatif avant d'�tre compl�tement
termin�e. Comme consigne g�n�rale, si le serveur d�termine
qu'une m�thode prendra plus de 20 secondes (une valeur raisonnable, quoique
arbitraire) pour ex�cuter un traitement, alors il DEVRAIT retourner
une r�ponse 102
(Traitement). Le serveur DEVRA envoyer
une r�ponse finale apr�s l'accomplissement total de la requ�te.
Le traitement des m�thodes peut potentiellement prendre un certain temps,
particuli�rement celles qui supportent l'ent�te Depth
.
dans ces cas l�, le client peut interrompre sa connection avec le serveur
alors qu'il est en attente d'une r�ponse. Pour se p�munir de cela,
le serveur peut retourner un code d'�tat 102
(Traitement)
pour informer le client qu'il est toujours en train de d'ex�cuter la
m�thode.
207
: �tats
multiple Le code d'�tat 207
(�tats multiple) fournit les
�tats de plusieurs op�rations ind�pendantes (r�f�rez
vous � la section 11 pour plus d'informations).
422
: entit�
impossible � traiterLe code d'�tat 422
(entit� impossible � traiter)
signifie que le serveur comprend le type de contenu de l'entit� requ�te
(jusque l� un code 415
'type de m�dia non support�'
est inappropri�), et la syntaxe de l'entit� requ�te est
correcte (donc un code d'�tat 400
'mauvaise requ�te'
est �galement inappropri�) mais ce serveur a �t�
incapable d'ex�cuter les instructions que le corps de la requ�te
contient. Par exemple, ces conditions peuvent �tre r�unies quand
un corps de requ�te contient une instance XML bien form�e (c'est
� dire syntaxiquement correct) mais contenant des instructions XML erron�es
s�mantiquement.
423
: verrouill� Le code d'�tat 423
(verrouill�) signifie que la
ressource source ou la destination impliqu�e dans une m�thode
est verrouill�e.
424
: �chec
de d�pendanceLe code d'�tat 424
(�chec de d�pendance)
signifie que la m�thode n'a pu s'appliquer correctement � la ressource
parce que l'action demand�e par la requ�te d�pendait d'une
autre qui �choua. Par exemple, si une commande d'une m�thode PROPPATCH
�choue alors, au minimum, le reste des commandes �chouera �galement
et cela produira un code 424
(�chec de d�pendance).
507
: m�moire
insuffisanteLe code d'�tat 507
(m�moire insuffisante) signifie
que la m�thode n'a pu �tre ex�cut�e correctement
sur la ressource parce que le serveur est incapable de m�moriser la repr�sentation
n�cessaire � l'accomplissement de la requ�te. Cet �tat
est consid�r� comme �tant momentan�. Si la requ�te
qui re�u ce code d'�tat �tait le r�sultat d'une
action utilisateur, la requ�te NE DEVRAIT PAS �tre
r�p�t�e tant que cela n'est pas demand� par une
action sp�cifique de l'utilisateur.
Le corps de r�ponse par d�faut 207
(�tats
multiples) est une entit� HTTP de type text/xml ou application/xml qui
contient un seul �l�ment XML appel� multistatus
,
qui contient un ensemble d'�l�ments XML appel�s response
qui contiennent des suites de codes d'�tats 200
, 300
,
400
, et 500
g�n�r�s pendant l'invocation
de la m�thode. Les s�ries de code d'�tat 100
NE DEVRAIENT PAS �tre enr�gistr�es dans l'�l�ment
XML response
.
Dans la section ci-dessous, la ligne finale de chaque section fournit la d�claration du type de l'�l�ment en utilisant le format d�finit dans [REC-XML]. Le champ "Valeur", quand il est pr�sent, sp�cifie des restrictions additionnelles par rapport au mod�le de contenu de l'�l�ment XMl en utilisant la notation BNF (en g�n�ral, il s'agit de restreindre un peu plus les valeurs possibles d'un �l�ment XML de type PCDATA).
activelock
Nom : activelock
Espace de noms : DAV:
Objet : D�crit un verrou pos� sur une ressource.
Mod�le de contenu : <!ELEMENT activelock (lockscope,
locktype, depth, owner?, timeout?, locktoken?) >
depth
Nom : depth
Espace de noms : DAV:
Objet : La valeur de l'ent�te Depth
.
Valeur : "0" | "1" | "infinity"
Mod�le de contenu : <!ELEMENT depth (#PCDATA) >
locktoken
Nom : locktoken
Espace de noms : DAV:
Objet : le marqueur de verrou associ� � un verrou.
Description : Le href
contient une ou plusieurs URI de marqueurs
de verrous opaques qui se r�f�rent
toutes au m�me verrou (c'est � dire, la r�gle de production
de l'URI OpaqueLockToken
fournie dans la section 6.4).
Mod�le de contenu : <!ELEMENT locktoken (href+) >
timeout
Nom : timeout
Espace de noms : DAV:
Objet : La limite de temps associ�e � un verrou.
Valeur : TimeType
; D�finie � la section 9.8
Mod�le de contenu : <!ELEMENT timeout (#PCDATA) >
collection
Nom : collection
Espace de noms : DAV:
Objet : Identifie la ressource associ�e comme �tant une
collection. La propri�t� resourcetype
d'une ressource
collection DOIT avoir cette valeur.
Mod�le de contenu : <!ELEMENT collection EMPTY >
href
Nom : href
Espace de noms : DAV:
Objet : Identifie le contenu de l'�l�ment comme �tant
une URI.
Valeur :����� URI ;
Voir la section
3.2.1 of [RFC2068]
Mod�le de contenu : <!ELEMENT href (#PCDATA)>
linkNom : link
Espace de noms : DAV:
Objet : Identifie la propri�t� comme �tant un lien
et contient la source et la destination de ce lien.
Description : L'�l�ment XML link
est utilis�
pour fournir les identifiants des ressources sources et destinations d'un ou
plusieurs liens lien.�Le nom de la propri�t� qui contient
l'�l�ment XML link
fournit le type du lien.�Link
est un �l�ment multivalu�, aussi plusieurs liens peuvent
�tre d�finis ensemble pour indiquer qu'ils ont tous le m�me
type.�Les valeurs �crites dans les �l�ments XML href
qui sont dans le contenu des �l�ments src
et dst
de l'�l�ment XML link
NE DOIVENT PAS
�tre rejet�s si ils pointent vers des ressources qui n'existent
pas.
Mod�le de contenu : <!ELEMENT link (src+, dst+) >
dst
Nom : dst
Espace de noms : DAV:
Objet : Indique la destination d'un lien
Valeur :����� URI
Mod�le de contenu : <!ELEMENT dst (#PCDATA) >
src
Nom : src
Espace de noms : DAV:
Objet : Indique la source d'un lien.
Valeur : URI
Mod�le de contenu : <!ELEMENT src (#PCDATA) >
lockentry
Nom : lockentry
Espace de noms : DAV:
Objet : D�finit les types des verrous qui peuvent �tre utilis�s
avec la ressource.
Mod�le de contenu : <!ELEMENT lockentry (lockscope, locktype)
>
lockinfo
Nom : lockinfo
Espace de noms : DAV:
Objet : L'�l�ment XML lockinfo
est utilis�
avec la m�thode LOCK
pour sp�cifier le type de verrou
que le client souhaite cr�er.
Mod�le de contenu : <!ELEMENT lockinfo (lockscope, locktype,
owner?) >
lockscope
Nom : lockscope
Espace de noms : DAV:
Objet : Sp�cifie si un verrou est de type exclusif ou partag�.
Mod�le de contenu : <!ELEMENT lockscope (exclusive |
shared) >
exclusive
Nom : exclusive
Espace de noms : DAV:
Objet : Sp�cifie un verrou exclusif
Mod�le de contenu : <!ELEMENT exclusive EMPTY >
shared
Nom : shared
Espace de noms : DAV:
Objet : Sp�cifie un verrou partag�
Mod�le de contenu : <!ELEMENT shared EMPTY >
locktype
Nom : locktype
Espace de noms : DAV:
Objet : Sp�cifie le type d'acc�s d'un verrou.�Pour
l'instant, cette sp�cification ne d�finit qu'un seul type de verrou,
le verrou d'�criture.
Mod�le de contenu : <!ELEMENT locktype (write) >
write
Nom : write
Espace de noms : DAV:
Objet : Sp�cifie un verrou d'�criture.
Mod�le de contenu : <!ELEMENT write EMPTY >
multistatus
Nom : multistatus
Espace de noms : DAV:
Objet : Regroupe les messages d'�tats de plusieurs r�ponses.
Description : L'�l�ment responsedescription
au plus haut niveau est utilis� pour fournir un message g�n�ral
d�crivant la nature de la r�ponse. Quand cette valeur est disponible,
une application peut l'utiliser au lieu de pr�senter les descriptions
individuelles de chaque r�ponse.
Mod�le de contenu : <!ELEMENT multistatus (response+,
responsedescription?) >
response
Nom : response
Espace de noms : DAV:
Objet :Contient une seule r�ponse d�crivant le r�sultat
de l'application d'une m�thode sur une ressource et/ou ses propri�t�s.
Description : Un href
particulier NE DOIT PAS
appara�tre plus d'une fois en tant qu'enfant d'un �l�ment
XML response
de l'�l�ment XML multistatus
.
Cette condition est impos�e dans un soucis de conserver une croissance
lin�aire du temps de traitement des r�ponses. Cela �vite
particuli�rement d'avoir � rechercher tous les href
dans le but de regrouper ensemble les r�ponses.�Il n'y a cependant
aucune obligation quant un quelconque ordonnancement bas� sur les valeurs
des href
.
Mod�le de contenu : <!ELEMENT response (href, ((href*,
status)|(propstat+)), responsedescription?) >
propstat
Nom : propstat
Espace de noms : DAV:
Objet : regroupement des �l�ments prop
et
status
, propstat
est associ� � un �l�ment
href
particulier.
Description :
L'�l�ment XML
propstat
DOIT contenir un �l�ment XML prop
et un �l�ment XML status
. Le contenu de l'�l�ment
XML prop
DOIT uniquement lister les noms des propri�t�s
auxquelles s'appliquent les r�sultats qui se trouvent dans l'�l�ment
status
.
Mod�le de contenu : <!ELEMENT propstat (prop, status,
responsedescription?) >
status
Nom : status
Espace de noms : DAV:
Objet : Contient un seul status-line
HTTP
Valeur :�status-line
�� ; d�fini dans
[RFC2068]
Mod�le de contenu : <!ELEMENT status (#PCDATA) >
responsedescription
Nom : responsedescription
Espace de noms : DAV:
Objet : Contint un message qui peut �tre affich� �
l'utilisateur expliquant la nature de la r�ponse.
Description : Cet �l�ment XML fournit une information adapt�e
� une repr�sentation � l'utilisateur.
Mod�le de contenu : <!ELEMENT responsedescription (#PCDATA)
>
owner
Nom : owner
Espace de noms : DAV:
Objet : Fournit une information sur le demandeur qui retire un verrou.
Description : L'�l�ment XML owner
fournit
assez d'information pour qu'il soit possible, soit de contacter directement
un demandeur (comme un num�ro de t�l�phone par exemple
ou l'URI d'une adresse email), soit de trouver le demandeur (comme l'URL d'une
page d'accueil) propri�taire du verrou.
Mod�le de contenu : <!ELEMENT owner ANY>
prop
Nom : prop
Espace de noms : DAV:
Objet : Contient les propri�t�s relatives � une
ressource.
Description : L'�l�ment XML prop
est un �l�ment
structurel g�n�rique pour les propri�t�s d�finies
sur les ressources. Tous les �l�ments compris � l'int�rieur
d'un �l�ment XML prop
NE DOIVENT d�finir
QUE des propri�t�s relatives � des ressources.�
Aucun autre �l�ment ne peut �tre utilis� �
l'int�rieur d'un �l�ment prop
.
Mod�le de contenu : <!ELEMENT prop ANY>
propertybehavior
Nom : propertybehavior
Espace de noms : DAV:
Objet : Sp�cifie comment des propri�t�s sont g�r�es
pendant les op�rations COPY
et MOVE
.
Description : L'�l�ment XML propertybehavior
sp�cifie comment sont doivent �tre g�r�es certaines
propri�t�s pendant un COPY
ou un MOVE
.
Si cet �lement XML n'est pas inclus dans le corps de la requ�te
alors le serveur est sens� agir tel que d�fini dans les comportements
par d�faut des m�thodes correspondantes. Toutes les ressources
conformes � WebDav DOIVENT supporter l'�l�ment XML
propertybehavior
.
Mod�le de contenu : <!ELEMENT propertybehavior (omit
| keepalive) >
keepalive
Nom : keepalive
Espace de noms : DAV:
Objet : Sp�cifie la mani�re dont des propri�t�s
vivantes doivent �tre copi�es ou d�plac�es.
Description : Si une liste d'URI est incluse comme valeur de l'�l�ment
keepalive
, alors les propri�t�s nomm�es DOIVENT
�tre vivantes apr�s leur copie (m�thode COPY
)
ou leur d�placement (m�thode MOVE
) dans la ressource
de destination. Si le contenu de l'�l�ment XML keepalive
est "*"
, cela signifie que toutes les propri�t�s
vivantes de la ressource source DOIVENT �tre vivante dans la destination.
Si les conditions sp�cifi�es par l'�l�ment keepalive
ne peuvent pas �tre satisfaites alors la m�thode DOIT �chouer
et retourner le code 412
(�chec de pr�condition).
Toutes les ressources conformes � DAV
DOIVENT supporter
l'�l�ment XML keepalive
dans le cadre des m�thodes
COPY
et MOVE
.
Valeur :�"*
" ; seule valeur autoris�e comme
caract�re de donn�es de type #PCDATA
Mod�le de contenu : <!ELEMENT keepalive (#PCDATA | href+)
>
omit
Nom : omit
Espace de noms : DAV:
Objet : L'�l�ment XML omit
indique au serveur
qu'il doit faire tout son possible pour copier les propri�t�s
et qu'un �chec de copie d'une propri�t� NE DOIT
PAS provoquer l'�chec de la m�thode.
Description : Le comportement par d�faut des m�thodes COPY
et MOVE
est de copier/d�placer toutes les propri�t�s
ou d'�chouer. Dans certains cas, comme par exemple la copie d'une ressource
en utilisant un protocole comme FTP, il peut arriver qu'il ne soit pas possible
de copier/d�placer les propri�t�s associ�es �
la ressource copi�e/d�plac�e. Aussi, toutes les tentatives
de copie/d�placement avec FTP �choueraient toujours parce que
les propri�t�s ne pourraient pas �tre transport�es,
m�me en tant que propri�t�s mortes.�Toute les ressources
conformes � DAV
�DOIVENT supporter l'�l�ment
XML omit
avec les m�thodes COPY/MOVE
.
Mod�le de contenu : <!ELEMENT omit EMPTY >
propertyupdate
Nom : propertyupdate
Espace de noms : DAV:
Objet : Contient une requ�te pour modifier les propri�t�s
d'une ressource.
Description : Cet �l�ment XML est un �l�ment
structurel pour encadrer les informations n�cessaires � la modification
des propri�t�s d'une ressource.�Cet �l�ment
XML est multivalu�.
Mod�le de contenu : <!ELEMENT propertyupdate (remove
| set)+ >
remove
Nom : remove
Espace de noms : DAV:
Objet : Liste les propri�ts DAV
� supprimer
d'une ressource.
Description : L'�l�ment XML remove
signale
que les propri�t�s sp�cifi�es dans l'�l�ment
prop
doivent �tre supprim�es.�On pourra noter
que demander le retrait d'une propri�t� qui n'existe pas n'est
pas une erreur.� A l'int�rieur de l'�l�ment remove
,
tous les �l�ments XML sous l'�l�ment prop
DOIVENT �tre vides, puisque seuls les noms des propri�t�s
� retirer sont requis.
Mod�le de contenu : <!ELEMENT remove (prop) >
set
Nom : set
Espace de noms : DAV:
Objet : Liste les valeurs des propri�t�s DAV
qui doivent �tre initialis�es sur une ressource.
Description : L'�l�ment XML set
DOIT
contenir uniquement l'�l�ment XML prop
. Les �l�ments
contenus dans cet �l�ment prop
DOIVENT sp�cifier
le nom et la valeur des propri�t�s qui doivent �tre initialis�es
sur la ressource identifi�e par l'URI requ�te. Si une propri�t�
existe d�j� alors sa valeur est remplac�e. L'information
sur le langage utilis� dans la valeur de la propri�t� (dans
l'attribut "xml:lang
" quand il est pr�sent) DOIT
�tre enr�gistr�e de mani�re persistente avec la propri�t�,
et DOIT �tre subs�quemment accessible par la m�thode
PROPFIND
.
Mod�le de contenu : <!ELEMENT set (prop) >
propfind
Nom : propfind
Espace de noms : DAV:
Objet : Sp�cifie les propri�t�s que la m�thode
PROPFIND
doit retourner.�Il y a deux �l�ments
sp�cifiques � utiliser avec propfind
, il s'agit de�allprop
et propname
.� Si l'�l�ment prop
est utilis� � l'int�rieur de propfind
il DOIT
uniquement contenir les noms des propri�t�s, pas leurs valeurs.
Mod�le de contenu : <!ELEMENT propfind (allprop | propname
| prop) >
allprop
Nom : allprop
Espace de noms : DAV:
Objet : L'�l�ment XML allprop
sp�cifie
que tous les noms et valeurs de propri�t�s sur la ressource doivent
�tre retourn�s.
Mod�le de contenu : <!ELEMENT allprop EMPTY >
propname
Nom : propname
Espace de noms : DAV:
Objet : L'�l�ment XML propname
sp�cifie
que seule une liste de noms et valeurs de propri�t�s de la ressource
doit �tre retourn�e.
Mod�le de contenu : <!ELEMENT propname EMPTY >
Pour les propri�t�s DAV, le nom de la propri�t� est aussi le m�me que le nom de l'�l�ment XML qui contient sa valeur. Dans la section ci-dessous, la ligne finale de chaque section fournit la d�claration du type de l'�l�ment en utilisant le format d�finit dans [REC-XML]. Le champ "Valeur", l� o� il est pr�sent, pr�cise les �venuelles restrictions qu'il peut y avoir sur le contenu autoris� de l'�l�ment XML en utilisant la notation BNF (c'est � dire, pour restreindre les valeurs du contenu des �l�ments dont le mod�le de contenu est PCDATA).
creationdate
Nom : creationdate
Espace de noms : DAV:
Objet : Enregistre l'heure et la date � laquelle la ressource
a �t� cr��e.
Valeur : date-time
; se r�f�rer � l'annexe
2
Description : La propri�t� creationdate
devrait
�tre d�finie pour toute ressource conforme � DAV.�
Quand elle est pr�sente, elle contient le cachet de la date de cr�ation
de la ressource (d�finie comme �tant le moment � partir
duquel son �tat n'�tait plus nul).
Mod�le de contenu : <!ELEMENT creationdate (#PCDATA)
>
displayname
Nom : displayname
Espace de noms : DAV:
Objet : Contient un nom de ressource qui soit adapt� �
la lecture par un utilisateur.
Description : La propri�t� displayname
devrait
�tre d�finie pour toute ressource conforme � DAV.�
Quand elle existe, la propri�t� contient une description de la
ressource adapt�e � sa pr�sentation � un utilisateur.
Mod�le de contenu : <!ELEMENT displayname (#PCDATA) >
getcontentlanguage
Nom : getcontentlanguage
Espace de noms : DAV:
Objet : Contient l'ent�te Content-Language
retourn�e
en r�ponse � un GET
sans ent�te accept
Description : La propri�t� getcontentlanguage
DOIT �tre d�finie pour toute ressource conforme �
DAV qui retourne l'ent�te Content-Language
suite �
un GET
.
Valeur : language-tag
; language-tag
est d�fini
� la section 14.13 de [RFC2068]
Mod�le de contenu : <!ELEMENT getcontentlanguage (#PCDATA)
>
getcontentlength
Nom : getcontentlength
Espace de noms : DAV:
Objet : Contient l'ent�te Content-Length
retourn�e
en r�ponse � un GET
sans ent�te accept
.
Description : La propri�t� getcontentlength
DOIT �tre d�finie pour toute ressource conforme �
DAV qui retourne l'ent�te Content-Length
en r�ponse
� un GET
.
Valeur : content-length
; Voir la section 14.14 of [RFC2068]
Mod�le de contenu : <!ELEMENT getcontentlength (#PCDATA)
>
getcontenttype
Nom : getcontenttype
Espace de noms : DAV:
Objet : Contient l'ent�te Content-Type
retourn�e
en r�ponse � un GET
sans ent�te accept
.
Description : Cette propri�t� getcontenttype
DOIT �tre d�finie pour toute ressource conforme �
DAV qui retourne l'ent�te Content-Type
en r�ponse
� un GET
.
Valeur : media-type
�; D�finie � la section
3.7 de [RFC2068]
Mod�le de contenu : <!ELEMENT getcontenttype (#PCDATA)
>
getetag
Nom : getetag
Espace de noms : DAV:
Objet : Contient l'ent�te ETag
retourn�e en
r�ponse � un GET
sans ent�te accept
.
Description : La propri�t� getetag
DOIT
�tre d�finie pour toute ressource conforme � DAV qui retourne
l'ent�te Etag
.
Valeur : entity-tag
�; D�finie � la section
3.11 de [RFC2068]
Mod�le de contenu : <!ELEMENT getetag (#PCDATA) >
getlastmodified
Nom : getlastmodified
Espace de noms : DAV:
Objet : Contient l'ent�te Last-Modified
retourn�e
en r�ponse � un GET
sans ent�te accept
.
Description : Remarquez que la date de derni�re modification d'une
ressource peut �tre le reflet de changements � n'importe quel endroit
de la ressource, pas n�cessairement un changement qui serait seulement
cons�cutif � un GET
.� Par exemple, le changement
d'une propri�t� peut, � lui seul, provoquer le changement
de la date de derni�re modificationa. La propri�t� getlastmodified
DOIT �tre d�finie pour toute ressource conforme �
DAV qui renvoie l'ent�te Last-Modified
en r�ponse
� un GET
.
Valeur : HTTP-date
; D�finie � la section
3.3.1 of [RFC2068]
Mod�le de contenu : <!ELEMENT getlastmodified (#PCDATA)
>
lockdiscovery
Nom : lockdiscovery
Espace de noms : DAV:
Objet : D�crit les verrous actifs des ressources
Description : La propri�t� lockdiscovery
retourne
une liste des ressources qui ont un verrou, de quel type de verrou il s'agit,
le type de limite de temps et le temps restant avant expiration du temps limite,
et le marqueur de verrou associ�.� Le serveur est libre de cacher
toute ou partie de cette information si le demandeur qui en fait la demande
n'a pas les privil�ges suffisants pour voir les donn�es demand�es.
Mod�le de contenu : <!ELEMENT lockdiscovery (activelock)*
>
lockdiscovery
>>Requ�te
PROPFIND /container/ HTTP/1.1
Host: www.foo.bar
Content-Length: xxxx
Content-Type: text/xml; charset="utf-8"
�� <?xml version="1.0" encoding="utf-8" ?>
�� <D:propfind xmlns:D='DAV:'>
���� <D:prop><D:lockdiscovery/></D:prop>
�� </D:propfind>
>>R�ponse
HTTP/1.1 207 Multi-Status
Content-Type: text/xml; charset="utf-8"
Content-Length: xxxx
�� <?xml version="1.0" encoding="utf-8" ?>
�� <D:multistatus xmlns:D='DAV:'>
���� <D:response>
��������� <D:href>http://www.foo.bar/container/
��������� <D:propstat>
��������������
<D:prop>
�������������������
<D:lockdiscovery>
������������������������
<D:activelock>
�����������������������������
<D:locktype><D:write/></D:locktype>
�����������������������������
<D:lockscope><D:exclusive/></D:lockscope>
�����������������������������
<D:depth>0</D:depth>
�����������������������������
<D:owner>Jane Smith</D:owner>
�����������������������������
<D:timeout>Infinite</D:timeout>
�����������������������������
<D:locktoken>
����������������������������������
<D:href>opaquelocktoken:f81de2ad-7f3d-a1b2-4f3c-00a0c91a9d76</D:href>
�����������������������������
</D:locktoken>
������������������������
</D:activelock>
�������������������
</D:lockdiscovery>
��������������
</D:prop>
��������������
<D:status>HTTP/1.1 200 OK</D:status>
��������� </D:propstat>
���� </D:response>
�� </D:multistatus>
Cette ressource a un seul verrou exclusif en �criture, avec une limite de temps infinie.
resourcetype
Nom : resourcetype
Espace de noms : DAV:
Objet : Sp�cifie la nature de la ressource.
Description : La propri�t� resourcetype
DOIT
�tre d�finie pour toute ressource conforme � DAV.�
La valeur par d�faut est vide.
Mod�le de contenu : <!ELEMENT resourcetype ANY >
source
Nom : source
Espace de noms : DAV:
Objet : La propri�t� source
permet de conna�tre
la ressource qui contient la source du lien avant son traitement.
Description : La source du lien (src
) est typiquement l'URI
de la ressource de sortie sur laquelle le lien est d�fini, et il n'y
a, en g�n�ral, qu'une seule destination (dst
) �
ce lien, qui est l'URI � laquelle la source non trait�e de la
ressource peut �tre acc�d�e.�Quand plus d'un lien de
destination existe, cette sp�cification n'introduit pas de politique
d'ordonnancement.
Mod�le de contenu : <!ELEMENT source (link)* >
source
�� <?xml version="1.0" encoding="utf-8" ?>
�� <D:prop xmlns:D="DAV:" xmlns:F="http://www.foocorp.com/Project/">
���� <D:source>
��������� <D:link>
��������������
<F:projfiles>Source</F:projfiles>
��������������
<D:src>http://foo.bar/program</D:src>
��������������
<D:dst>http://foo.bar/src/main.c</D:dst>
��������� </D:link>
��������� <D:link>
��������������
<F:projfiles>Library</F:projfiles>
��������������
<D:src>http://foo.bar/program</D:src>
��������������
<D:dst>http://foo.bar/src/main.lib</D:dst>
��������� </D:link>
��������� <D:link>
��������������
<F:projfiles>Makefile</F:projfiles>
��������������
<D:src>http://foo.bar/program</D:src>
��������������
<D:dst>http://foo.bar/src/makefile</D:dst>
��������� </D:link>
���� </D:source>
�� </D:prop>
Dans cet exemple, la ressource http://foo.bar/program
a une propri�t� source
qui contient trois liens.
Chaque lien contient trois �l�ments, deux (src
et
dst
) font partie du sch�ma DAV d�fini dans le pr�sent
document et l'un (projfiles
) est d�finie dans le sch�ma
http://www.foocorp.com/project/
(Source
, Library
, et Makefile
). Un client
qui n'impl�menterait que les �l�ments de la sp�cification
DAV ne comprendrait pas les �l�ments du sch�ma foocorp
et les ignorerait, ne voyant ainsi que les les liens source et destination.
Un client plus �volu�, capable d'exploiter les �l�ments
du sch�ma foocorp
, serait capable de pr�senter �
l'utilisateur plus d'informations relatives aux liens. Cet exemple d�montre
la puissance du balisage XML, qui permet aux valeurs d'�l�ments
d'�tre exploit�es ou non en fonction des capacit�s des clients.
supportedlock
Nom : supportedlock
Espace de noms : DAV:
Objet : Propri�t� utilis�e pour obtenir la liste
des possibilit�s de v�rouillage support�es par la ressource.
Description : La propri�t� supportedlock
d'une
ressource retourne une liste des combinaisons des types d'acc�s et de
port�e qui peuvent �tre sp�cifi�es dans une requ�te
de v�rouillage sur une ressource. Remarquez que les contenus r�els
sont eux-m�mes contr�l�s par des contr�les d'acc�s
de mani�re � ce qu'un serveur ne soit jamais tenu de communiquer
une information � un client qui ne serait pas autoris� �
la recevoir.
Mod�le de contenu : <!ELEMENT supportedlock (lockentry)*
>
supportedlock
>>Requ�te
PROPFIND /container/ HTTP/1.1
Host: www.foo.bar
Content-Length: xxxx
Content-Type: text/xml; charset="utf-8"
�� <?xml version="1.0" encoding="utf-8" ?>
�� <D:propfind xmlns:D="DAV:">
���� <D:prop><D:supportedlock/></D:prop>
�� </D:propfind>
>>R�ponse
HTTP/1.1 207 Multi-Status
Content-Type: text/xml; charset="utf-8"
Content-Length: xxxx
�� <?xml version="1.0" encoding="utf-8" ?>
�� <D:multistatus xmlns:D="DAV:">
���� <D:response>
��������� <D:href>http://www.foo.bar/container/</D:href>
��������� <D:propstat>
��������������
<D:prop>
�������������������
<D:supportedlock>
������������������������
<D:lockentry>
�����������������������������
<D:lockscope><D:exclusive/></D:lockscope>
�����������������������������
<D:locktype><D:write/></D:locktype>
������������������������
</D:lockentry>
������������������������
<D:lockentry>
�����������������������������
<D:lockscope><D:shared/></D:lockscope>
�����������������������������
<D:locktype><D:write/></D:locktype>
������������������������
</D:lockentry>
�������������������
</D:supportedlock>
��������������
</D:prop>
��������������
<D:status>HTTP/1.1 200 OK</D:status>
��������� </D:propstat>
���� </D:response>
�� </D:multistatus>
Toute ressource conforme DAV DOIT ignorer tout �l�ment XML inconnu et tous ces enfants rencontr�s pendant le traitement d'une m�thode DAV utilisant XML comme langage de commande.
Cette restriction s'applique �galement au traitement, par des clients, de valeurs de propri�t�s DAV dans lesquelles les �l�ments XML inconnus DOIVENT �tre ignor�s � moins que le mod�le de la propri�t� en d�cide autrement.
Cette restriction ne s'applique pas � l'initialisation de propri�t�s DAV mortes sur le serveur pour lesquelles le serveur DOIT enregistrer les �l�ments XML inconnus.
De plus, cette restriction ne s'applique pas � l'utilisation d' XML
quand il se trouve que XML est le type de contenu du corps de l'entit�,
par exemple, quand il est utilis� dans le corps d'un PUT
.
Puisque que XML peut �tre transport� sous les types text/xml
ou application/xml
, un serveur DAV DOIT accepter les requ�tes
des m�thodes DAV ayant des param�tres XML d�clar�s
de types text/xml
ou application/xml
, et un client
DAV DOIT accepter des r�ponses XML exprim�es sous la forme
de types text/xml
ou application/xml
.
Il existe deux classes de conformit� � DAV. Un client peut d�couvrir
les classes de conformit� d'une ressource en ex�cutant la m�thode
OPTIONS
sur la ressource, et en examinant l'ent�te "DAV"
qui est alors retourn�.
Puisque ce document d�crit des extensions au protocole HTTP/1.1, toutes les ressources conformes � DAV, les clients et les proxies DOIVENT �tre, au minimum, conformes � [RFC2068].
Les classes de conformit� ne se suivent pas n�cessairement de mani�re lin�aire. Une ressource qui est conforme � la classe 2 DOIT aussi �tre conforme � la classe 1 ; mais si des classes de conformit� compl�mentaires sont d�finies ult�rieurement, une ressource qui est conforme aux classes 1, 2, et 4 pourrait tr�s bien ne pas �tre conforme � la classe 3. Remarquez aussi que les nombres ne sont pas les seuls identifiants possibles des classes de conformit�.
Une ressource conforme de classe 1 DOIT satisfaire � toutes les exigences de toutes les sections de ce document.
Une ressource conforme de classe 1 DOIT retourner, au minimum, la valeur
"1
" dans l'ent�te DAV de r�ponse � la m�thode
OPTIONS
.
Une ressource conforme de classe 2 DOIT satisfaire toutes les conditions
de classe "1
" et supporter la m�thode LOCK
,
la propri�t� supportedlock
, la propri�t�
lockdiscovery
, l'ent�te de r�ponse Time-Out
et l'ent�te de requ�te Lock-Token
. Une ressource conforme
de classe "2
" DEVRAIT aussi supporter l'ent�te de
requ�te Time-Out
et l'�l�ment XML owner
.
Les ressources conformes de classe "2
" DOIVENT
retourner, au minimum, les valeurs "1
" et "2
" dans
l'ent�te DAV de r�ponse � la m�thode OPTIONS
.
Au royaume de l'internationalisation, cette sp�cification est conforme
avec la politique de l'IETF sur les jeux de caract�res [RFC2277].
Dans cette sp�cification, des champs humainement lisibles peuvent �tre
trouv�s soit sous la forme de valeurs de propri�t�s, soit
de messages d'erreur retourn�s dans le corps d'une entit� r�ponse.
Dans les deux cas, le contenu humainenement lisible est cod� en utilisant
XML, qui donne tr�s pr�cis�ment les r�gles de balisage
et d'encodage des jeux de caract�res, et exige des processeurs XML qu'ils
sachent lire des �l�ments XML cod�s, au minimum, en utilisant
l'UTF-8 [UTF-8] du niveau multilangue de l'ISO 10646. Les exemples XML de cette
sp�cification montrent l'utilisation du param�tre charset
de l'ent�te Content-Type
, tel que d�fini dans [RFC2376],
tout comme l'attribut encoding
de XML, qui permettent aux processeurs
MIME
et XML
d'identifier le jeu de caract�res
utilis�.
XML fournit aussi la possibilit� de balisage du langage permettant de
sp�cifier le langage utilis� dans le contenu sp�cifique
d'un �l�ment XML. XML utilise soit les balises de langue d�pos�es
� l'IANA (se r�f�rer � [RFC1766])
soit les balises de langue de l'ISO 639 [ISO-639] dans l'attribut "xml:lang
"
de tout �l�ment XML et qui permet d'en identifier la langue utilis�e
tant au niveau de son contenu que de ses attributs.
Les applications WebDAV DOIVENT supporter les balises relatives aux
jeux de caract�res, l'encodage des caract�res, et les fonctionnalit�s
des balises relativess aux langues de la sp�cification XML. Les d�veloppeurs
d'applications WebDav sont fortement encourag�s � lire "XML Media
Types" [RFC2376] pour conna�tre les instructions
sur l'utilisation des types MIME
pour le transport des donn�es
XML, et sur l'utilisation du param�tre charset
de l'ent�te
Content-Type
.
Les noms utilis�s dans cette sp�cification se d�composent en trois cat�gories: les noms des �l�ments du protocole telles que ceux des m�thodes et des ent�tes, les noms d'�l�ments XML, et les noms de propri�t�s. Le nommage des �l�ments du protocole suit ce qui a d�j� �t� fait pour HTTP, utilisant des noms anglais cod�s en ASCII am�ricain pour les m�thodes et les ent�tes. A partir du moment o� ces �l�ments du protocole sont invisibles aux utilisateurs, et ne sont, en fait, que de simples identifiants d'unit�s lexicales longues, ils n'ont pas besoin de supporter plusieurs types d'encodages de caract�res. De la m�me mani�re, m�me si les noms des �l�ments XML utilis�s dans cette sp�cification sont anglais et encod�s en UTF-8, ils sont invisibles pour les utilisateurs, et n'ont donc pas besoin de supporter plusieurs sortes d'encodage de caract�res.
Le nom d'une propri�t� d�finie sur une ressource est une URI. Bien que quelques applications (par exemple, un visualiseur de propri�t�s g�n�rique) affichera les URI des propri�t�s directement aux utilisateurs, on s'attend � ce que la plupart des applications utilisent un ensemble stable de propri�t�s, et fourniront des correspondances entre l'URI d'un nom de propri�t� et un champ humainement lisible pour les besoins de l'affichage aux utilisateurs. C'est seulement dans le cas o� l'ensemble des propri�t�s est inconnu � l'avance qu'une application ne pourra faire autrement que de pr�senter aux utilisateur les URI des noms des propri�t�s. Nous recommandons que les applications fournissent, chaque fois que cela est possible, des noms humainement lisibles de propri�t�s.
Pour les comptes-rendus d'erreurs, nous suivons la convention des codes d'�tat
de HTTP/1.1, incluant avec chaque code d'�tat une br�ve description
en anglais du code (par exemple 423
(Locked
)). Alors
qu'il est possible qu'un programme utilisateur n'ayant pas un d�veloppement
pouss� se contente d'afficher ce message � l'utilisateur, les
applications internationales le remplaceront par un message circonstanci�,
traduit dans la langue natale de l'utilisateur et en utilisant le jeu de caract�re
ad�quate.
Puisque les traitements entre les serveurs et les clients n'exige pas que l'information soit localis�e, cette sp�cification ne pr�cise aucun m�canisme de transmission d'une telle information.
Cette section contient des consid�rations d�taill�es quant � la s�curit� et leurs cons�quences sur les applications WebDav d�velopp�es.
Toutes les consid�rations sur la s�curit� de HTTP/1.1 (discut�es dans [RFC2068]) et XML (discut�es dans [RFC2376]) s'appliquent �galement � WebDAV. De plus, les risques inh�rents � la r�daction � distance exige une technologie d'authentication plus forte, introduit quelques nouveaux probl�mes de confidentialit�, et peut accro�tre les risques avec les serveurs mal con�us. Ces consid�rations sont discut�es ci-dessous.
Par leur caract�ristique principale qui est d'assurer des fonctions orient�es sur la r�daction, les serveurs WebDav ont besoin d'utiliser des techniques d'authentification pour prot�ger pas seulement l'acc�s a une ressource quelconque du r�seau , mais �galement l'int�grit� de cette m�me ressource. De plus, l'introduction des fonctions de verrouillage exige de supporter les m�canismes d'authentification.
Un mot de passe envoy� sur un canal non s�curis� et "en clair" est un moyen inadapt� d'assurer la s�curit� d'acc�s et d'int�grit� d'une ressource puisque ce mot de passe pourrait �tre intercept�. Puisque l'authentification de base d'HTTP/1.1 effectue essentiellement une transmission en clair du mot de passe, une simple authentication NE DOIT PAS �tre utilis�e pour authentifier un client WebDav � un server sauf en cas de connection s�curis�e. De plus, un serveur WebDav NE DOIT PAS envoyer de simples certificats d'authentification dans une ent�te d'authentification WWW � moins que la connection ne soit s�curis�e. Des exemples de connections s�curis�es sont les syst�mes "Transport Layer Security (TLS)" employant une s�rie de chiffres forts avec authentification mutuelle du client et du serveur, ou une connection sur un r�seau qui est physiquement s�curis�, par exemple, un r�seau isol� dans un immeuble avec des droits d'acc�s restreints.
Les applications WebDAV DOIVENT supporter le sch�ma d'authentification
Digest
[RFC2069]. Puisque le syst�me
d'authentification Digest
v�rifie que les deux parties d'une
communication connaissent un secret partag�, un mot de passe, sans avoir
� l'�changer en clair, l'authentification Digest
�vite les probl�mes de s�curit� inh�rents
� l'authentification simple tout en fournissant un niveau d'authentication
qui soit utile dans un grand nombre de cas.
Les attaques par blocage du service doivent �tre un sujet d'attention particulier pour les serveurs WebDav. WebDAV avec HTTP permettent ce genre d'attaques � plusieurs niveaux des ressources du syst�me.
La m�moire sous-jacente peut �tre attaqu�e en d�posant
par PUT
des fichiers extr�mement grands.
Demander des op�rations r�cursives sur des grandes collections peut �tre une attaque contre les temps de traitement afin de d�grader les performances.
Construire plusieurs requ�tes encha�n�es les unes derri�re les autres sur plusieurs connections peut �tre une attaque contre les connections du r�seau.
Les serveurs WebDAV ont besoin d'�tre prot�g�s � tous les niveaux contre ces tentatives de blocage du service.
WebDAV fournit, au travers de la m�thode PROPFIND
, un m�canisme
permettant de lister les ressources membres d'une collection. Cela diminue grandement
l'efficacit� des techniques de s�curit� et de confidentialit�
qui s'appuient sur la difficult� � trouver le nom des ressources
d'un r�seau. Les utilisateurs de serveurs WebDav sont encourag�s
� utiliser des techniques de contr�le d'acc�s afin de pr�venir
tout acc�s ind�sirable aux ressources, plut�t que de s'appuyer
sur le seul masquage du nom des ressources.
Quand on soumet une requ�te de verrouillage, un agent utilisateur peut
aussi permettre de soumettre un champ XML owner
qui contient l'information
de contact de la personne qui retirera le verrou (pour les cas o� une
personne, plut�t qu'un robot, retirerait le verrou). Cette information
de contact est enr�gistr�e dans la propri�t� lockdiscovery
de la ressource, et peut �tre utilis�e par d'autres collaborateurs
pour entamer une n�gociation d'acc�s � la ressource. Toutefois,
dans de nombreux cas, cette information de contact peut et doit rester priv�e.
Les serveurs DEVRAIENT limiter l'acc�s en lecture � la
propri�t� lockdiscovery
que dans des cas appropri�s.
De plus, les agents utilisateurs DEVRAIENT fournir un moyen permettant
de contr�ler si l'information de contact doit �tre envoy�e
totalement, et que si elle est envoy�e, contr�ler exactement ce
qui est envoy�.
Puisque les valeurs de propri�t�s sont typiquement utilis�es pour stocker de l'information telle que le nom de l'auteur du document, il y a l� une possibilit� pour que des probl�mes de confidentialit� appara�ssent � cause des possibilit�s d'acc�s extr�mement larges aux donn�es des propri�t�s des ressources. Pour r�duire le risque de divulgation intempestive d'information priv�e via les propri�t�s, les serveurs sont encourag�s � d�velopper des politiques d'acc�s qui s�parent les droits d'acc�s en lecture au corps de la ressource de celui de lecture de ses propri�t�s. Cela permet � un utilisateur de contr�ler la diffusion des donn�es des propri�t�s sans pour autant devoir r�duire les droits d'acc�s � la ressource elle-m�me.
HTTP/1.1 est prot�g� contre le risque d'attribution de droits d'acc�s en lecture � des codes scripts parce qu'ils peuvent contenir des informations sensibles. D'ores et d�j�, WebDAV, au travers de sa fonction de lien source, peut potentiellement fournir une URI � des ressources script pour qu'elles puissent �tre �crites. Avec HTTP/1.1, un serveur pouvait raisonnablement prot�ger l'acc�s aux ressources sources � cause de la pr�dominence des acc�s de type "lecteure seule". WebDAV, avec son orientation franchement marqu�e pour la r�daction, encourage les acc�s en lecture/�criture sur les ressources, et fournit la fonction de lien source pour identifier la source. Cela r�duit les b�n�fices de la s�curit� qui consistait � emp�cher l'acc�s aux ressources source. Les utilisateurs et les administrateurs des serveurs WebDav doivent �tre tr�s vigilents quand ils autoriseront la r�daction � distance de scripts, limitant les acc�s en lecture et �criture aux ressources source aux seuls demandeurs autoris�s.
XML supporte une fonctionalit� connue sous le nom "entit�s externes", d�finie � la section 4.2.2 de [REC-XML], qui signifie au processeur XML d'aller chercher et d'inclure un fragment XML se trouvant � une URI particuli�re. Une entit� XML externe peut �tre utilis�e pour ajouter un morceau ou modifier une D�claration de Type de Document (DTD) associ�e � un document XML. Une entit� XML externe peut �galement �tre utilis�e pour inclure un contenu XML � l'int�rieur d'un document XML. En ce qui concernen les fragments XML non-validant, comme par exemple le XML utilis� dans cette sp�cification, l'inclusion d'entit�s externes XML n'est pas une exigence de [REC-XML]. Toutefois, [REC-XML] dit clairement qu'un processeur XML peut, � sa discr�tion, inclure l'entit� XML externe.
Les entit�s externes XML n'ont pas de fiabilit� intrins�que
et sont sujettes � toutes les attaques qui sont end�miques �
toute requ�te GET HTTP
. Plus encore, une entit� XML
externe peut modifier la DTD, et finalement affecter la forme finale d'un document
XML, dans le pire des cas, elle peut modifier de fa�on significative
sa s�mantique, ou exposer le processeur XML aux risques concernant la
s�curit� discut�s dans [RFC2376].
Par cons�quence, les d�veloppeurs DOIVENT �tre avertis
que les entit�s XML externes qui peuvent �tre trait�es ne
sont pas fiables.
Il y a �galement un risque d'�chelle qui arriverait si une application largement d�ploy�e faisait l'usage d'entit� XML externes. Dans ce cas, il est possible qu'il puisse y avoir un nombre significatif de requ�tes pour une seule et m�me entit� XML externe, cela pouvant potentiellement surcharger tout serveur g�n�rant des requ�tes pour la ressource contenant l'entit� XML externe.
Cette sp�cification, dans sa section 6.4, exige l'utilisation des Identifiants
Uniques Universel (Universal Unique Identifiers -UUID-) pour les marqueurs de
verrous, afin de garantir leur unicit� dans le temps et l'espace. Les
UUIDs, tels que d�finis dans [ISO- 11578], contiennent un champ "node
"
qui "consiste en l'adresse IEEE, qui, d'habitude, est celle de l'ordinateur.
Pour les syst�mes qui ont plusieurs noeuds IEEE 802, toute adresse disponible
de noeud peut �tre utilis�e." Puisqu'un serveur WebDav produira
beaucoup de verrous au cours de sa vie, la cons�quence est qu'il va aussi
publiquement exposer ses addresses IEEE 802.
Il y a plusieurs risques cons�cutifs � l'exposition d'adresses IEEE 802. En utilisant les adresses IEEE 802 :
Dans la section 6.4.1 de cette sp�cification, on y d�taille un
m�canisme alt�rnatif pour g�n�rer le champs "node
"
d'une UUID sans utiliser une adresse IEEE 802, ce qui all�ge les risques
associ�s � l'exposition des adresses IEEE 802 par utilisant d'une
source alternative d'unicit�.
Ce document d�finit deux espaces de noms, l'un s'applique aux noms de propri�t�s l'autre aux �l�ments XML sp�cifiques � WebDav utilis�s pour les valeurs des propri�t�s.
Des URIs sont utilis�es dans les deux cas de figures et cela pour plusieurs raisons. L'usage d'une URI n'impose aucune d�marche administrative de d�p�t aupr�s d'un organisme officiel de nomage faisant autorit�, donc cela permet aux utilisateurs de d�finir rapidement les noms des propri�t�s WebDav et des �l�ments XML utilis�s par eux-m�mes ou des applications de WebDav. Les URI fournissent �galement un espace d'adressage unique garantissant que les utilisateurs distribu�s de WebDav n'auront aucune collision entre des noms de propri�t�s ou d'�l�ments XML qu'ils auront cr��s.
Cette sp�cification d�finit des ensembles distincts pour les
noms de propri�t�s et les noms d'�l�ments XML qui
sont compris par toutes les applications WebDav. Les noms des propri�t�s
et des �l�ments XML de cette sp�cification sont tous d�riv�s
de l'URI de base DAV:
et en lui ajoutant un suffixe : par exemple
"
" pour la propri�t�
"DAV:creationdate
creationdate
".
Cette sp�cification d�finit �galement un plan d'URI pour
l'encodage des marqueurs de verrous : le plan d'URI opaquelocktoken
d�crit dans la section 6.4.
Pour garantir une int�rop�rabilit� correcte bas�e
sur cette sp�cification, IANA DOIT r�server les espaces
de noms "DAV:
" et "opaquelocktoken:
" � l'usage
de cette sp�cification, ses r�visions, et les sp�cifications
relatives � WebDav.
La notice suivante a �t� copi�e de RFC 2026 [RFC2026], section 10.4, et d�crit la position de l'IETF concernant les r�clamations de propri�t� intellectuelle qui pourraient concerner ce document.
L'IETF ne prend aucune position quant � la validit� ou l'�tendue d'une quelconque propri�t� intellectuelle ou autres droits qui pourraient �tre r�clam�s pour son impl�mentation ou utiliser d'autre technologie d�crite dans ce document ou l'�tendue � laquelle toute licence sous de tels droits pourrait ou ne pourrait pas �tre disponible ; ni m�me repr�sente qu'un quelconque effort n'ait �t� fait pour identifier l'existence de tels droits. Les informations sur les proc�dures de l'IETF relatives au droits sur la documentation des standards eux m�mes ou leur documentation d�riv�e peuvent �tre trouv�e dans le BCP-11. Les copies des r�clamations de droits applicables aux publications ainsi que toute assurance de licences � rendre disponible, ou le r�sultat d'une tentative faite pour obtenir une licence g�n�rale ou la permission de pouvoir utiliser de tels droits de propri�t�s par les int�grateurs ou les utilisateurs de cette sp�cification peuvent �tre obtenus au secr�tariat de l'IETF.
L'IETF invite toute personne int�ress�e � porter � son attention tous les droits d'auteurs, brevets ou applications de brevet, ou tout autre droit de propri�t� qui pourrait couvrir la technologie qui pourrait �tre requise pour mettre en pratique ce standard. Nous vous remercions dans ce cas d'adresser cette information au directeur Ex�cutif de l'IETF.
La r�ussite d'une sp�cification telle que celle-l� repose sur les relectures attentives et critiques et d�p�rit en cas d'indiff�rence par n�gligence. Les auteurs expriment leur grande reconnaissance aux personnes qui ont contribu� � son �laboration et dont les noms suivent, dont la perspicacit� fut tellement appr�ciable � chaque �tape de notre travail.
Terry Allen, Harald Alvestrand, Jim Amsden, Becky Anderson, Alan Babich, Sanford Barr, Dylan Barrell, Bernard Chester, Tim Berners- Lee, Dan Connolly, Jim Cunningham, Ron Daniel, Jr., Jim Davis, Keith Dawson, Mark Day, Brian Deen, Martin Duerst, David Durand, Lee Farrell, Chuck Fay, Wesley Felter, Roy Fielding, Mark Fisher, Alan Freier, George Florentine, Jim Gettys, Phill Hallam-Baker, Dennis Hamilton, Steve Henning, Mead Himelstein, Alex Hopmann, Andre van der Hoek, Ben Laurie, Paul Leach, Ora Lassila, Karen MacArthur, Steven Martin, Larry Masinter, Michael Mealling, Keith Moore, Thomas Narten, Henrik Nielsen, Kenji Ota, Bob Parker, Glenn Peterson, Jon Radoff, Saveen Reddy, Henry Sanders, Christopher Seiwald, Judith Slein, Mike Spreitzer, Einar Stefferud, Greg Stein, Ralph Swick, Kenji Takahashi, Richard N. Taylor, Robert Thau, John Turner, Sankar Virdhagriswaran, Fabio Vitali, Gregory Woodhouse, and Lauren Wood.
Nous r�servons une mention sp�ciale � deux personnes parmi cette liste. Les contributions de Larry Masinter fut incalculable, � la fois en aidant � la cr�ation de ce groupe de travail et en guidant patiemment les auteurs tout au long de leur chemin. Il a tant de fois contribu� � la mise en place de grands standards que cela nous aurait fait de la peine de ne pas le rencontrer. La contribution de Judith Slein qui a port� sur la clarification de l'expression de besoins, et dans sa relecture patiente brouillons apr�s brouillons, les deux ont ainsi sensiblement contrinu� � l'am�lioration de cette sp�cification et nos ont permis d'augmenter notre connaissance sur la gestion des documents.
Nous aimerions �galement remercier John Turner pour le d�veloppement de la DTD XML.
[RFC1766] Alvestrand, H., "Tags for the Identification
of Languages", RFC 1766, March 1995.
[RFC2277]�Alvestrand, H., "IETF Policy on Character
Sets and Languages", BCP 18, RFC 2277, January 1998. �� [RFC2119]�Bradner,
S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC
2119, March 1997.
[RFC2396]�Berners-Lee,T., Fielding,
R. and L. Masinter, "Uniform Resource Identifiers (URI): Generic Syntax", RFC
2396, August 1998.
[REC-XML-NAMES] T. Bray, D. Hollander, A. Layman, "Namespaces in XML".
World Wide Web Consortium Recommendation REC- xml-names-19990114. http://www.w3.org/TR/1999/REC-
xml-names-19990114/
[REC-XML]�T. Bray, J. Paoli, C. M. Sperberg-McQueen, "Extensible Markup
Language (XML)." World Wide Web Consortium Recommendation REC-xml-19980210.
http://www.w3.org/TR/1998/REC-xml-19980210.
[RFC2069]�Franks, J., Hallam-Baker, P.,
Hostetler, J., Leach, P, Luotonen, A., Sink, E. and L. Stewart, "An Extension
to HTTP :� Digest Access Authentication", RFC 2069, January 1997. ��
[RFC2068]�Fielding, R., Gettys, J., Mogul, J.,
Frystyk, H. and T. Berners-Lee, "Hypertext Transfer Protocol -- HTTP/1.1", RFC
2068, January 1997. ��
[ISO-639]�ISO (International Organization for Standardization). ISO 639:1988.
"Code for the representation of names of languages." ��
[ISO-8601]�ISO (International Organization for Standardization). ISO 8601:1988.
"Data elements and interchange formats - Information interchange - Representation
of dates and times." ��
[ISO-11578]�ISO (International Organization for Standardization). ISO/IEC
11578:1996. "Information technology - Open Systems Interconnection - Remote
Procedure Call (RPC)" ��
[RFC2141]�Moats, R., "URN Syntax", RFC 2141,
May 1997. ��
[UTF-8]�Yergeau, F., "UTF-8, a transformation format of Unicode and ISO
10646", RFC 2279, January 1998.
[RFC2026] Bradner, S., "The Internet Standards Process
- Revision 3", BCP 9, RFC 2026, October 1996.
[RFC1807] Lasher, R. and D. Cohen, "A Format for
Bibliographic Records", RFC 1807, June 1995.
[WF]C. Lagoze, "The Warwick Framework: A Container Architecture for Diverse
Sets of Metadata", D-Lib Magazine, July/August 1996. http://www.dlib.org/dlib/july96/lagoze/07lagoze.html��
[REC-PICS] J. Miller, T. Krauskopf, P.
Resnick, W. Treese, "PICS Label Distribution Label Syntax and Communication
Protocols" Version 1.1, World Wide Web Consortium Recommendation REC-PICS-labels-961031.
http://www.w3.org/pub/WWW/TR/REC-PICS-labels-961031.html.
[USMARC] Network Development and MARC Standards, Office, ed. 1994.
"USMARC Format for Bibliographic Data", 1994. Washington, DC: Cataloging Distribution
Service, Library of Congress.
[RFC2291] Slein, J., Vitali, F., Whitehead, E. and
D. Durand, "Requirements for Distributed Authoring and Versioning Protocol for
the World Wide Web", RFC 2291, February 1998.
[RFC2413] Weibel, S., Kunze, J., Lagoze, C. and M.
Wolf, "Dublin Core Metadata for Resource Discovery",
RFC 2413, September 1998.
[RFC2376] Whitehead, E. and M. Murata, "XML Media
Types", RFC 2376, July 1998.
Microsoft Corporation
One Microsoft Way
Redmond, WA 98052-6399
EMail: [email protected]
Dept. Of Information and Computer Science
University of California, Irvine
Irvine, CA 92697-3425
EMail: [email protected]
Netscape
685 East Middlefield Road
Mountain View, CA 94043
EMail: [email protected]
Novell
1555 N. Technology Way
M/S ORM F111
Orem, UT 84097-2399
EMail: [email protected]
Novell
1555 N. Technology Way
M/S ORM F111
Orem, UT 84097-2399
EMail: [email protected]
Cette section fournit une D�finition de Type de Documents, correspondant aux r�gles de [REC-XML], pour les �l�ments XML utilis�s dans le flot du protocole et dans les valeurs des propri�t�s. Elle rassemble les d�finitions d'�l�ments donn�es aux sections 12 et 13.
<!DOCTYPE webdav-1.0 [ �� <!--============ XML Elements
from Section 12 ==================-->
<!ELEMENT activelock (lockscope, locktype, depth, owner?, timeout?, ��
locktoken?) >
<!ELEMENT lockentry (lockscope, locktype) >
<!ELEMENT lockinfo (lockscope, locktype, owner?) >
<!ELEMENT locktype (write) >
<!ELEMENT write EMPTY >
<!ELEMENT lockscope (exclusive | shared) >
<!ELEMENT exclusive EMPTY >
<!ELEMENT shared EMPTY >
<!ELEMENT depth (#PCDATA) >
<!ELEMENT owner ANY >
<!ELEMENT timeout (#PCDATA) >
<!ELEMENT locktoken (href+) >
<!ELEMENT href (#PCDATA) >
<!ELEMENT link (src+, dst+) >
<!ELEMENT dst (#PCDATA) >
<!ELEMENT src (#PCDATA) >
<!ELEMENT multistatus (response+, responsedescription?) >
<!ELEMENT response (href, ((href*, status)|(propstat+)), �� responsedescription?)
>
<!ELEMENT status (#PCDATA) >
<!ELEMENT propstat (prop, status, responsedescription?) >
<!ELEMENT responsedescription (#PCDATA) >
�� <!ELEMENT prop ANY >
<!ELEMENT propertybehavior (omit | keepalive) >
<!ELEMENT omit EMPTY >
<!ELEMENT keepalive (#PCDATA | href+) >
<!ELEMENT propertyupdate (remove | set)+ >
<!ELEMENT remove (prop) >
<!ELEMENT set (prop) >
<!ELEMENT propfind (allprop | propname | prop) >
<!ELEMENT allprop EMPTY >
<!ELEMENT propname EMPTY >
<!ELEMENT collection EMPTY > �� <!--=========== Property Elements
from Section 13 ===============-->
<!ELEMENT creationdate (#PCDATA) >
<!ELEMENT displayname (#PCDATA) >
<!ELEMENT getcontentlanguage (#PCDATA) >
<!ELEMENT getcontentlength (#PCDATA) >
<!ELEMENT getcontenttype (#PCDATA) >
<!ELEMENT getetag (#PCDATA) >
<!ELEMENT getlastmodified (#PCDATA) >
<!ELEMENT lockdiscovery (activelock)* >
<!ELEMENT resourcetype ANY >
<!ELEMENT source (link)* >
<!ELEMENT supportedlock (lockentry)* > �� ]>
La propri�t� creationdate
pr�cise que l'ISO
8601 [ISO-8601] doit �tre utilis�e pour formater la date . Cette
section d�finit un profile de format de date de l'ISO 8601 pour une utilisation
avec cette sp�cification. Ce profile est issu d'un brouillon Internet
�crit par Chris Newman, qui est mentionn� ici pour que son travail
lui soit correctment attribu�.
�� date-time�= full-date "T" full-time
� �full-date�= date-fullyear "-" date-month "-" date-mday
�� full-time�= partial-time time-offset
�� date-fullyear�= 4DIGIT
�� date-month�= 2DIGIT� ; 01-12
�� date-mday�= 2DIGIT� ; 01-28, 01-29, 01-30, 01-31 bas�
sur month/year
�� time-hour�= 2DIGIT� ; 00-23
�� time-minute�= 2DIGIT� ; 00-59
�� time-second = 2DIGIT� ; 00-59, 00-60 bas� sur des "leap
second rules"
�� time-secfrac�= "." 1*DIGIT
�� time-numoffset�= ("+" / "-") time-hour ":" time-minute
�� time-offset�= "Z" / time-numoffset
�� partial-time�= time-hour ":" time-minute ":" time-second [time-secfrac]
Les d�calages num�riques sont calcul�s � partir de l'heure local moins l'UTC (Coordinated Universal Time). Aussi, l'heure �quivalente en UTC peut �tre d�termin�e en soustrayant le d�calage � l'heure locale. Par exemple, 18:50:00- 04:00 est la m�me chose que 22:58:00Z.
Si l'heure UTC est connue, mais que le d�calage avec les heures locales
ne l'est pas, cela peut �tre repr�sent� avec und�calage
de "-00:00". Cela est diff�rent d'un d�calage de "Z
"
impliquant que l'UTC est le point de r�f�rence pr�f�r�
pour l'heure sp�cifi�e.
XML supporte deux m�canismes pour indiquer que des �l�ments
XML n'ont aucun contenu. Le premier consiste � d�clarer un �l�ment
de telle sorte que son instanciation puisse �tre de la forme <A></A>
.
La deuxi�me consiste � d�clarer un �l�ment
de type EMPTY
qui s'utilisera sous la forme <A/>.�
Ces
deux �critures d'�l�ments XML sont s�mantiquement
identiques. C'est une violation de la sp�cification XML que d'utiliser
l'�criture de la forme <A></A>
pour un �l�ment
d�clar� EMPTY
dans la DTD (c'est � dire <!ELEMENT
A EMPTY>
). Si une telle d�claration est pr�sente dans la
DTD, la forme <A/>
est la seule autoris�e. Si
l'�l�ment n'est pas d�clar� avec un mod�le
de contenu EMPTY
, alors n'importe laquelle des deux formes <A></A>
ou <A/>
est autoris�e pour les instances vides de cet
�l�ment.
XML est un format de donn�es flexible qui rend facile la soumission de donn�es sous une forme qui semble apparement l�gale mais qui ne l'est pas en r�alit�. La "philosophie" du "Soit souple dans ce que tu acceptes mais strict dans ce que tu envoies" s'applique toujours, mais il NE DOIT PAS �tre appliqu�e de mani�re inappropri�e. XML est extr�mement souple dans sa mani�re de consid�rer les espaces blancs, l'ordre des �l�ments, l'insertion de nouveaux �l�ments, etc... Cette souplesse n'impose de faire appel � aucune extension, particuli�rement dans le domaine de la signification des �l�ments.
Il n'y a pas de gentillesse particuli�re � accepter des combinaisons ill�gales d'�l�ments XML. Au mieux, cela provoquera un r�sultat ind�sirable et au pire cela pourrait provoquer de r�els d�g�ts.
Le corps de requ�te suivante d'une m�thode PROPFIND
est ill�gal.
�� <?xml version="1.0" encoding="utf-8" ?>
�� <D:propfind xmlns:D="DAV:">
���� <D:allprop/>
���� <D:propname/>
�� </D:propfind>
La d�finition de l'�l�ment propfind
ne permet
que d'utiliser l'un des �l�ments allprop
ou propname
,
pas les deux en m�me temps. Aussi, le fragment ci-dessus est une erreur
et DOIT provoquer en r�ponse l'�mission du code d'erreur
400
(mauvaise requ�te).
Imaginez, toutefois, qu'un serveur souhaite �tre "sympathique" et
d�cide de prendre l'�l�ment allprop
comme
l'�l�ment vrai de la requ�te et r�ponde. Un client
travaillant avec une petite bande passante limit�e et qui essaierait
d'ex�cuter un propname
serait tr�s surpris de d�couvrir
que le serveur a trait� sa demande comme si il s'agissait d'un allprop
.
De plus, si un serveur �tait indulgent et d�cidait de r�pondre
� cette requ�te, les r�sultats varieraient de mani�re
al�atoire d'un serveur � l'autre, les uns ex�cutants la
directive allprop
, et les autres ex�cutants la directive
propname
. Cela r�duirait l'interop�rabilit�
plut�t que cela ne l'augmenterait.
L'exemple pr�c�dent �tait ill�gal parce qu'il contenait
deux �l�ments dont il �tait explcitiement sp�cifi�
qu'ils s'excluaient mutuellement. Toutefois, XML est un langage extensible,
donc on peut imaginer que de nouveaux �l�ments peuvent �tre
d�finis pour une utilisation avec propfind
. Ci-dessous se
trouve le corps de la requ�te d'un PROPFIND
et, comme dans
l'exemple pr�c�dent, DOIT �tre rejet�e avec
un code de retour 400
(mauvaise requ�te) par un serveur qui
ne comprend pas l'�l�ment expired-props
.
�� <?xml version="1.0" encoding="utf-8" ?>
�� <D:propfind xmlns:D="DAV:" xmlns:E="http://www.foo.bar/standards/props/">
���� <E:expired-props/>
�� </D:propfind>
Pour comprendre pourquoi un code de retour 400
(mauvaise requ�te)
est retourn�, il faut regarder le corps de la requ�te et comment
le serveur, non-familier de l'�l�ment expired-props
,
le consid�re.
�� <?xml version="1.0" encoding="utf-8" ?>
�� <D:propfind xmlns:D="DAV:" xmlns:E="http://www.foo.bar/standards/props/">
�� </D:propfind>
Comme le serveur ne comprend pas l'�l�ment expired-props
,
au sens des r�gles de traitement XML sp�cifiques � WEBDAV
d�crites dans la section 14, il doit l'ignorer. Ainsi, le serveur voit
un �l�ment propfind
vide, qui, par d�finition
de l'�l�ment propfind
est interdit.
Vous pouvez remarquez que si l'extension avait �t� ajout�e
cela n'aura pas pour autant forc�ment provoqu� l'�mission
du code de retour 400
(mauvaise requ�te). Par exemple, imaginez
que le corps de requ�te suivant soit utilis� dans un PROPFIND
:
�� <?xml version="1.0" encoding="utf-8" ?>
�� <D:propfind xmlns:D="DAV:" xmlns:E="http://www.foo.bar/standards/props/">
���� <D:propname/>
���� <E:leave-out>*boss*</E:leave-out>
�� </D:propfind>
L'exemple pr�c�dent contient un �l�ment fictif
leave-out
. Son but est de pr�voir le retour de toute propri�t�
dont le nom correspondrait au motif soumis. Si l'exemple pr�c�dent
�tait soumis � un serveur ne connaissant pas l'�l�ment
leave-out
, le seul r�sultat obtenu serait que l'�l�ment
leave-out
aurait �t� ignor� et qu'un propname
aurait �t� ex�cut�.
Tout syst�me conforme � DAV DOIT supporter les extensions d'espaces de noms XML en conformit� avec la sp�cification [REC-XML-NAMES].
[Remarque au lecteur : Cette section n'existe pas dans [REC-XML-NAMES], mais elle est n�cessaire pour �viter l'ambogu�t� avec les processeurs WebDav.]
Les programmes de traitement conformes � WebDAV DOIVENT interpr�ter
un nom qualifi� comme une URI construite en rajoutant la LocalPart
� la fin de l'URI du nom de l'espace de noms.
Exemple :
�� <del:glider xmlns:del="http://www.del.jensen.org/">
���� <del:glidername>Johnny Updraft</del:glidername>
���� <del:glideraccidents/>
�� </del:glider>
Dans cette exemple, le nom de l'�l�ment qualifi� "del:glider
"
est interpr�t� comme �tant l'URL "http://www.del.jensen.org/glider".
�� <bar:glider xmlns:bar="http://www.del.jensen.org/">
���� <bar:glidername>Johnny Updraft</bar:glidername>
���� <bar:glideraccidents/>
�� </bar:glider>
M�me si cet exemple est syntaxiquement diff�rent du pr�c�dent,
il est s�mantiquement �gal. Chaque instance du nom de l'espace
de nom "bar
" est remplac�e par "http://www.del.jensen.org/"
qui est rajout� au nom local de chaque nom d'�l�ment. Les
noms de balises r�sultants dans cet exemple seront exactement les m�mes
que dans l'exemple pr�c�dent.
�� <foo:r xmlns:foo="http://www.del.jensen.org/glide">
���� <foo:rname>Johnny Updraft</foo:rname>
���� <foo:raccidents/>
�� </foo:r>
Cet exemple est �galement s�mantiquement �gal aux deux
pr�c�dents. Chaque instance du nom de l'espace de noms "foo
"
est remplac�e par l'URL "http://www.del.jensen.org/glide"
qui est ensuite ajout�e au nom local de chaque nom de balise, les noms
de balises r�sultant sont identiques � ceux des exemples pr�c�dents.
Copyright (C) The Internet Society (1999). Tous droits r�serv�s.
Ce document et ses traductions peuvent �tre copi�s et transmis � d'autres personnes, et des travaux d�riv�s afin de le commenter ou lui rajouter des explications ou aider � son impl�mentation peuvent �tre pr�par�s, copi�s, publi�s et distribu�s, en tout ou partie, sans restriction d'une quleconque nature, � condition que la mention de copyright ci-dessus et ce paragraphe soient inclus sur toutes ces copies et travaux d�riv�s. Toutefois, ce document lui-m�me ne peut pas �tre modifi� d'aucune fa�on, comme par exemple en retirant le copyright ou les r�f�rences � "the Internet Society" ou d'autres organisaitons Internet, except� quand cela est justifi� pour le d�veloppement des standards Internet auquel cas les proc�dures concernant les copyrights d�finies dans les processus de production des standards Internet (the Internet Standards process) DOIVENT �tre respect�s, ou comme cela est requis de les traduire en d'autres langages que l'anglais.
La permission limit�e qui est accord�e ci-dessus sont perp�tuelles et ne seront pas r�voqu�es par "the Internet Society" ou ses successeurs ou ses assign�s.
Ce dcoument et l'information qu'il contient ci-dessus est fourni sur une base "TEL QUEL" et "THE INTERNET SOCIETY" ET "THE INTERNET ENGINEERING TASK FORCE" SE DESENGAGENT DE TOUTE GARANTIE, EXPRES OU IMPLICITE, INCLUANT SANS TOUTEFOIS ETRE LIMITEE A TOUTE GARANTIE QUE L'UTILISATION DE L'INFORMATION CI-DESSUS N'ENFREINDRA PAS DES DROITS OU TOUTE GARANTIE CONSECUTIVE DE TYPE COMMERCIALE OU D'ADEQUATION POUR UN USAGE PARTICULIER QUEL QU'IL SOIT.