我的输入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“元素在第一个实例中显示正确。对于第二个实例,它出现在两个"subfigure“元素之间。但是,“图例”元素应该出现在“元素”下面。您能指导我们纠正这个问题吗?
发布于 2017-10-23 18:38:36
<legend>需要成为<figure>的子级,这可以通过以下模板来完成。
<xsl:template match="figure">
<xsl:copy>
<xsl:copy-of select="subfigure/legend" />
<xsl:apply-templates select="node() | @*" />
</xsl:copy>
</xsl:template>并且需要从<subfigure>中删除<legend>,这可以通过以下方式完成
<xsl:template match="subfigure">
<xsl:copy>
<xsl:apply-templates select="*[not(self::legend)]" />
</xsl:copy>
</xsl:template>https://stackoverflow.com/questions/46886561
复制相似问题