17. DAV中的XML可扩展性 (XML Extensibility in DAV)
17. DAV中的XML可扩展性 (XML Extensibility in DAV)
本规范中使用XML命名空间扩展([REC-XML-NAMES]),以便可以添加新的XML元素而不必担心与其他元素名称冲突。尽管WebDAV请求和响应主体可以由任意XML元素扩展(消息接收方可以忽略这些元素),但除非该XML元素在由WebDAV工作组审查的IETF RFC中明确定义,否则不应该在请求或响应主体中使用"DAV:"命名空间中的XML元素。
为了使WebDAV既可扩展又向后兼容,客户端和服务器都需要知道在收到意外或无法识别的命令扩展时如何行为。对于XML处理,这意味着客户端和服务器必须处理收到的XML文档,就好像意外的元素和属性(以及无法识别的元素的所有子元素)不在那里一样。意外的元素或属性包括可能在另一个上下文中使用但在此处不需要的元素或属性。出于处理目的忽略此类项目当然可以与记录所有信息或呈现以进行调试保持一致。
此限制也适用于客户端对DAV属性值的处理,其中应该忽略意外的XML元素,除非属性的模式另有声明。
此限制不适用于在服务器上设置死DAV属性,其中服务器必须记录所有XML元素。
此外,此限制不适用于XML恰好是实体主体的内容类型的使用,例如,当用作PUT的主体时。
XML中的处理指令应该被接收方忽略。因此,扩展WebDAV的规范不应该使用处理指令来定义规范行为。
XML DTD片段包含在本规范中定义的所有XML元素中。但是,由于命名空间使用和扩展规则,正确的XML根据任何DTD都不会有效。特别是:
- 元素(来自本规范)在"DAV:"命名空间中,
- 元素顺序无关紧要,除非另有说明,
- 可以添加扩展属性,
- 对于"ANY"的元素类型定义,该元素的规范文本定义定义了其中可以包含什么以及这意味着什么。
- 对于"#PCDATA"的元素类型定义,不得添加扩展元素。
- 对于其他元素类型定义,包括"EMPTY",可以添加扩展元素。
请注意,这意味着包含元素的元素不能扩展为包含文本,反之亦然。
通过上述规则放宽了DTD验证,DTD片段描述的约束是规范性的(例如,请参见附录A)。具有XML主体的WebDAV消息的接收方不得根据任何硬编码或动态声明的DTD验证XML文档。
请注意,本节描述了向后兼容的可扩展性规则。也可能有时扩展设计为不向后兼容,例如,定义重用本文档中定义的XML元素但省略本规范中DTD所需的子元素之一的扩展。