5.1.1. 导入并包含修订

发布的模块随着时间的推移而独立发展为了实现这一发展,可以使用特定的修订版导入模块。最初,模块在写入模块时导入当前其他模块的修订版。随着未来版本导入模块的发布,导入模块不受影响,其内容不变。当模块的作者准备移动到最近发布的导入模块的修订版时,模块将被重新发布,并带有更新的“import”语句。通过重新发布新版本,作者明确表示接受导入模块的任何更改。

对于子模块,这个问题是相关的,但更简单。包含子模块的模块或子模块可以指定包含的子模块的修订版本。如果某个子模块发生更改,则需要更新包含该子模块的任何模块或子模块以引用新的修订版本。

例如,模块“b”导入模块a。

  1. module a {
  2. yang-version 1.1;
  3. namespace "urn:example:a";
  4. prefix "a";
  5. revision 2008-01-01 { ... }
  6. grouping a {
  7. leaf eh { .... }
  8. }
  9. }
  10. module b {
  11. yang-version 1.1;
  12. namespace "urn:example:b";
  13. prefix "b";
  14. import a {
  15. prefix "p";
  16. revision-date 2008-01-01;
  17. }
  18. container bee {
  19. uses p:a;
  20. }
  21. }

当“a”的作者发布一个新的修订版本时,对于“b”的作者来说,这些变化可能是不可接受的。如果新的修订是可以接受的,那么“b”的作者可以在“import”语句中重新发布修订版本。

如果一个模块没有通过特定的修订导入,则未定义使用哪个修订。