3. 構文
構文定義は、LDAP ディレクトリに格納される属性値の構造を制約し、LDAP プロトコルで転送される属性およびアサーション値の表現を決定します。
ディレクトリ操作に必要な構文、または一般的に使用される構文は、このセクションで指定されています。サーバーは、本書に記載されているすべての構文を認識すべき (SHOULD) ですが、それ以外にそれらをサポートすることは要求されず、他の構文を認識またはサポートしてもかまいません (MAY)。ただし、相互運用性を妨げるため、追加の任意の構文の定義は推奨されません。クライアントおよびサーバーの実装は通常、新しい構文を動的に認識する機能を備えていません。
3.1. 一般的な考慮事項
各構文の説明では、その構文に準拠する属性またはアサーション値が LDAP プロトコル [RFC4511] で転送される際にどのように表現されるかを指定します。この表現は、属性値をエンコードする他の方法(例えば、X.500 [X.500] ディレクトリで使用される基本エンコーディングルール (BER) エンコーディング [BER])と区別するために、LDAP 固有エンコーディングと呼ばれます。
特定の属性構文の LDAP 固有エンコーディングは、常にオクテット整列された値を生成します。可能な限り、LDAP 構文のエンコーディングルールは、LDAP を実装するクライアントによってほとんどまたは全く翻訳せずに表示できる文字列を生成すべきです。ただし、クライアントは、認識されない構文の値の LDAP 固有エンコーディングが人間が読める文字列であると想定してはなりません (MUST NOT)。人間が読める表現を生成することが合理的でない場合がいくつかあります(例えば、JPEG 構文)。
各 LDAP 構文は、ドット区切りの十進形式で表現されるオブジェクト識別子 [ASN.1] で一意に識別されます(構文には短い記述名は定義されていません)。これらのオブジェクト識別子は、ユーザーに表示することを意図したものではありません。本書で定義されている構文のオブジェクト識別子は、付録 A にまとめられています。
文字列ベースの構文を持つ属性値の文字数、または他のすべての構文の値のオクテット数の推奨最小上限は、属性タイプ定義の構文の OBJECT IDENTIFIER の後に中括弧で囲んだ上限を追加することで示すことができます (MAY)([RFC4512] の <noidlen> 規則を参照)。このような上限は、構文識別子の一部とは見なされません。
例えば、属性定義の "1.3.6.1.4.1.1466.115.121.1.15{64}" は、ディレクトリサーバーがその属性の値を最大 64 文字まで許可することを示唆していますが、より長い文字列を許可する場合もあります。UTF-8 [RFC3629] は可変長エンコーディングであるため、Directory String 構文の 1 文字が複数のオクテットでエンコードされる場合があることに注意してください。したがって、64 文字の文字列は 64 オクテットを超える長さになる可能性があります。
3.2. 共通定義
以下の ABNF 規則は、第 3.3 節の多くの構文定義で使用されています。
PrintableCharacter = ALPHA / DIGIT / SQUOTE / LPAREN / RPAREN /
PLUS / COMMA / HYPHEN / DOT / EQUALS /
SLASH / COLON / QUESTION / SPACE
PrintableString = 1*PrintableCharacter
IA5String = *(%x00-7F)
SLASH = %x2F ; スラッシュ ("/")
COLON = %x3A ; コロン (":")
QUESTION = %x3F ; 疑問符 ("?")
<ALPHA>, <DIGIT>, <SQUOTE>, <LPAREN>, <RPAREN>, <PLUS>, <COMMA>, <HYPHEN>, <DOT>, <EQUALS>, および <SPACE> 規則は [RFC4512] で定義されています。