メインコンテンツまでスキップ

17. XML Extensibility in DAV (DAV における XML 拡張性)

17. XML Extensibility in DAV (DAV における XML 拡張性)

この仕様では, 他の要素名との衝突を恐れることなく新しい XML 要素を追加できるようにするために, XML 名前空間拡張 ([REC-XML-NAMES]) が使用されています。WebDAV リクエストおよびレスポンスボディは任意の XML 要素で拡張でき, メッセージ受信者はそれらを無視できますが, "DAV:" 名前空間の XML 要素は, その XML 要素が WebDAV ワーキンググループによってレビューされた IETF RFC で明示的に定義されていない限り, リクエストまたはレスポンスボディで使用すべきではありません。

WebDAV が拡張可能かつ下位互換性を持つためには, クライアントとサーバーの両方が予期しないまたは認識されないコマンド拡張を受信したときにどのように動作するかを知る必要があります。XML 処理の場合, これはクライアントとサーバーが受信した XML ドキュメントを, 予期しない要素と属性 (および認識されない要素のすべての子) が存在しないかのように処理しなければならないことを意味します。予期しない要素または属性には, 別のコンテキストで使用される可能性があるが, ここでは予期されていないものが含まれます。処理の目的でそのような項目を無視することは, もちろんすべての情報をログに記録することやデバッグのために提示することと一致する可能性があります。

この制限は, プロパティのスキーマが別途宣言していない限り予期しない XML 要素を無視すべき, クライアントによる DAV プロパティ値の処理にも適用されます。

この制限は, サーバーがすべての XML 要素を記録しなければならない, サーバー上での死んだ DAV プロパティの設定には適用されません。

さらに, この制限は, XML がエンティティボディのコンテンツタイプである XML の使用には適用されません。たとえば, PUT のボディとして使用される場合などです。

XML の処理命令は受信者によって無視されるべきです。したがって, WebDAV を拡張する仕様は, 規範的な動作を定義するために処理命令を使用すべきではありません。

この仕様で定義されているすべての XML 要素に対して XML DTD フラグメントが含まれています。ただし, 名前空間の使用と拡張ルールにより, 正しい XML は DTD に従って有効ではありません。特に:

  • 要素 (この仕様から) は "DAV:" 名前空間にあります,
  • 特に明記されていない限り, 要素の順序は無関係です,
  • 拡張属性を追加できます,
  • "ANY" の要素型定義の場合, その要素の規範的なテキスト定義が, そこに何を含めることができ, それが何を意味するかを定義します。
  • "#PCDATA" の要素型定義の場合, 拡張要素を追加してはなりません。
  • "EMPTY" を含む他の要素型定義の場合, 拡張要素を追加できます。

これは, 要素を含む要素はテキストを含むように拡張できず, その逆も同様であることを意味することに注意してください。

上記のルールによって DTD 検証が緩和された状態では, DTD フラグメントによって記述される制約は規範的です (たとえば, 付録 A を参照)。XML ボディを持つ WebDAV メッセージの受信者は, ハードコードされたまたは動的に宣言された DTD に従って XML ドキュメントを検証してはなりません。

このセクションでは下位互換性のある拡張性ルールについて説明していることに注意してください。拡張が下位互換性を持たないように設計される場合もあります。たとえば, この仕様の DTD で必要な子要素の 1 つを省略して, このドキュメントで定義された XML 要素を再利用する拡張を定義する場合などです。