跳到主要内容

附录 B. 相对 RFC 2141 的变更

本文档对 [RFC2141] 的语法和语义做出了实质性变更:

B.1. 相对 RFC 2141 的语法变更​

[RFC2141] 中所提供的 URN 语法是在 [RFC3986] 中更新后的 URI 规范之前定义的. 本文档更新 URN 语法的定义, 以做到以下几点:

  • 确保与 URI 语法一致.

  • 便于 URN 与类似 URI 查询和片段的参数一起使用.

  • 允许影响 URN 解析的参数.

  • 使 URN 更易于与包含 "/" 字符的非 URN 标识符系统一起使用.

具体而言, 本规范做了以下事情:

  • 扩展 URN 语法以显式允许 "/", "?" 和 "#" 这些字符, 它们此前被 RFC 2141 保留供未来使用. 这一变更实际上还允许 URI 语法的若干组成部分, 尽管并不必然把这些组成部分与 URI 语义绑定.

  • 为一种可在与 URN 解析服务交互中使用的附加组成部分定义一般语法.

  • 不允许在 NID 末尾出现 "-".

  • 允许在 NSS 中出现 "/", "~" 和 "&" 字符.

  • 做了若干较小的语法调整.

B.2. 相对 RFC 2141 的其他变更​

  • 正式把 "urn" 注册为一种 URI 方案.

  • 允许现在称为 r-component, q-component 和 f-component 的组成部分.

此外, 部分文本已被更新, 以与 URI 的定义 [RFC3986] 以及向 IANA 注册信息的流程 [RFC5226] 保持一致, 并与关于安全 [RFC3552], 隐私 [RFC6973] 和标识符比较 [RFC6943] 的更现代的指南保持一致.