我有以下结构
<informalfigure xmlns="http://docbook.org/ns/docbook">
<info>
<bibliosource>Photo: John Doe</bibliosource>
</info>
<mediaobject>
<imageobject>
<imagedata contentdepth="30mm" contentwidth="35mm" fileref="path/to/img.jpg"/>
</imageobject>
</mediaobject>
<caption>
<para>Here goes the caption for the image</para>
</caption>
</informalfigure>
<imagedata>
和<caption>
已呈现,但转化后<bibliosource>
已消失。
我正在使用docbook-xsl-1.77.0/xhtml/docbook.xsl
进行转换...我需要一些关于在何处/如何更改xslt的指导,以便<bibliosource>
正确转换。
谢谢!
答案 0 :(得分:1)
这是一个简单的解决方案。将以下内容添加到XHTML自定义层:
<xsl:template match="d:caption">
<div>
<xsl:apply-templates select="." mode="common.html.attributes"/>
<xsl:call-template name="id.attribute"/>
<xsl:if test="@align = 'right' or @align = 'left' or @align='center'">
<xsl:attribute name="align"><xsl:value-of select="@align"/></xsl:attribute>
</xsl:if>
<xsl:apply-templates/>
</div>
<div><xsl:value-of select="../d:info/d:bibliosource"/></div> <!-- This line added -->
</xsl:template>
以上内容适用于namespace-aware XSLT样式表( docbook-xsl-ns )。
如果您使用非命名空间感知的样式表( docbook-xsl ),相应的自定义将变为:
<xsl:template match="caption">
<div>
<xsl:apply-templates select="." mode="common.html.attributes"/>
<xsl:call-template name="id.attribute"/>
<xsl:if test="@align = 'right' or @align = 'left' or @align='center'">
<xsl:attribute name="align"><xsl:value-of select="@align"/></xsl:attribute>
</xsl:if>
<xsl:apply-templates/>
</div>
<div><xsl:value-of select="../blockinfo/bibliosource"/></div> <!-- This line added; note blockinfo -->
</xsl:template>
<bibliosource>
元素的文字将显示在标题正下方的单独<div>
中。原始模板位于graphics.xsl中。