我正在使用dita-ot 2.4。我需要在我的文档中添加一个新元素。它应该通过XSL转换转换为一组不同的元素。我创建了一个插件,用于定义新元素及其属性,并将其添加到现有主题模板中。我还在输出处理插件中添加了一些基本的XSL处理:
<xsl:attribute-set name="rootelement">
<xsl:attribute name="font-weight">bold</xsl:attribute>
</xsl:attribute-set>
<xsl:template match="rootelement">
<fo:inline xsl:use-attribute-sets="rootelement">
<xsl:call-template name="commonattributes"/>
<xsl:apply-templates/>
</fo:inline>
</xsl:template>
所以,现在我可以在我的文档中写下以下内容,它将以粗体显示(PDF格式):
<rootelement>
test
</rootelement>
然而,我最初的目标是为<rootelement>
创建一个可以发出其他元素的转换,例如,像这样:
<xsl:template match="rootelement">
<b>Some text:</b>
<xsl:value-of select="current()" />
<i>Some other text</i>
</xsl:template>
实际转换有点复杂并涉及表格,所以我不能只将显示属性应用于此元素。
是否可以在DITA中实现此类行为?我需要专业化吗?
编辑:澄清一下,这是一段似乎有用的样式表:
<xsl:template match="rootelement">
<xsl:text>
Text:
</xsl:text>
<fo:inline xsl:use-attribute-sets="rootelement">
<xsl:call-template name="commonattributes"/>
<xsl:apply-templates/>
</fo:inline>
</xsl:template>
rootelement
的每个实例都附加&#34;文字:&#34;。
另一方面,此样式表不会产生预期结果:
<xsl:template match="rootelement">
<i>
<xsl:text>
Text:
</xsl:text>
</i>
<fo:inline xsl:use-attribute-sets="rootelement">
<xsl:call-template name="commonattributes"/>
<xsl:apply-templates/>
</fo:inline>
</xsl:template>
&#34;文字:&#34;部分而不是用斜体印刷只是消失了。此外,只需在源XML中放置<rootelement><i>Text: </i> some text</rootelement>
就可以正常工作。
答案 0 :(得分:0)
您需要使用专业化来实施。您应该能够使用模板匹配来创建一个及其子项,以将所需内容放在输出流中。您的样本具有XSLT方面所需的基础知识;你只需要通过表结构来定义你需要的东西。