“<xsl:call-template name =”commonattributes“>”是什么意思,它是如何使用的?

时间:2017-02-01 17:36:08

标签: xslt linq-to-xml xsl-fo dita dita-ot

我正在使用Oxygen开发(我的第一个)DITA项目,并调用FOP来生成PDF输出。试图弄清楚链条上的所有内容,链条的位置:文档 - &gt;元素 - &gt; class - &gt; .xsl中的类模板定义 - &gt; attr.xsl中的属性设置

除了类模板定义之外,我一切都很好,这似乎总是涉及到这一行:<xsl:call-template name="commonattributes"/>

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

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

2 个答案:

答案 0 :(得分:1)

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

DITA-OT /插件/ org.dita.pdf2 / XSL / FO / commons.xsl

此模板将其他模板应用于某些常见属性,如@id。我怀疑你需要&#34;配置&#34;它,它没有任何参数。这是:

<!-- 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>

答案 1 :(得分:0)

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

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

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