资源ID坐标

坐标语法和顺序

一个资源ID包含五个坐标:版本、组件、模块、家族和文件。Antora通过根据文件、标准目录集组件版本描述符中的信息为源文件构建资源ID。您可以使用分配给资源的资源ID坐标序列引用任何其他资源,无论每个资源所属的组件版本如何。

图1显示了完全限定资源ID中的坐标类型及其顺序。

完全限定的Antora资源ID图示
图1. 完全限定的资源ID

完全限定的资源ID是指所有坐标都已指定的资源ID。您可能不经常使用资源的完全限定资源ID。在引用资源时指定的资源ID坐标数量取决于:

  • 当前页面的组件版本和模块与目标资源的关系,

  • 目标资源的家族,以及

  • 用于引用目标资源的AsciiDoc语法。

目标资源是指在AsciiDoc宏、包含指令或其他语法中通过指定其资源ID引用的资源源文件。当前页面是包含引用目标资源的AsciiDoc语法的页面文件。

当前页面中引用目标资源的xref示例
图2. 当前页面,文件名为satellites.adoc,包含一个引用资源的xref宏
图2中, satellites.adoc是当前页面,文件名为 modes.adoc的资源是被xref宏引用的目标资源。以下各节描述了如何确定目标资源的每个坐标的值以及何时使用每个坐标。

版本坐标

目标资源所属组件的版本相同。版本的值分配给 版本键version键在定义资源组件版本的 antora.yml文件中指定,或者在您的playbook中指定Antora从何处收集组件版本文件。

@)结尾。如果未指定组件坐标,则将使用当前组件。如果指定了组件坐标但未指定版本坐标,则将选择该组件的最新版本。

组件坐标

antora.yml文件中的 名称键指定。

:)。如果指定了组件坐标但未指定版本坐标,则将选择该组件的最新版本。

模块坐标

:)。

linkkbdmenu等,您可能需要通过在坐标的该部分前加上反斜杠来转义该部分。例如,像 monolinkredmenu这样的模块坐标可能需要在资源ID中输入为 mono\linkred\menu

家庭坐标

家庭坐标标识目标资源所属家庭的名称。该家庭来源于存储资源的家庭目录。在构建资源ID时,从家庭名称的末尾删除“s”,并用美元符号($)替换。有效的家庭坐标包括page$image$partial$example$attachment$

是否需要在资源ID中输入家庭坐标取决于:

  • 目标资源的家庭,以及

  • 用于引用目标资源的AsciiDoc语法。

例如,如果您使用xref宏引用页面,则默认情况下不需要page$家庭坐标,因为当未指定家庭坐标时,xref宏会自动应用它。以下表列出了根据被引用的资源和引用资源的语法确定是否需要家庭坐标的情况。

被引用的资源 引用资源的语法 是否需要家庭坐标?

附件

Xref宏

是,需要attachment$坐标。请参阅附件

示例

包含指令

是,需要example$坐标。请参阅包含示例

图像

块图像宏

不需要,不需要家庭坐标。请参阅添加块图像图像资源ID示例

内联图像宏

不需要,不需要家庭坐标。请参阅添加内联图像图像资源ID示例

Xref宏

是,需要image$坐标

页面

Xref宏

不需要,不需要家庭坐标。请参阅Xref宏和页面链接

包含指令

不需要,不需要家庭坐标。请参阅包含页面

部分

包含指令

是,需要partial$坐标。请参阅包含部分

文件坐标

文件坐标指定目标资源源文件相对于家庭目录的路径。文件坐标必须指定资源的文件扩展名,除非:

  • 目标资源没有文件扩展名,例如Dockerfile

  • 目标资源是部分示例

位于家庭目录根目录的资源的文件坐标是资源源文件的名称和文件扩展名。

示例1. 存储在家庭目录根目录的资源
📂 modules
  📂 admin
    📂 pages (1)
      📄 modes.adoc (2)
1 pages家庭目录
2 存储在pages目录根目录的页面

例如,在示例1中显示的modes.adoc的文件坐标是modes.adoc,因为它存储在pages家庭目录的根目录中。

如果目标资源位于家庭目录的子目录中,则文件坐标必须指定到目标资源的家庭相对目录路径。

示例2. 存储在家庭目录子目录中的资源
📂 modules
  📂 admin
    📂 pages
      📄 modes.adoc (1)
      📂 fields (2)
        📂 level (3)
          📄 routes.adoc (4)
          📄 terrain.adoc (5)
1 存储在pages目录根目录的页面
2 pages目录中的子目录
3 fields子目录中的子目录
4 存储在level子目录中的页面
5 存储在level子目录中的页面

示例2中显示的页面terrain.adoc存储在level子目录中。对于terrain.adoc的文件坐标是fields/level/terrain.adoc。如果modes.adoc(当前页面)引用terrain.adoc(目标资源),则在目标资源的资源ID中指定的文件坐标是fields/level/terrain.adoc。如果terrain.adoc(当前页面)引用modes.adoc(目标资源),则在目标资源的资源ID中指定的文件坐标是modes.adoc请记住,目标资源的文件坐标始终是从家庭目录计算的。

当目标资源和当前页面都位于家庭目录的同一子目录中时,可以使用相对路径标记./来缩写目标资源文件坐标的家庭相对目录路径。

示例3. 存储在同一子目录中的资源
📂 modules
  📂 admin
    📂 pages
      📂 fields
        📂 level
          📄 routes.adoc (1)
          📄 terrain.adoc (2)
1 存储在level子目录中的页面
2 存储在level子目录中的页面

示例3中显示的页面routes.adocterrain.adoc都存储在level子目录中。如果routes.adoc(当前页面)引用terrain.adoc(目标资源),则在目标资源的资源ID中可以将文件坐标指定为./terrain.adoc,而不是fields/level/terrain.adoc