[20] [DFN[[RUBYB[記法]@en[notation]]]]は、 [[SGML]] において [[SGML]] 以外の“データ形式”を識別するために使われる概念です。 * 用法 [21] [[記法]]は次のように使われます。 - [[SGML]] [[データ実体]]や [[XML]] [[非解析対象実体]]について、その形式を表すものとして ([[実体宣言]]に[[記法名]]を指定) - [[SGML]] や [[XML]] の[[要素]]の[[内容]]について、その形式を表すものとして ([[記法属性]]に[[記法名]]を指定) - [[XML]] の[[処理指令]]について、その種別を表すものとして ([[対象名]]として[[記法名]]を利用) [22] 特に[[引数実体]]を[[宣言]]する際に[[記法]]を指定することでその[[実体]]は[[DTDデータ実体]]となります。 すなわち、 [[SGML DTD]] 以外でそれと同様の[[宣言]]を行う他のデータ形式のものを参照できるようです。 [23] [[要素]]の[[内容]]を表すものの例として、初期の [[HTML]] の案においては [CODE(HTMLe)@en[[[style]]]] [[要素]]の[[内容]]を「[[CSS]]」や「[[DSSSL]]」などの[[記法]]を指定する[[記法属性]]によって指定することが検討されていました。 * 記法 (SGML) [6] [[要素]]の[[データ内容]]又は[[データ実体]]の[[応用依存]]の表現法であって、通常の[[文書文字集合]]の意味を拡張又は変更を表す。[INS[(ママ)]] Data content notation。 備考 [[記法属性]]によって[[要素内容]]を指定し、[[実体宣言]]の[[記法名引数]]によってデータ実体を指定する。 ([[JISX4151]]‐1992 定義 (178)) [7] >>6 にある JIS の備考はいささか意味不明ですが、要は、[[要素の内容]]の記法を指定したいときは [CODE(SGML)[[[NOTATION]]]] 型の属性を、[[データ実体]]の記法を指定したいときは [CODE(SGML)[[[NDATA]]]] 引数を使いなさいと、遠まわしに謎の倒置法で説明していると思われます。 [8] 単に[DFN[記法]]とだけ言えばそれで意味が通じることも少なくないので、普段はそう呼ばれます。 [19] [[データ実体]]に対しては[[データ属性]]を指定することができます。[[要素]]に対する[[属性]]が[[要素型]]に関する[[属性定義並び宣言]]で[[宣言]]されるように、 [[記法]]に関する[[属性定義並び宣言]]によって[[データ属性]]は[[宣言]]されます。 * 記法形式 (SGML) [18] > :3.81 [DFN[[RUBYB[記法形式]@en[notation form]]]]: [[データ実体]]と[[記法データ内容]]に適用する[[体系的形式]]。 出典: [[ISO/IEC 10744]]:1997 [CSECTION@en[3 Definitions]] * 記法 (XML) [1] > [定義: [DFN[[RUBY[記法][きほう]@en[notation]]]]は、 [[非解析対象実体]]の[[書式]]、 [[記法属性]]が付された[[要素]]の[[書式]]、 または[[処理指令]]の対象となる[[応用]]を[[名前]]によって[[識別]]します。] [SRC@en[XML1 4.7]] [5] 仕様書: - [[XML 1]] --[CSECTION@en[4.7 Notation Declarations]] [2] XML では、[[非解析実体]]の[[実体宣言]]についての [[XML//妥当性制約]]「記法が宣言されていること (Notation Declared)」 があります。 >The Name must match the declared name of a notation. [WEAK[([CODE(XML)[[[Name]]]] は宣言された記法の名前に一致しなければならない。)]] [3] この妥当性制約、その[[実体]]が[[参照]]されなかった場合や〃名前の実体の宣言が複数あって、 その宣言が無視される時にも適用されるのでしょうか? 特に明記はされていませんが、 妥当性制約の文章がそのような可能性を無視して生成規則 [CODE(XML)[Name]] の部分が[[一致]]しなければならないとだけ述べていますから、 そのような場合でも適用されると考えられます。 (See also [[実体宣言]>>6]) [4] で、 >>2 で宣言されていることって書いてありますけど、 その[[記法宣言]]は実体宣言の後ろでもいいんでしょうか? 前じゃないといけないんでしょうか? 「the declar''ed'' name」とありますけど、 これは[[過去形]]ではなく[[過去分詞]] ([[受身]]的意味) ですね。 というわけで [[JISX4151]]‐1992 9.5.5 を参照してみると、 「記法名は、この実体宣言と同一の[[文書型定義]]の中で宣言していなければならない。 その宣言は、この実体宣言に先立っていなくても差し支えないが、 その実体への参照よりも前になければならない。」 なるほど、宣言時に宣言の構文的妥当性を、 参照時に宣言の内容的妥当性を検査するという SGML 全体の設計によく整合しています。 XML では (見落としてなければ) 特に記述はありませんが、 同じと考えていいですかね? * 記法宣言 [9] [[記法]]を[[宣言]]する[[マーク宣言]]が、 [DFN[[RUBYB[記法宣言][[[notation]] declaration]]]]です。 [WEAK[(では説明になってないか。)]] 記法宣言は [[DTD]] の一部として記述します。 [10] XML では、[[対象名]]が同じである複数の記法宣言を記述することは出来ません。 - [11] [CODE(ABNF)[[DFN[記法宣言]] := [CODE(SGML)[[[mdo]]]] [[NOTATION]] 1*[[ps]] [[記法名]] 1*ps [[記法識別子]] *ps [CODE(SGML)[[[mdc]]]] ;; (148)]] * キーワード [CODE(SGML)@en[NOTATION]] [12] [[記法宣言]]をあらわす[[見出し語]]。 [13] [[記法識別子]]であることをあらわす[[公開文種別]]。 [14] [[ISO/IEC 10744]]:1997 で[[字句模型]]に [CODE(SGML)@en[[[NOTATION]]]] が現れた場合、その [CODE(SGML)@en[[[NOTATION]]]] の適用先は、[[クライアント文書]]を最初に探し、 なければ[[体系的文書]]を[[クライアント文書]]に近い側から当該[[字句模型]]が使われている[[体系]]まで順に探して最初に見つかったものとなります [SRC@en[[[ISO/IEC 10744]]:1997 5.2]]。 [REFS[ - [15] [[ISO/IEC 10744]]:1997 -- [CSECTION@en[5.2 Lexical type]] ]REFS] [16] [CITE@EN[W3C XML Schema Definition Language (XSD) 1.1 Part 2: Datatypes]] ( ([TIME[2012-04-05 06:34:51 +09:00]] 版)) [17] [CITE@EN[W3C XML Schema Definition Language (XSD) 1.1 Part 1: Structures]] ( ([TIME[2012-04-05 06:34:07 +09:00]] 版)) [24] [CITE@en[XQuery and XPath Data Model 3.0]] ( ([TIME[2014-04-08 07:00:06 +09:00]] 版))