[4] [DFN[[RUBY[[[特性]]]@ja[プロパティー]@en[property]]]]は、
[[資源]]について記述する名前と値の組です。

* 仕様書

[REFS[
- [1] [CITE@en[RFC 4918 - HTTP Extensions for Web Distributed Authoring and Versioning (WebDAV)]] ([TIME[2014-09-21 17:04:59 +09:00]] 版) <http://tools.ietf.org/html/rfc4918#section-2>
- [3] [CITE@en[RFC 4918 - HTTP Extensions for Web Distributed Authoring and Versioning (WebDAV)]] ([TIME[2014-09-21 17:04:59 +09:00]] 版) <http://tools.ietf.org/html/rfc4918#page-9>
- [8] '''[CITE@en[RFC 4918 - HTTP Extensions for Web Distributed Authoring and Versioning (WebDAV)]] ([TIME[2014-09-21 17:04:59 +09:00]] 版) <http://tools.ietf.org/html/rfc4918#section-4>'''
- [22] [CITE@en[RFC 4918 - HTTP Extensions for Web Distributed Authoring and Versioning (WebDAV)]] ([TIME[2014-09-21 17:04:59 +09:00]] 版) <http://tools.ietf.org/html/rfc4918#section-14.17>
- [25] [CITE@en[RFC 4918 - HTTP Extensions for Web Distributed Authoring and Versioning (WebDAV)]] ([TIME[2014-09-21 17:04:59 +09:00]] 版) <http://tools.ietf.org/html/rfc4918#section-14.20>
- [28] [CITE@en[RFC 4918 - HTTP Extensions for Web Distributed Authoring and Versioning (WebDAV)]] ([TIME[2014-09-21 17:04:59 +09:00]] 版) <http://tools.ietf.org/html/rfc4918#section-14.23>
- [29] [CITE@en[RFC 4918 - HTTP Extensions for Web Distributed Authoring and Versioning (WebDAV)]] ([TIME[2014-09-21 17:04:59 +09:00]] 版) <http://tools.ietf.org/html/rfc4918#section-14.26>
- [32] [CITE@en[RFC 4918 - HTTP Extensions for Web Distributed Authoring and Versioning (WebDAV)]] ([TIME[2014-09-21 17:04:59 +09:00]] 版) <http://tools.ietf.org/html/rfc4918#section-15>
]REFS]

* 意味

[5] [[特性]]は、[[資源]]についての[RUBYB[記述的]@en[descriptive]]な情報を含む名前と値の組です
[SRC[>>3, >>8]]。

[19] [[特性]]は[DFN[[RUBYB[[[特性名]]]@en[property name]]]]により識別されます。
[[特性名]]は[[XML名前空間]]を通じて [[URL]] を使った普遍的に固有な識別子となっています。
[SRC[>>8]]

[21] [[特性名]]の [[URL]] としての見かけ上の階層構造があるかもしれませんが、
[[WebDAV]] としては異なる[[特性名]]はすべて独立しており、
階層構造は持ちません [SRC[>>8]]。

[20] ある[[資源]]に同じ[[特性名]]の[[特性]]は高々1つだけ指定できます [SRC[>>8]]。

[7] [[特性]]には[[生特性]]と[[死特性]]があります [SRC[>>8]]。

[33] 他に次のような分類があります。
[FIG(short list)[
- [[保護特性]]
- [[算出特性]]
]FIG]

* 構文

[12] [[特性]]は、[[特性名]]を表す[[XML]] [[要素]]によって表現されます。
この[[要素]]を[DFN[[RUBYB[特性名要素]@en[property name element]]]]といいます。 [SRC[>>8]]

;; [2] [[仕様書]]での表記上は、 [CODE(URI)@en[[[DAV:]]]] [[XML名前空間]]の
[CODE(XML)@en[[[creationdate]]]] [[特性]]を [CODE(URI)@en[[[DAV:creationdate]]]] 
のように記述することがあります [SRC[>>1]]。

;; [34] [[RFC 2518]] では [[QName]] は[[名前空間URL]]に[[局所名]]を連結した [[URL]]
として解釈することとされており [SRC[>>35]]、 [CODE(URI)@en[[[DAV:]]]]
[[名前空間]]に属する[[要素]]は [CODE(URI)@en[[[DAV:]]]] [[URL]] を表していました。
この規定は [[RFC 4918]] にはありません。
[REFS[
- [35] [CITE@en[RFC 2518 - HTTP Extensions for Distributed Authoring -- WEBDAV]] ([TIME[2014-09-14 13:14:29 +09:00]] 版) <http://tools.ietf.org/html/rfc2518#section-23.4.2>
]REFS]

[9] [[特性]]の値は、[[特性名要素]]の[[内容]]である[[XML]] 素片です [SRC[>>8]]。
[[要素]]も[[テキスト]]も含めることができます [SRC[>>8]]。

[13] [[特性]]の値が[[空文字列]] ([[空要素]]) であるのと、[[特性名要素]]が存在しないのとは異なります [SRC[>>8]]。

[24] [[特性名要素]]が [CODE(XMLe)@en[[[propfind]]]] [[要素]] [SRC[>>25]]
や [CODE(XMLe)@en[[[remove]]]] [[要素]] [SRC[>>28]] の[[子孫]]として使われる時は、
[[特性]]の値を含んでは[['''なりません''']]。

[30] [CODE(XMLe)@en[[[set]]]] [[要素]]の[[子孫]]として使われる時は、
[[特性]]の名前と (新しい) 値を含めなければなりません [SRC[>>29]]。

[5] [[鯖]]は、[[死特性]] [SRC[>>8]] および別途規定のない[[生特性]] [SRC[>>8]]、
[CODE(XMLe)@en[[[owner]]]] [SRC[>>22]] について、
次の情報を保持しなければ[['''なりません''']]。

[FIG(short list)[
- [[特性名要素]]の[[要素情報項目]]
-- [[名前空間名]]
-- [[接頭辞]] ([['''推奨''']])
-- [[局所名]]
-- [[属性群]]のうち [CODE(XMLa)@en[[[xml:lang]]]] (直接指定または適用範囲内にあるもの)
-- [[子供]]のうち[[要素情報項目]]と[[文字情報項目]]
- 特性値の[[要素情報項目]]
-- [[名前空間名]]
-- [[接頭辞]] ([['''推奨''']])
-- [[局所名]]
-- [[属性群]]
-- [[子供]]のうち[[要素情報項目]]と[[文字情報項目]]
- 特性値の[[属性情報項目]]
-- [[名前空間名]]
-- [[接頭辞]] ([['''推奨''']])
-- [[局所名]]
-- [[正規化値]]
- 特性値の[[文字情報項目]]
-- [[文字コード]]
]FIG]

[17] これ以外の情報も[[鯖]]は保持して構いませんが、
[[クライアント]]はそれに依存しては[['''なりません''']] [SRC[>>8]]。

;; [14] 各[[特性]]の項も参照。

;; [18] [[接頭辞]]は [[XPath]] や [[XML Schema]] のように[[名前空間接頭辞]]に依存した[[応用]]の利用を想定している [SRC[>>8]]
と説明されています。しかし、多くの場合は[[名前空間名]]が保持されることで十分でしょうし、
[[名前空間接頭辞]]の[[解決]]を行いたい時は[[名前空間属性]]や[[適用範囲内名前空間]]の[[名前空間情報項目]]が保持されないといけないですし、
[[接頭辞]]も[['''推奨''']]でしかないので確実に利用できると保証されないという状態で、
[[相互運用性]]が本当に保持できるのかどうか疑問ではあります。

[10] [[クライアント]]は理解できない[[要素]]を無視しなければ[['''なりません''']] [SRC[>>8]]。

[11] [[特性]]の値の[[自然言語]]は[[適用範囲]]内となる [CODE(XMLa)@en[[[xml:lang]]]]
[[属性]]により指定できます。 (未指定ともできます。) [SRC[>>8]]

[15] [[特性]]の値の[[空白]]は常に意味を持ちます。 [CODE(XMLa)@en[[[xml:space]]]]
[[属性]]があっても無視しなければ[['''なりません''']]。 [SRC[>>8]]

;; [16] [[鯖]]の処理に用いることが禁じられていますが、[[特性]]の値の一部として保持することが求められているのか禁止されているのかはよくわかりません。

[27] [[特性名要素]]は文脈によっては「値を持たない」ことや「[[空]]」
であることが求められていますが、 >>5 で保持されないことになっている[[注釈]]や[[処理指令]]を含めても良いのかは不明です。

* 文脈

[23] [[特性名要素]]は、次の[[要素]]の[[子要素]]として使用できます。
[FIG(short list)[
- [CODE(XMLe)@en[[[prop]]]]
- [CODE(XMLe)@en[[[include]]]]
]FIG]

[26] [[特性名要素]]は [CODE(XMLe)@en[[[propfind]]]] [[要素]]や
[CODE(XMLe)@en[[[remove]]]] [[要素]] [SRC[>>28]] 
の[[子孫]]としては[[空要素]]として用いて、取得・削除したい[[特性]]の名前を指定します。 (値は指定しません。)

[31] [[特性名要素]]は、 [CODE(XMLe)@en[[[set]]]] [[要素]]の[[子孫]]として用いて、
設定したい[[特性]]の名前と値を指定します [SRC[>>29]]。

* 関連

[6]
WebDAV の特性は [[RDF]] 
的意味の特性とほとんど同じような意味を持っています。