[30] [DFN[[CODE[[[X-[VAR[*]]]]]]]] やそれに類する記法 ([DFN[[CODE[[[X[VAR[*]]]]]]]]、
[DFN[[CODE[[[X_[VAR[*]]]]]]]]、[DFN[[CODE[[[X.[VAR[*]]]]]]]] など)
は、[[飾りです]]。[[偉い人にはそれがわからないかもしれません][偉い人にはそれがわからんのです]]。

[HISTORY[
[52] 元々は標準で定められた名前や登録された名前に対して、非標準だったり実験用だったりする名前を区別することを意図していました。
しかし実際にはその意図があまり浸透せず、
想定外の使われ方ばかりでした。
]HISTORY]

* IETF による非推奨

[29] [CODE[[[X-*]]]] やそれに類する記法は極めて多くの [[IETF]] プロトコル (やその他のプロトコル)
で使われていますが、それによって標準と非標準の名前を区別したところで、 [CODE[X-]] 
の付いた名前が使われると実装はずっとそれに対応し続けなければならず、意味が無いどころか無駄なので、
[[非推奨]]としています。

[REFS[
- [27] [CITE@en[RFC 6648 - Deprecating the "X-" Prefix and Similar Constructs in Application Protocols]]
( ([TIME[2012-06-26 04:07:48 +09:00]] 版))
<http://tools.ietf.org/html/rfc6648>
- [25] [CITE@en[draft-saintandre-xdash-considered-harmful-01 - "X-" Considered Harmful]]
( ([TIME[2011-02-16 00:52:50 +09:00]] 版))
<http://tools.ietf.org/html/draft-saintandre-xdash-considered-harmful-01>
]REFS]

[EG[
[40] 例えば[[電子メール]]の [CODE(822)@en[[[Archived-At:]]]] [[ヘッダー]]は、
既存の [CODE(822)@en[[[X-Archived-At:]]]] [[ヘッダー]]を標準化したものでした。
別名の新しい[[ヘッダー]]を追加する形の標準化により、[[相互運用性]]は却って低下しました。
]EG]

[EG[
[42] [[HTTP]] [CODE(HTTP)@en[[[Content-Encoding:]]]] では初期から
[CODE[[[x-gzip]]]] という値が使われており、 [[RFC 1945]] ではこれが規定されていました。
ところが [[RFC 2068]] は [CODE[[[gzip]]]] という新たな値を規定し、
[CODE[[[x-gzip]]]] も互換性のために対応するべきとしていました。
]EG]

[EG[
[43] [[IETF charset]] の実装の中には、 [CODE[[[x-]]]] を除去してから比較するものもあります。
]EG]

[39] この方針転換があってから、 [CODE[X-]] を[[私用]]に予約する規定は新しいプロトコルには設けられず、
既存のプロトコルの改訂時には削除されています。既存の [CODE[X-]] を使った名前を
[[IANA登録簿]]に登録することも認められるようになっています。

[EG[
[41] [[Web]] では90年代からずっと [CODE(MIME)@en[[[application/x-www-form-urlencoded]]]]
という[[MIME型]]を使っていました。この[[MIME型]]は00年代になって
[[IANA登録簿]]に登録されました。

[54] 後から [CODE[x-]] の付かない形を登録したとしても、切り替えるのは不可能だったと思われます。
[CODE[x-]] を実験用に使い、 [CODE[x-]] に付かないものを正式に登録してから広く使う、
というモデルは [[Web]] の進化の速度に耐えられませんでした。

[55] [[IETF]] が方針転換せずに [CODE[x-]] の登録を認めないままだったとしたら、 
[[IANA登録簿]]はますますその存在意義が低下するところでした。
]EG]

* [CODE[x-*]] を使っているプロトコル要素

[1] 
[[BEEP]] ([[RFC 3080]]) は、 [[IANA]]
に登録''しない''[[機能識別]]が [CODE@en[[[x-]]]]
で始まることを求めています。
しかし、 [[IANA]] が [CODE@en[[[x-]]]]
で始まる[[文字列]]を登録してはいけないとは述べられていません。
[[大文字]]と[[小文字]]の区別には言及がありません。

[2]
[[vCard]] [CODE@en[[[IMPP]]]] [[型]] ([[RFC 4770]])
は、 [CODE@en[[[TYPE]]]] [[引数]]の値の一部として
[CODE(ABNF)@en[[[x-name]]]] の使用を認めています。
[CODE(ABNF)@en[[[x-name]]]] の定義は [[RFC 2426]]
にあって、非標準な利用のためのものとされています。

[3]
[CITE@en-us[XLIFF 1.1 Specification]] ([CODE[2006-07-08 02:30:08 +09:00]] 版) <http://www.oasis-open.org/committees/xliff/documents/cs-xliff-core-1.1-20031031.htm#Struct_Extension>
([[名無しさん]] [sage])

[4]
[CITE@en-us[XLIFF 1.1 Specification]] ([CODE[2006-07-08 02:30:08 +09:00]] 版) <http://www.oasis-open.org/committees/xliff/documents/cs-xliff-core-1.1-20031031.htm#Struct_Extension_Values>
([[名無しさん]] [sage])

[5]
[CITE@en-us[XLIFF 1.1 Specification]] ([CODE[2006-07-08 02:30:08 +09:00]] 版) <http://www.oasis-open.org/committees/xliff/documents/cs-xliff-core-1.1-20031031.htm#mtype>

[17] [CITE[XLIFF 1.2 Specification]] ([TIME[2008-02-05 00:30:42 +09:00]] 版) <http://docs.oasis-open.org/xliff/v1.2/os/xliff-core.html#Struct_Extension>

[6]
[CITE[Global Information Management eXchange Metrics Volume 1.0 Specification]] ([CODE[2007-02-24 17:44:10 +09:00]] 版) <http://www.lisa.org/standards/gmx/GMX-V.html#CountExtension>
([[名無しさん]] [sage])

[7]
[CITE[Global Information Management eXchange Metrics Volume 1.0 Specification]] ([CODE[2007-02-24 17:44:10 +09:00]] 版) <http://www.lisa.org/standards/gmx/GMX-V.html#Attr_state>
([[名無しさん]] [sage])

[8]
[CITE@en-us[TMX Specification]] ([CODE[2007-02-24 17:51:20 +09:00]] 版) <http://www.lisa.org/standards/tmx/tmx.html#prop>
([[名無しさん]] [sage])

[9]
[CITE@en[RFC 4408 Sender Policy Framework (SPF) for Authorizing Use of Domains in E-Mail, Version 1]] ([CODE[2007-02-14 19:02:25 +09:00]] 版) <http://tools.ietf.org/html/rfc4408#section-7>

[11] [CITE[SMIL 3.0 Content Control]] ([TIME[2008-12-02 00:45:09 +09:00]] 版) <http://www.w3.org/TR/2008/REC-SMIL3-20081201/smil-content.html#adef-systemBaseProfile>

[10] [CITE[SMIL 3.0 Structure Module]] ([TIME[2008-12-02 00:45:09 +09:00]] 版) <http://www.w3.org/TR/2008/REC-SMIL3-20081201/smil-structure.html#adef-baseProfile>

[26] [[CGI]] では [CODE(CGI)@en[[[X_*]]]] があります。

[32] [[言語タグ]]の[[拡張]]「[CODE(lang)@en[[[t]]]]」 には [CODE(lang)@en[[[x0]]]]
があります。

[70] 
[[URL scheme]] もかつては採用していました。

[73] 
[[FIPA MTSメッセージ]]の slot 名は将来の拡張を
[CODE[X-FIPA-]]、
独自の拡張を
[CODE[X-CompanyName-]]
から始めることとしていました。

[79] [CITE@en[RFC 4566: SDP: Session Description Protocol]], [TIME[2023-12-02T07:30:22.000Z]], [TIME[2023-12-02T11:58:35.398Z]] <https://www.rfc-editor.org/rfc/rfc4566.html#section-5.8>

-[80] [CITE@en[RFC 4324: Calendar Access Protocol (CAP)]], [TIME[2023-12-02T07:30:13.000Z]], [TIME[2023-12-02T12:27:09.778Z]] <https://www.rfc-editor.org/rfc/rfc4324.html#page-10>
-[81] [CITE@en[RFC 4324: Calendar Access Protocol (CAP)]], [TIME[2023-12-02T07:30:13.000Z]], [TIME[2023-12-02T12:49:47.490Z]] <https://www.rfc-editor.org/rfc/rfc4324.html#section-8.25>

[82] 
[CITE@ja[Microsoft Word - A-100-1.doc - a_100_1.pdf]], [TIME[2024-08-30T07:53:35.000Z]] <https://web.archive.org/web/20060927005115/http://www.atsc.org/standards/a_100_1.pdf#page=42>


[FIG(short list)[ [63] [CODE[x-]] を採用
- [[通貨符号]]
- [CODE[charset-extension]]
]FIG]

* [CODE[x-[VAR[*]]]] 要素 (HTML)

[83] 
[[HTML]] の[[カスタム要素名]]は [CH[-]] を含むことが条件ですが、
開発当初案では [CODE[x-]] から始まることが条件でした。
[SEE[ [[カスタム要素名]] ]]

* [CODE[x-[VAR[*]]]] 属性 (HTML)

[75] 
[[HTML]] には [CODE[data-[VAR[*]]]] [[属性]]がありますが、
'''[[非標準]]'''の [DFN[[CODE[x-[VAR[*]]]]]]
[[属性]]が使われることがあります。

[77] 
この種の[[属性]]の利用は不適切です。 [CODE[data-[VAR[*]]]] を使うべきです。

[78] 
また、[[非標準]]のこのような[[属性]]を使う[[ライブラリー]]は作者の
[[HTML]]
仕様への無理解の現れですから、品質に不安があります。
安易に使うべきではありません。


[76] [CITE@en[Alpine.js]], [TIME[2023-10-05T03:34:54.000Z]] <https://alpinejs.dev/>


* 他のもの

[12] [[名前空間]]を使うもの (e.g. [[XML]] 系[[マーク付け言語]]、[[XPointer scheme]])

[13] [CITE[JSON-RPC 1.1 Working Draft 7 August 2006]] ([TIME[2007-01-11 07:38:32 +09:00]] 版) <http://json-rpc.org/wd/JSON-RPC-1-1-WD-20060807.html#ObjectExtensions>

[CODE(char)[[[$]]]] で始まるもの。

[14] [[vnd.*]]、[[prs.*]]: [[媒体型]]

[15] [[-[VAR[vendor]]-*]] ([[vendor prefix]]): [[CSS]]、[[選択子]]

[16] [[[[vendor]]*]]、[[[VAR[Vendor]]*]] ([[vendor prefix]]): [[DOM]]

[28] [CODE[[[P-*]]]]: [[SIP]]

[60] [CODE[i-[VAR[*]]]]

[61] [[NID]] 仮登録

[84] [[実験用識別子]]

[85] [[私用]]

* 関連

[74] 
[[ISO 4217]] [[通貨符号]]では [CODE[X]] から始まる[[符号]]は特殊用とされ、
[[私用]]の[[符号]]は提供されていません。

[86] 
[[非標準空間が標準化される]]

* メモ

[18] [CITE[IRC logs: freenode / #whatwg / 20090918]]
([TIME[2009-11-03 01:07:53 +09:00]] 版)
<http://krijnhoetmer.nl/irc-logs/whatwg/20090918>

[19] [CITE@en[Web Applications 1.0 r5307     use vendor--feature instead of _vendor-feature since Apple engineers think underscores are ugly.Fixing http://www.w3.org/Bugs/Public/show_bug.cgi?id=9590]]
( ([TIME[2010-08-17 07:14:00 +09:00]] 版))
<http://html5.org/tools/web-apps-tracker?from=5306&to=5307>

[20] [CITE@en[Speech Synthesis Markup Language (SSML) Version 1.1]]
( ([TIME[2010-09-08 00:26:19 +09:00]] 版))
<http://www.w3.org/TR/2010/REC-speech-synthesis11-20100907/#edef_phoneme>

[21] [CITE@en[Web Applications 1.0 r5562 Change how vendor extensions are marked up.Fixing http://www.w3.org/Bugs/Public/show_bug.cgi?id=9590]]
( ([TIME[2010-09-30 07:38:00 +09:00]] 版))
<http://html5.org/tools/web-apps-tracker?from=5561&to=5562>

[22] [CITE[IRC logs: freenode / #whatwg / 20100930]]
( ([TIME[2010-10-11 01:27:16 +09:00]] 版))
<http://krijnhoetmer.nl/irc-logs/whatwg/20100930>

[23] [CITE['''['''whatwg''']''' '''['''html5''']''' r5307 - '''['''giow''']''' (0) use vendor--feature instead of _vendor-feature since Apple engineers '''['''...''']''']]
([TIME[2010-12-01 08:44:16 +09:00]] 版)
<http://lists.whatwg.org/pipermail/whatwg-whatwg.org/2010-November/029256.html>

[24] [CITE@en[Tantek-Mozilla-projects - MozillaWiki]]
( ([TIME[2011-01-15 07:24:20 +09:00]] 版))
<https://wiki.mozilla.org/Tantek-Mozilla-projects#DOM_API_vendor_prefixing>


[31] [CITE@en[RFC 6838 - Media Type Specifications and Registration Procedures]]
( ([TIME[2013-06-27 23:37:19 +09:00]] 版))
<http://tools.ietf.org/html/rfc6838>

[33] [CITE@en[RFC 3507 - Internet Content Adaptation Protocol (ICAP)]]
( ([TIME[2014-06-08 07:17:07 +09:00]] 版))
<http://tools.ietf.org/html/rfc3507#section-4.3>

[34] [CITE@en[draft-stecher-icap-subid-00 - ICAP Extensions]]
( ([TIME[2014-08-31 17:09:58 +09:00]] 版))
<http://tools.ietf.org/html/draft-stecher-icap-subid-00>

[35] [CITE@en[RFC 4387 - Internet X.509 Public Key Infrastructure Operational Protocols: Certificate Store Access via HTTP]]
( ([TIME[2014-06-08 08:24:17 +09:00]] 版))
<http://tools.ietf.org/html/rfc4387#page-9>

[36] [CITE@en[RFC 7231 - Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content]]
( ([TIME[2014-08-07 05:54:02 +09:00]] 版))
<https://tools.ietf.org/html/rfc7231#section-8.3.1>

[37] [CITE@en[RFC 2295 - Transparent Content Negotiation in HTTP]]
( ([TIME[2014-08-31 19:36:42 +09:00]] 版))
<http://tools.ietf.org/html/rfc2295#section-5.7>

[38] [CITE@en[RFC 2295 - Transparent Content Negotiation in HTTP]]
( ([TIME[2014-08-31 19:36:42 +09:00]] 版))
<http://tools.ietf.org/html/rfc2295#section-6.1>

[44] [CITE@en[RFC 4716 - The Secure Shell (SSH) Public Key File Format]]
([TIME[2015-05-03 17:31:57 +09:00]] 版)
<https://tools.ietf.org/html/rfc4716#section-5>

[FIG(quote)[
[FIGCAPTION[
[45] [CITE@en[RFC 2046 - Multipurpose Internet Mail Extensions (MIME) Part Two: Media Types]]
([TIME[2015-03-22 13:14:46 +09:00]] 版)
<http://tools.ietf.org/html/rfc2046#section-5.1>
]FIGCAPTION]

>  "X-" fields may be created for
>    experimental or private purposes, with the recognition that the
>    information they contain may be lost at some gateways.

]FIG]


[FIG(quote)[
[FIGCAPTION[
[46] [CITE@en[RFC 2046 - Multipurpose Internet Mail Extensions (MIME) Part Two: Media Types]]
([TIME[2015-03-22 13:14:46 +09:00]] 版)
<http://tools.ietf.org/html/rfc2046#section-5.2.3.1>
]FIGCAPTION]

> Future values, except for
>           experimental values beginning with "X-", must be
>           registered with IANA, as described in RFC 2048.

]FIG]


[FIG(quote)[
[FIGCAPTION[
[47] [CITE@en[RFC 2046 - Multipurpose Internet Mail Extensions (MIME) Part Two: Media Types]]
([TIME[2015-03-22 13:14:46 +09:00]] 版)
<http://tools.ietf.org/html/rfc2046#section-6>
]FIGCAPTION]

> A media type value beginning with the characters "X-" is a private
>    value, to be used by consenting systems by mutual agreement.  Any
>    format without a rigorous and public definition must be named with an
>    "X-" prefix, and publicly specified values shall never begin with
>    "X-".  (Older versions of the widely used Andrew system use the "X-
>    BE2" name, so new systems should probably choose a different name.)
>    In general, the use of "X-" top-level types is strongly discouraged.
>    Implementors should invent subtypes of the existing types whenever
>    possible. In many cases, a subtype of "application" will be more
>    appropriate than a new top-level type.

]FIG]


[FIG(quote)[
[FIGCAPTION[
[48] [CITE@en[RFC 7529 - Non-Gregorian Recurrence Rules in the Internet Calendaring and Scheduling Core Object Specification (iCalendar)]]
([TIME[2015-05-02 05:59:07 +09:00]] 版)
<https://tools.ietf.org/html/rfc7529>
]FIGCAPTION]

> 
>                     / x-name)     ; A non-standard, experimental
>                                   ; calendar system name.
>                                   ; Names are case insensitive,
>                                   ; but uppercase values are preferred.

]FIG]


[FIG(quote)[
[FIGCAPTION[
[49] [CITE@en[RFC 5546 - iCalendar Transport-Independent Interoperability Protocol (iTIP)]]
([TIME[2015-04-19 16:20:38 +09:00]] 版)
<https://tools.ietf.org/html/rfc5546#section-3.7.3>
]FIGCAPTION]

> 
>    To make iCalendar objects extensible, new component, property, or
>    property parameters can be used.  Two types of extensions are defined
>    by '''['''RFC5545''']''': IANA-registered tokens ("iana-token") and experimental
>    use tokens ("x-name").  A client SHOULD save "iana-token's" and MAY
>    use them in replies.  A client MAY save "x-name's" and MAY use them
>    in replies.  When delegating or forwarding messages to other CUs, a
>    client SHOULD include "iana-token's" and "x-names's".

]FIG]


[FIG(quote)[
[FIGCAPTION[
[50] [CITE@en-US[Specification | Swagger]]
([TIME[2015-06-10 11:50:18 +09:00]] 版)
<http://swagger.io/specification/#vendorExtensions>
]FIGCAPTION]

> The extensions properties are always prefixed by "x-" and can have any valid JSON format value.

]FIG]


[FIG(quote)[
[FIGCAPTION[
[51] [CITE@en[RAML 0.8]]
([TIME[2015-03-29 03:33:13 +09:00]] 版)
<http://raml.org/spec.html#other>
]FIGCAPTION]

> x-{other}	The API's authentication relies in another authentication method.

]FIG]


[FIG(quote)[
[FIGCAPTION[
[53] [CITE@en-US[Specification | Swagger]]
([TIME[2015-11-09 11:28:52 +09:00]] 版)
<http://swagger.io/specification/>
]FIGCAPTION]

> ^x-	Any	Allows extensions to the Swagger Schema. The field name MUST begin with x-, for example, x-internal-id. The value can be null, a primitive, an array or an object. 

]FIG]


[56] [CITE@en[RFC 8098 - Message Disposition Notification]]
([TIME[2017-03-02 23:20:54 +09:00]])
<https://tools.ietf.org/html/rfc8098#section-2.2>

[FIG(quote)[
[FIGCAPTION[
[57] [CITE[PWG 5100.13 – IPP: Job and Printer Extensions – Set 3]]
( ([TIME[2012-07-28 08:38:41 +09:00]]))
<http://ftp.pwg.org/pub/pwg/candidates/cs-ippjobprinterext3v10-20120727-5100.13.pdf#page=24>
]FIGCAPTION]

> Standard keywords are
> defined in The Dublin Core Metadata Element Set [RFC5013] and DCMI Metadata Terms
> [DCMITERMS]. Vendor or customer-defined keywords MUST use the prefix string "x-" to
> avoid future keyword name conflicts, for example "x-vendor-foo" or "x-customer-bar".

]FIG]


[58] [CITE@en[Standardize "nosniff" · Issue #35 · whatwg/fetch]]
([TIME[2017-05-07 00:28:24 +09:00]])
<https://github.com/whatwg/fetch/issues/35>

[59] [CITE@en[RFC 4791 - Calendaring Extensions to WebDAV (CalDAV)]]
([TIME[2017-09-24 16:22:36 +09:00]])
<https://tools.ietf.org/html/rfc4791#section-5.3.3>

[62] [CITE@en-US[OpenRPC Specification | spec]]
([TIME[2020-06-25T22:22:13.000Z]], [TIME[2020-09-01T03:04:54.687Z]])
<https://spec.open-rpc.org/#specification-extensions>


[64] 
[[ISO/IEC 26300]]
([[JIS X 4401:2014]])
附属書Cは、
[[MIME型]]を登録作業中として [CODE[x-]] を含ま''ない''名前で示しながら、
登録されるまで
[CODE[x-]]
をつけるのが望ましいと定めていました。


[65] [CITE@en[RFC 2801 - Internet Open Trading Protocol - IOTP Version 1.0]], [TIME[2021-04-11T11:36:33.000Z]], [TIME[2021-04-12T11:45:12.359Z]] <https://tools.ietf.org/html/rfc2801#section-12.2>

[66] [CITE[RFC Errata Report » RFC Editor]], [TIME[2021-04-20T09:21:57.000Z]] <https://www.rfc-editor.org/errata_search.php?rfc=2978>


[67] [CITE@en[RFC 3080 - The Blocks Extensible Exchange Protocol Core]]
([TIME[2021-04-11T10:04:20.000Z]], [TIME[2021-04-21T07:55:38.093Z]])
<https://tools.ietf.org/html/rfc3080#section-5.2>

[68] [CITE@en[rfc3977]], [TIME[2021-06-22T06:40:51.000Z]] <https://datatracker.ietf.org/doc/html/rfc3977#section-3.3.3>

[69] [CITE@en[rfc3977]], [TIME[2021-06-22T06:44:55.000Z]] <https://datatracker.ietf.org/doc/html/rfc3977#section-8.1>

[71] [CITE@en[rfc3659]]
([TIME[2021-07-16T03:25:36.000Z]])
<https://datatracker.ietf.org/doc/html/rfc3659#section-7.5>

[72] [CITE@en[rfc3939]]
([TIME[2021-07-27T07:43:02.000Z]])
<https://datatracker.ietf.org/doc/html/rfc3939#section-3.3>

[87] [CITE@en[raml-spec/versions/raml-10/raml-10.md at master · raml-org/raml-spec · GitHub]], [TIME[2025-11-07T14:36:15.000Z]] <https://github.com/raml-org/raml-spec/blob/master/versions/raml-10/raml-10.md/#security-scheme-types>
