[1] 
[DFN[[RUBYB[処理指令][processing instruction]]]] ([DFN[PI]])
は、
[[タグ]]で明示される[[要素]]が[[文書]]の構造を表現する ([[一般化マーク付け]]) のに対し、
特定の処理系に対して、その部分の処理をどうするのかを指令する ([[固有マーク付け]])。

[2] >>1 文書がどう表現されるかを、文書の構造によって間接的に記述する SGML の思想では、処理指令は使わないに越したことはありません。特定処理系に依存しちゃいますから。でも、[[表現と構造の分離]]は完全には困難であるので、しばしば、特定の処理系に依存してしまうことは承知の上で、実際的な処理の内容を文書の一部に指定したいこともあります。そういうときに使います。

[FIG(quote)[ [25] 

> [[文書処理]]を[[制御]]する[[システム依存]]の[[データ]]からなる[[マーク]]。 [INS[Processing instruction。 [SRC[[[JIS X 4151]]‐1992 3. (127)]]]]

]FIG]

* SGML と XML

[3] おそらく現在最もよく使われている処理指令が、 [[XML宣言]]でしょう。 [WEAK[(XML 的には XML 宣言は処理指令ではありませんが、 SGML 的には処理指令です。)]] これも、 [[XML処理系]]という特定の処理系に対して処理を指令 ([[encoding]] とか、 XML の版とかを指定) するのですから、「特定の処理系に依存している」といえます。

[4] SGML では、処理指令の内容は自由に記述できました。 SGML 以前の従来の処理指令記述法をそのまま使えたのです。

一方で、 XML では、 [CODE[処理指令対象 [[S]] 処理指令内容]] という構成に限定されています。処理指令内容は相変わらず自由文ですが、処理指令対象は [CODE(XML)[[[Name]]]] (実質 [CODE(XML)[[[NCName]]]]) でないといけません。

[6] >>4 この「処理指令対象」の名前は、[[記法宣言]]を使って宣言すること''も''できます。

* 認知様相 PI (SGML)

[17] この[[認知様相]]である[[区切子]]は、
[[処理指令]]の中で[[認知]]します。

仕様書: [[JIS X 4151]]‐1992 8.6.1

[18] 認知される[[区切子機能]]:
,区切子機能名	,規格参照区切子	,意味
,[CODE(SGML)[[[pic]]]]	,[SAMP(SGML)[>]]	,[[処理指令]]閉じ

[19] 
認知様相 [CODE(SGML)[PI]] で認知されるのは、
[CODE(SGML)[pic]] だけです。つまり、処理指令では、
その処理指令自身を終える [CODE(SGML)[pic]] はなんでも書くことができて、
すべて[[システムデータ]]として扱われます。
([CODE(SGML)[pic]] と同じ文字列をシステムデータに含めるための代替表現のようなものすら、
[[SGML]] 的にはありません。)

* [CODE(DOMi)@en[ProcessingInstruction]] 節点・[CODE(DOMi)@en[ProcessingInstruction]] 界面 (DOM)

[20] [[DOM1]] では、[RUBYB[処理指令節] [[CODE(DOM)[ProcessingInstruction]] node]]はどんな種類の子[[節]]も持つことは出来ません。

[21] 処理指令節は [[XML]] の[[処理指令]]に対応しています。

[22] [CODE(DOM)[[[Node]]]] 界面を継承して:
,読取専用属性,[[target]],処理指令対象,[DOM1]
,属性        ,[[data]]  ,処理指令内容,[DOM1]

[23] 仕様書:

[REFS[
= [DOM 1] [CITE@en[Document Object Model (Core) Level 1]]
<IW:DOM1:"level-one-core.html#ID-1004215813">
= [DOM 2] [CITE@en[Document Object Model Core]]
<IW:DOM2:"Core/core.html#ID-1004215813">
= [DOM 3] [CITE@en[Document Object Model Core]]
<IW:DOM3:"Core/core.html#ID-1004215813">
]REFS]

[24] [CODE(DOMi)@en[ProcessingInstruction]] ([[処理指令]])
[[節点]]に対応するもの:
:[[SGML]] [[実体]]:[[処理指令]]
:[[XML]] [[実体]]:[[処理指令]]
:[[XML情報集合]]:[CODE(InfoItem)[[[処理指令]]]]
([CODE(InfoItem)@en[[[Processing Instruction]]]]) [[情報項目]]
:[[XPath 1.0]] [[データ・モデル]]:[[処理指令]][[節点]]
:[[XML DTD]] における[[宣言]]:[[記法宣言]]

* 歴史

[29] [[SCRIPT]]

* メモ

- [7] 最近は[DFN[処理命令]]と呼ぶのが流行ってるぽ。
- [8] ''www-tag@w3.org from February 2002: PIs considered harmful Was: XML-SW, a thought experiment'' <http://lists.w3.org/Archives/Public/www-tag/2002Feb/0057.html>
- [9] [[HTML 4]] では、[[利用者エージェント]]は処理指令を[[レンダリング]]してはならないことになっています。 (<IW:HTML4:conform.html#sgmlconvent> 参照。)

[10]
[[TAG]] は[[処理指令]]を使うのは好ましくないと考えているそうです
(未確認)。
([[名無しさん]] [WEAK[2006-05-21 04:28:45 +00:00]])

[11]
[CITE[Bug 319654 - Processing instructions in XUL are not added to the content model]]  <https://bugzilla.mozilla.org/show_bug.cgi?id=319654>
([[名無しさん]])

[12]
[CITE[Associating Style Sheets with XML documents]] ([CODE[2000-05-03 23:40:39 +09:00]] 版) <http://www.w3.org/1999/06/REC-xml-stylesheet-19990629/>

> The use of XML processing instructions in this specification should not be taken as a precedent. The W3C does not anticipate recommending the use of processing instructions in any future specification. 

([[名無しさん]])

[13]
[CITE@en-us[XLIFF 1.1 Specification]] ([TIME[2006-07-08 02:30:08 +09:00]] 版) <http://www.oasis-open.org/committees/xliff/documents/cs-xliff-core-1.1-20031031.htm#AppNaming_PI>

この仕様では一部の機能の動作を[[処理指令]]により制御することを認めています
(が、具体的にどう実現するべきなのかには言及がありません)。
[CODE(XML)@en[[[xliff-]]]] で始まる[[対象名]]を予約していますが、
この仕様自体は何も定義していません。
([[名無しさん]])



[14] [CITE@en[XQuery and XPath Data Model 3.0]]
( ([TIME[2014-04-08 07:00:06 +09:00]] 版))
<http://www.w3.org/TR/xpath-datamodel-3/#ProcessingInstructionNode>

[15] [[WebDAV]] [[文書]]では、[[処理指令]]は無視する[['''べきです''']] [SRC[>>5]]。
[[WebDAV]] を拡張する仕様は[[処理指令]]に[[規定]]として動作を定義する[['''べきではありません''']] [SRC[>>5]]。

[REFS[
- [5] [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-17>
]REFS]


[FIG(quote)[
[FIGCAPTION[
[16] [CITE@en[RFC 7749 - The "xml2rfc" Version 2 Vocabulary]]
([TIME[2016-02-04 22:54:51 +09:00]] 版)
<https://tools.ietf.org/html/rfc7749#section-1>
]FIGCAPTION]

> Processing Instructions (Section 2.6 of '''['''XML''']''') generally are specific
>    to a given processor and thus are not considered to be part of the
>    vocabulary.  See Section 4.1 of '''['''TCLReadme''']''' for a list of the
>    Processing Instructions supported by the first implementation of an
>    xml2rfc processor.
> 

]FIG]



[26] 
[CITE[[[JIS X 4153:1998]][BR[]]文書スタイル意味指定言語(DSSSL)  解説]]
[TIME[2001-08-19T05:29:36.000Z]], [TIME[2023-11-19T13:04:37.509Z]] <http://www.y-adagio.com/public/standards/jis_dsssl/tutr.txt>


>  訳語選定に際しては,SGMLを規定しているJIS X 4151,SGMLの拡張規格であるJIS X 4155, 及びSGML関連規格であるJIS X 4171との整合を第一に配慮した。しかし次の用語などについては,その後関連分野で普及した訳語表記に従っている。
>
>  原語                           訳語           
>  ------------------------------------------------
>[SNIP[]]  
>  processing instruction         処理命令       


[27] [CITE@EN-US[The XML Object Model in Internet Explorer 4.0]], [[Microsoft Corporation]], [TIME[2024-08-17T05:54:19.000Z]], [TIME[2000-10-18T15:21:41.881Z]] <https://web.archive.org/web/20001018151202/http://msdn.microsoft.com/xml/articles/xmlmodel.asp>

[28] >>27 [CH[?]] + [[対象名]]が[[処理指令]]の[[タグ名]]扱い。
