我正在使用Oxygen开发(我的第一个)DITA项目,并调用FOP来生成PDF输出。试图弄清楚链条上的所有内容,链条的位置:文档 - >元素 - > class - > .xsl中的类模板定义 - > attr.xsl中的属性设置
除了类模板定义之外,我一切都很好,这似乎总是涉及到这一行:<xsl:call-template name="commonattributes"/>
该模板存储在何处以及如何配置?
(我发现很多问题都显示了调用此模板或其他模板的正确语法,但不是这样做实际意味着什么。)
答案 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:include
或xsl:import
间接定义。
如果没有看到commonattributes
的定义,我们可以很容易地猜到它的目的是将一组公共属性的定义合并到一个位置,以便集中管理并通过xsl:call-template
应用它们XSLT生成的多个元素。这是XSLT中的常见模式。