17. XML Extensibility in DAV (Extensibilité XML dans DAV)
17. XML Extensibility in DAV (Extensibilité XML dans DAV)
L'extension d'espace de noms XML ([REC-XML-NAMES]) est utilisée dans cette spécification afin de permettre l'ajout de nouveaux éléments XML sans crainte de collision avec d'autres noms d'éléments. Bien que les corps de requête et de réponse WebDAV puissent être étendus par des éléments XML arbitraires, qui peuvent être ignorés par le destinataire du message, un élément XML dans l'espace de noms "DAV:" NE DEVRAIT PAS être utilisé dans le corps de la requête ou de la réponse à moins que cet élément XML ne soit explicitement défini dans un RFC IETF révisé par un groupe de travail WebDAV.
Pour que WebDAV soit à la fois extensible et rétrocompatible, les clients et les serveurs doivent savoir comment se comporter lorsque des extensions de commande inattendues ou non reconnues sont reçues. Pour le traitement XML, cela signifie que les clients et les serveurs DOIVENT traiter les documents XML reçus comme si les éléments et attributs inattendus (et tous les enfants d'éléments non reconnus) n'étaient pas là. Un élément ou attribut inattendu inclut celui qui peut être utilisé dans un autre contexte mais n'est pas attendu ici. Ignorer ces éléments aux fins du traitement peut bien sûr être cohérent avec la journalisation de toutes les informations ou la présentation pour le débogage.
Cette restriction s'applique également au traitement, par les clients, des valeurs de propriété DAV où les éléments XML inattendus DEVRAIENT être ignorés sauf si le schéma de la propriété déclare le contraire.
Cette restriction ne s'applique pas à la définition de propriétés DAV mortes sur le serveur où le serveur DOIT enregistrer tous les éléments XML.
De plus, cette restriction ne s'applique pas à l'utilisation de XML où XML se trouve être le type de contenu du corps d'entité, par exemple, lorsqu'il est utilisé comme corps d'un PUT.
Les instructions de traitement en XML DEVRAIENT être ignorées par les destinataires. Ainsi, les spécifications étendant WebDAV NE DEVRAIENT PAS utiliser d'instructions de traitement pour définir un comportement normatif.
Des fragments de DTD XML sont inclus pour tous les éléments XML définis dans cette spécification. Cependant, le XML correct ne sera pas valide selon une DTD en raison de l'utilisation de l'espace de noms et des règles d'extension. En particulier:
- Les éléments (de cette spécification) sont dans l'espace de noms "DAV:",
- L'ordre des éléments n'est pas pertinent sauf indication contraire,
- Les attributs d'extension PEUVENT être ajoutés,
- Pour les définitions de type d'élément "ANY", la définition de texte normatif pour cet élément définit ce qui peut y être et ce que cela signifie.
- Pour les définitions de type d'élément "#PCDATA", les éléments d'extension NE DOIVENT PAS être ajoutés.
- Pour les autres définitions de type d'élément, y compris "EMPTY", les éléments d'extension PEUVENT être ajoutés.
Notez que cela signifie que les éléments contenant des éléments ne peuvent pas être étendus pour contenir du texte, et vice versa.
Avec la validation DTD assouplie par les règles ci-dessus, les contraintes décrites par les fragments DTD sont normatives (voir par exemple l'annexe A). Un destinataire d'un message WebDAV avec un corps XML NE DOIT PAS valider le document XML selon une DTD codée en dur ou déclarée dynamiquement.
Notez que cette section décrit des règles d'extensibilité rétrocompatibles. Il peut également y avoir des moments où une extension est conçue pour ne pas être rétrocompatible, par exemple, en définissant une extension qui réutilise un élément XML défini dans ce document mais omet l'un des éléments enfants requis par les DTD de cette spécification.