記法宣言

記法 (SGML)

[20] 記法 (notation) は、 SGML において SGML 以外の“データ形式”を識別するために使われる概念です。

仕様書

用法

[21] 記法は次のように使われます。

[22] 特に引数実体宣言する際に記法を指定することでその実体DTDデータ実体となります。 すなわち、 SGML DTD 以外でそれと同様の宣言を行う他のデータ形式のものを参照できるようです。

[23] 要素内容を表すものの例として、初期の HTML の案においては style 要素内容を「CSS」や「DSSSL」などの記法を指定する記法属性によって指定することが検討されていました。

[35] データ形式を表すものとして拡張子MIME型のようなものがありますが、 記法SGML でそれに相当する概念といえます。

記法 (SGML)

[6] データ (ない) (よう) () (ほう) (data content notation) とは JIS X 4151‐1992 定義 (178):

要素データ内容又はデータ実体応用依存の表現法であって、通常の文書文字集合の意味を拡張又は変更を表す。(ママ)

備考 記法属性によって要素内容を指定し、実体宣言記法名引数によってデータ実体を指定する。

[7] >>6 にある JIS の備考はいささか意味不明ですが、要は、要素の内容の記法を指定したいときは NOTATION 型の属性を、データ実体の記法を指定したいときは NDATA 引数を使いなさいと、遠まわしに謎の倒置法で説明していると思われます。

[8] 単に記法とだけ言えばそれで意味が通じることも少なくないので、普段はそう呼ばれます。

[34] データ実体に使う記法データ内容記法と言うのは用語としておかしくも感じられますが、 SGML として特にデータ内容記法データ実体記法を区別していないので、 どちらもデータ内容記法というのでしょう。しかし修飾語があまり意味をなしていないことから、 単に記法ともいうのでしょう。

[19] データ実体に対してはデータ属性を指定することができます。要素に対する属性要素型に関する属性定義並び宣言宣言されるように、 記法に関する属性定義並び宣言によってデータ属性宣言されます。

記法形式 (SGML)

[18]

3.81 記法形式 (notation form)
データ実体記法データ内容に適用する体系的形式

出典: ISO/IEC 10744:1997 3 Definitions http://www.y12.doe.gov/sgml/wg8/docs/n1920/html/clause-3.html#def-3.81

記法 (XML)

[26] 記法 (きほう) (notation) は、 その名前により、 非解析対象実体書式記法属性が付された要素書式処理指令の対象となる応用を識別するものです >>5

[9] 記法宣言 (notation declaration) (<!NOTATION>) は、 記法名前外部識別子を示すものです >>5

文脈

[27] 記法宣言は、 DTD に含めることができます。

[28] 名前が同じ記法宣言を複数含めてはなりません >>5

処理

[10] XML処理器は、応用に対して、記法宣言によって宣言され属性値属性定義実体宣言参照された記法名前外部識別子を提供しなければなりません >>5

[1] XML処理器応用は、外部識別子を使って当該記法によるデータを処理できるヘルパーアプリケーション (のファイル名その他必要な情報) を決めることができます >>5

[29] 実体宣言等の場合とは異なり、型録によって URL解決したり、 URL を使って何らかの情報を得たりすることは特に求められていません。 この意味で記法宣言システム識別子名前空間URLと似た性質を持っているとも言えます。

メモ

[30] (SGML でなく) XML記法がどれだけ使われているかは大変怪しいところです。

[31] 要素内容要素から参照・埋め込みされているものの種別を表すためには、 MIME型がよく使われています。

[32] 処理指令対象名は、通常宣言無しで使われ、 衝突の可能性は考慮されません (し、実際衝突が問題となる場面はほとんどないでしょう)。

[2] XML では、非解析実体実体宣言についての XML//妥当性制約「記法が宣言されていること (Notation Declared)」http://www.w3.org/TR/REC-xml#not-declared があります。

The Name must match the declared name of a notation. (Name は宣言された記法の名前に一致しなければならない。)

[3] この妥当性制約、その実体参照されなかった場合や〃名前の実体の宣言が複数あって、 その宣言が無視される時にも適用されるのでしょうか?

特に明記はされていませんが、 妥当性制約の文章がそのような可能性を無視して生成規則 Name の部分が一致しなければならないとだけ述べていますから、 そのような場合でも適用されると考えられます。 (See also 実体宣言 (>>6))

[4] で、 >>2 で宣言されていることって書いてありますけど、 その記法宣言は実体宣言の後ろでもいいんでしょうか? 前じゃないといけないんでしょうか? 「the declared name」とありますけど、 これは過去形ではなく過去分詞 (受身的意味) ですね。

というわけで JISX4151‐1992 9.5.5 を参照してみると、 「記法名は、この実体宣言と同一の文書型定義の中で宣言していなければならない。 その宣言は、この実体宣言に先立っていなくても差し支えないが、 その実体への参照よりも前になければならない。」

なるほど、宣言時に宣言の構文的妥当性を、 参照時に宣言の内容的妥当性を検査するという SGML 全体の設計によく整合しています。

XML では (見落としてなければ) 特に記述はありませんが、 同じと考えていいですかね?

キーワード NOTATION

[12] 記法宣言をあらわす見出し語

[13] 記法識別子であることをあらわす公開文種別

[14] ISO/IEC 10744:1997 で字句模型NOTATION が現れた場合、その NOTATION の適用先は、クライアント文書を最初に探し、 なければ体系的文書クライアント文書に近い側から当該字句模型が使われている体系まで順に探して最初に見つかったものとなります ISO/IEC 10744:1997 5.2

メモ

[16] W3C XML Schema Definition Language (XSD) 1.1 Part 2: Datatypes ( ( 版)) http://www.w3.org/TR/2012/REC-xmlschema11-2-20120405/#NOTATION

[17] W3C XML Schema Definition Language (XSD) 1.1 Part 1: Structures ( ( 版)) http://www.w3.org/TR/2012/REC-xmlschema11-1-20120405/#cNotation_Declarations

[24] XQuery and XPath Data Model 3.0 ( ( 版)) http://www.w3.org/TR/xpath-datamodel-3/#qnames-and-notations

[25] XPath and XQuery Functions and Operators 3.0 ( ( 版)) http://www.w3.org/TR/xpath-functions-3/#NOTATION-functions

[33] RFC 3017 - XML DTD for Roaming Access Phone Book ( 版) https://tools.ietf.org/html/rfc3017#section-4