跳到主要内容

附录 A. 呈现问题

本附录仅供参考,它不是本规范的规范性组成部分。

本文档描述的字符串表示并不打算在未经转换的情况下直接呈现给人类用户。不过,有时向用户呈现未转换的 DN 字符串可能正是所需的做法。本节讨论与呈现未转换 DN 字符串相关的问题;与呈现已转换 DN 字符串相关的问题不在本附录的讨论范围之内,字符编码转换 (transcoding) 的问题亦然。

本附录为向用户呈现 DN 字符串的应用程序提供指导。本节并不全面,它没有讨论实现者可能面临的所有呈现问题。

并非所有用户界面都能够显示全部 Unicode 字符,某些 Unicode 字符是无法显示的。

建议人机界面使用可选的十六进制对转义机制(第 2.3 节)来生成适合显示给用户的字符串表示。例如,应用程序可以生成一个用于显示的 DN 字符串,把 AttributeValue 的字符串表示中出现的所有不可打印字符都转义(如第 4 节的最后一个示例所示)。

当 DN 字符串以自由格式文本显示时,往往需要把 DN 字符串与周围的文本区分开来。这通常借助空白来实现(如第 4 节所示),但需要注意,DN 字符串本身也可能以空白结尾。细心的读者会注意到,第 3 节规定 '<' (U+003C) 和 '>' (U+003E) 这两个字符只有在转义之后才允许出现在 DN 字符串中。这两个字符正是打算用在自由格式文本中,用来把 DN 字符串与周围文本区分开的。例如,<CN=Sam\ > 标识了一个 DN 的字符串表示,该 DN 由一个 RDN 组成,RDN 包含一个 AVA(即 commonName (CN) 值 'Sam '),并以此与周围的文本相区分。应当向用户说明:包裹用的 '<' 和 '>' 字符并不是 DN 字符串的一部分。

DN 字符串可能相当长。在呈现时,对过长的 DN 字符串折行往往是有益的。折行应当在 RDN 分隔符之后插入空白来实现,必要时也可以在 AVA 分隔符之后插入空白。应当向用户说明:插入的空白不是 DN 字符串的一部分,在 LDAP 中使用之前必须去除。例如,下面这个 DN 字符串就很长:

CN=Kurt D.  Zeilenga,OU=Engineering,L=Redwood Shores,
O=OpenLDAP Foundation,ST=California,C=US

因此为了便于阅读,已将它折行。多余的空白必须在该 DN 字符串用于 LDAP 之前去除。

不建议通过插入空白来折行,因为用户可能无法分辨哪些空白属于 DN 字符串,哪些空白是为了便于阅读而添加的。

另一种替代方案是使用 LDAP 数据交换格式 (LDIF) [RFC2849]。例如:

# This entry has a long DN...
dn: CN=Kurt D. Zeilenga,OU=Engineering,L=Redwood Shores,
O=OpenLDAP Foundation,ST=California,C=US
CN: Kurt D. Zeilenga
SN: Zeilenga
objectClass: person