2

我正在使用 Oxygen 进行(我的第一个)DITA 项目,并调用 FOP 来生成 PDF 输出。试图弄清楚链上的所有内容都在做什么,链在哪里:文档->元素->类->.xsl中的类模板定义-> attr.xsl中的属性设置

除了类模板定义之外,我对所有内容都做得很好,它似乎总是涉及以下行:<xsl:call-template name="commonattributes"/>

该模板存储在哪里以及如何配置?

(我发现很多问题显示了调用此模板或其他模板的正确语法,但不是这样做的实际含义。)

4

2 回答 2

2

我假设您使用的是 DITA Open Toolkit (OT)。在 OT 的 2.2.4 版中,此命名模板位于以下文件中:

DITA-OT/plugins/org.dita.pdf2/xsl/fo/commons.xsl

该模板将其他模板应用于一些常见的属性,例如@id。我怀疑您是否需要“配置”它,并且它没有任何参数。这里是:

<!-- Process common attributes -->
<xsl:template name="commonattributes">
  <xsl:apply-templates select="@id"/>
  <xsl:apply-templates select="*[contains(@class,' ditaot-d/ditaval-startprop ')] |
                               *[contains(@class,' ditaot-d/ditaval-endprop ')]" mode="flag-attributes"/>
</xsl:template>
于 2017-02-02T03:31:03.267 回答
0

XSLT 模板可以在使用属性编写时与输入文档进行匹配,@match或者在使用属性编写时以程序方式调用@name

您遇到了一个名为 的模板的过程调用,该模板commonattributes将直接在您的 XSLT 文件中定义或通过xsl:includeor间接定义xsl:import

在没有看到定义的情况下,commonattributes我们很容易猜到它的目的是将一组通用属性的定义合并到一个位置,以便集中管理它们并通过xsl:call-templateXSLT 生成的多个元素应用它们。这是 XSLT 中的常见模式。

于 2017-02-01T19:22:17.567 回答