17. XML Extensibility in DAV (Estensibilità XML in DAV)
17. XML Extensibility in DAV (Estensibilità XML in DAV)
L'estensione dello spazio dei nomi XML ([REC-XML-NAMES]) viene utilizzata in questa specifica per consentire l'aggiunta di nuovi elementi XML senza timore di collisioni con altri nomi di elementi. Sebbene i corpi delle richieste e delle risposte WebDAV possano essere estesi da elementi XML arbitrari, che possono essere ignorati dal destinatario del messaggio, un elemento XML nello spazio dei nomi "DAV:" NON DOVREBBE essere utilizzato nel corpo della richiesta o della risposta a meno che tale elemento XML non sia esplicitamente definito in un RFC IETF rivisto da un gruppo di lavoro WebDAV.
Affinché WebDAV sia sia estensibile che retrocompatibile, sia i client che i server devono sapere come comportarsi quando vengono ricevute estensioni di comando inattese o non riconosciute. Per l'elaborazione XML, ciò significa che i client e i server DEVONO elaborare i documenti XML ricevuti come se elementi e attributi inattesi (e tutti i figli di elementi non riconosciuti) non fossero presenti. Un elemento o attributo inatteso include uno che può essere utilizzato in un altro contesto ma non è previsto qui. Ignorare tali elementi ai fini dell'elaborazione può naturalmente essere coerente con la registrazione di tutte le informazioni o la presentazione per il debug.
Questa restrizione si applica anche all'elaborazione, da parte dei client, dei valori delle proprietà DAV dove gli elementi XML inattesi DOVREBBERO essere ignorati a meno che lo schema della proprietà non dichiari altrimenti.
Questa restrizione non si applica all'impostazione di proprietà DAV morte sul server dove il server DEVE registrare tutti gli elementi XML.
Inoltre, questa restrizione non si applica all'uso di XML dove XML capita di essere il tipo di contenuto del corpo dell'entità, ad esempio, quando viene utilizzato come corpo di un PUT.
Le istruzioni di elaborazione in XML DOVREBBERO essere ignorate dai destinatari. Pertanto, le specifiche che estendono WebDAV NON DOVREBBERO utilizzare istruzioni di elaborazione per definire un comportamento normativo.
I frammenti DTD XML sono inclusi per tutti gli elementi XML definiti in questa specifica. Tuttavia, l'XML corretto non sarà valido secondo alcuna DTD a causa dell'uso dello spazio dei nomi e delle regole di estensione. In particolare:
- Gli elementi (di questa specifica) sono nello spazio dei nomi "DAV:",
- L'ordine degli elementi è irrilevante salvo diversa indicazione,
- Gli attributi di estensione POSSONO essere aggiunti,
- Per le definizioni di tipo di elemento "ANY", la definizione di testo normativo per quell'elemento definisce cosa può esserci dentro e cosa significa.
- Per le definizioni di tipo di elemento "#PCDATA", gli elementi di estensione NON DEVONO essere aggiunti.
- Per altre definizioni di tipo di elemento, incluso "EMPTY", gli elementi di estensione POSSONO essere aggiunti.
Si noti che ciò significa che gli elementi contenenti elementi non possono essere estesi per contenere testo, e viceversa.
Con la convalida DTD rilassata dalle regole sopra, i vincoli descritti dai frammenti DTD sono normativi (vedere ad esempio l'Appendice A). Un destinatario di un messaggio WebDAV con un corpo XML NON DEVE convalidare il documento XML secondo alcuna DTD codificata o dichiarata dinamicamente.
Si noti che questa sezione descrive regole di estensibilità retrocompatibili. Potrebbero esserci anche momenti in cui un'estensione è progettata per non essere retrocompatibile, ad esempio, definendo un'estensione che riutilizza un elemento XML definito in questo documento ma omette uno degli elementi figlio richiesti dalle DTD in questa specifica.