首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XSLT -将子元素移到父元素之上

XSLT -将子元素移到父元素之上
EN

Stack Overflow用户
提问于 2017-10-23 17:58:00
回答 1查看 452关注 0票数 0

我的输入XML是这样的,

代码语言:javascript
复制
<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>

输出应该是,

代码语言:javascript
复制
<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已经被编写为,

代码语言:javascript
复制
<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“元素之间。但是,“图例”元素应该出现在“元素”下面。您能指导我们纠正这个问题吗?

EN

回答 1

Stack Overflow用户

发布于 2017-10-23 18:38:36

<legend>需要成为<figure>的子级,这可以通过以下模板来完成。

代码语言:javascript
复制
<xsl:template match="figure">
    <xsl:copy>
        <xsl:copy-of select="subfigure/legend" />
        <xsl:apply-templates select="node() | @*" />
    </xsl:copy>
</xsl:template>

并且需要从<subfigure>中删除<legend>,这可以通过以下方式完成

代码语言:javascript
复制
<xsl:template match="subfigure">
    <xsl:copy>
        <xsl:apply-templates select="*[not(self::legend)]" />
    </xsl:copy>
</xsl:template>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46886561

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档