我的输入XML就是这样,
<figure id="c001_f001" counter="yes">
<subfigure>
<graphic position="center" fileref="images/9781626237896_c001_f001.jpg"/>
<legend><para><emph type="bold">Fig. 1-1</emph>Hypertrophic scar.</para></legend>
</subfigure>
</figure>
......
......
<figure id="c001_f002" counter="yes">
<subfigure>
<graphic position="center" fileref="images/9781626237896_c001_f002a.jpg"/>
</subfigure>
<subfigure>
<graphic position="center" fileref="images/9781626237896_c001_f002b.jpg"/>
<legend><para><emph type="bold">Fig. 1-2</emph>Keloid scar.</para></legend>
</subfigure>
</figure>
输出应该是,
<figure id="c001_f001" counter="yes">
<legend><para><emph type="bold">Fig. 1-1</emph>Hypertrophic scar.</para></legend>
<subfigure>
<graphic position="center" fileref="images/9781626237896_c001_f001.jpg"/>
</subfigure>
</figure>.......
<figure id="c001_f002" counter="yes">
<legend><para><emph type="bold">Fig. 1-2</emph>Keloid scar.</para></legend>
<subfigure>
<graphic position="center" fileref="images/9781626237896_c001_f002a.jpg"/>
</subfigure>
<subfigure>
<graphic position="center" fileref="images/9781626237896_c001_f002b.jpg"/>
</subfigure>
</figure>
XSLT已写成,
<xsl:template match="subfigure">
<xsl:copy-of select="legend"/>
<xsl:copy>
<xsl:apply-templates select="node() except legend"/>
</xsl:copy>
</xsl:template>
使用上面的xslt“legend”元素时,第一个实例正确显示。对于第二个实例,它出现在2个“子图”元素之间。但是,“图例”元素应显示在元素下。你能否指导我们纠正这个问题。
答案 0 :(得分:0)
<legend>
需要成为<figure>
的孩子,可以通过以下模板完成。
<xsl:template match="figure">
<xsl:copy>
<xsl:copy-of select="subfigure/legend" />
<xsl:apply-templates select="node() | @*" />
</xsl:copy>
</xsl:template>
<legend>
需要从<subfigure>
中删除{<1}},这可以通过
<xsl:template match="subfigure">
<xsl:copy>
<xsl:apply-templates select="*[not(self::legend)]" />
</xsl:copy>
</xsl:template>