[1] [DFN[[RUBYB[外部識別子]@en[external identifier]]]]は、
[[実体宣言]]などで[[外部実体]]などを参照するための[[識別子]]であり、
[[公開識別子]]と[[システム識別子]]の2種類がありました。

* SGML

[5]
> 外部実体又は[[データ内容記法]]を[[識別]]する[[引数]]。
External identifier。
:備考:システム識別子及び公開識別子の2種類がある。
([[JISX4151]]‐1992 定義 (32))

[2] 
>[INS[([[JISX4151]]‐1992 9.1.6)]]
- 外部識別子 = ("SYSTEM" | ("PUBLIC", [[ps]]+, [[公開識別子]])) (ps+, [[システム識別子]])? —(73)
- 公開識別子 = [[最小表記]] —(74)
- システム識別子 = ([[lit]], [[システムデータ]], lit) | ([[lita]], システムデータ, lita) —(75)
> システム識別子は、公開識別子及びその他の情報から[[システム]]が補充できるのであれば、省略してもよい。
> [[SGML宣言]]で [CODE(SGML)[[[FORMAL]] YES]]
と指定してある場合、公開識別子は、[[公的公開識別子]]として解釈する。
したがって、公的公開識別子としての[[誤り]]が生じ得る。
-備考 この場合でも、公開識別子は、最小表記であることに変わりがないので、最小表記に対する要件を満たしていなければならない。
>'''量的制限''' システム識別子の長さは、その[[区切り子]]の分を除いて、量 [CODE(SGML)[[[LITLEN]]]] の値以下でなければならない。
>'''容量''' 容量値 [CODE(SGML)[[[ENTCHCAP]]]]
に対して合計する[[要素]]文の[[文字数]]において、
外部識別子に対しては、そのシステム識別子
(直接に指定してあるものであれ、補充したものであれ)
の文字数 (区切り子の分を除く。) だけを合計する。

[6]  
>
:3.32 [DFN[[RUBYB[外部識別子][external identifier]]]]:
[[SGML]] [[マーク宣言]] (普通は[[実体宣言]]) の[[引数]]であって、
外部情報物体を[[識別]]するもの。
- 注意24: 色々な方法で行われるが、次のものを含む。
-= [[公式公開識別子]]。[[大域的]]に固有な[[公開識別子]]で、
[[システム]]は表を引いて[[物体]]にアクセスすることができる。
-= [[システム識別子]]。[[ファイル識別子]]、[[蓄積庫所在]]、
[[プログラム]]の呼出し、[[データ流]]の[[位置]]、
その他[[システム]]規定の[[蓄積庫]]中の[[物体]]を[[所在付け]]する手段。


出典: [[ISO/IEC 10744]]:1997 [CSECTION[3 Definition]]
<http://www.y12.doe.gov/sgml/wg8/docs/n1920/html/clause-3.html#def-3.32>

* XML

[4] XML で使うことが出来るのは、[[文書型宣言]], [[実体宣言]], [[記法宣言]]だけです。記法宣言の場合を除いて、システム識別子は必須です。

* 処理

[8] 
[[公開識別子]]や[[システム識別子]]を具体的にどう処理するかについて、
[[SGML]] や [[XML]] は明確な規定を設けていませんでした。

[9] 
[[SGML]] は[[公式システム識別子]]により細かな[[システム識別子]]の構文と意味を定めていましたし、
[[XML]] は[[システム識別子]]を [[URL]] とする旨を定めていました。
しかし最終的にそれをどう取り扱うかは、[[実装依存]]となっていました。

[10] 
[[公開識別子]]や[[システム識別子]]の処理方法を記述する[[ファイル形式]]として、
[[SGML型録]]や[[XML型録]]がありました。

[7] 
[[XML型録]]は[[外部識別子の解決]]の処理を規定していました。

* 例

[3] 例:
-[SAMP(SGML)[PUBLIC "+//IDN example.org//ENTITIES example entity set//JA" "http://www.example.org/entities/example.ja"]]
-[SAMP(SGML)[SYSTEM]]
--[[XML]] では不正です。
-[SAMP(SGML)[PUBLIC "an example external identifier"]]
--[[XML]] では[[記法宣言]]以外では不正です。
--[CODE(SGML)[FORMAL YES]] の場合不正です。 (公的公開識別子ではありません。)
-[SAMP(SGML)[SYSTEM "http://www.example.com/example/entity"]]
-[SAMP(SGML)[SYSTEM -- notation for example.app -- "C:\SGML\NOTATION\example.app"]]
--[[XML]] では不正です。 (SGML では[[注釈]]を使えませんし、システム識別子の値は [[URI参照]]に変換可能でなければなりません [WEAK[([[XML//URI]] 参照)]]。)
