我正在使用 Oxygen 进行(我的第一个)DITA 项目,并调用 FOP 来生成 PDF 输出。试图弄清楚链上的所有内容都在做什么,链在哪里:文档->元素->类->.xsl中的类模板定义-> attr.xsl中的属性设置
除了类模板定义之外,我对所有内容都做得很好,它似乎总是涉及以下行:<xsl:call-template name="commonattributes"/>
该模板存储在哪里以及如何配置?
(我发现很多问题显示了调用此模板或其他模板的正确语法,但不是这样做的实际含义。)
我正在使用 Oxygen 进行(我的第一个)DITA 项目,并调用 FOP 来生成 PDF 输出。试图弄清楚链上的所有内容都在做什么,链在哪里:文档->元素->类->.xsl中的类模板定义-> attr.xsl中的属性设置
除了类模板定义之外,我对所有内容都做得很好,它似乎总是涉及以下行:<xsl:call-template name="commonattributes"/>
该模板存储在哪里以及如何配置?
(我发现很多问题显示了调用此模板或其他模板的正确语法,但不是这样做的实际含义。)
我假设您使用的是 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>
XSLT 模板可以在使用属性编写时与输入文档进行匹配,@match
或者在使用属性编写时以程序方式调用@name
。
您遇到了一个名为 的模板的过程调用,该模板commonattributes
将直接在您的 XSLT 文件中定义或通过xsl:include
or间接定义xsl:import
。
在没有看到定义的情况下,commonattributes
我们很容易猜到它的目的是将一组通用属性的定义合并到一个位置,以便集中管理它们并通过xsl:call-template
XSLT 生成的多个元素应用它们。这是 XSLT 中的常见模式。