2017-10-13 14 views
0

XML d'entrée est comme enDéplacer élément enfant au-dessus de l'élément parent

<figure id="f1_1">  
<subfigure> 
<graphic position="center" fileref="images/9781626233614_c001_f001.jpg"/> 
<legend><para>Reeve’s prosthesis. (Reproduced with permission from Reeves B, Jobbins B, Dowson D, Wright V. A Total Shoulder Endo-Prosthesis.</para></legend> 
</subfigure> 
</figure> 

sortie doit être

<figure id="f1_1"> 
<legend><para>Reeve’s prosthesis. (Reproduced with permission from Reeves B, Jobbins B, Dowson D, Wright V. A Total Shoulder Endo-Prosthesis.</para></legend> 
<subfigure> 
<graphic position="center" fileref="images/9781626233614_c001_f001.jpg"/> 
</subfigure> 
</figure> 

J'ai écrit XSLT comme comme,

<xsl:template match="subfigure"> 
    <xsl:choose> 
     <xsl:when test="following-sibling::legend"> 
      <xsl:variable name="a1" select="following-sibling::legend"/>      
      <xsl:copy-of select="$a1"/> 
      <xsl:copy>       
        <xsl:apply-templates select="node() | @*"/> 
       </xsl:copy>      
      </xsl:when> 
      <xsl:otherwise> 
       <xsl:copy> 
        <xsl:apply-templates select="node() | @*"/> 
       </xsl:copy> 
      </xsl:otherwise> 
     </xsl:choose> 
</xsl:template> 

Ce n'est pas refléter le bon rendement . Pouvez-vous nous aider à résoudre ce problème?

Répondre

0

Vous pouvez utiliser ce XSLT 2.0:

<xsl:template match="subfigure"> 
    <xsl:copy-of select="legend"/> 
    <xsl:copy> 
     <xsl:apply-templates select="node() except legend"/> 
    </xsl:copy> 
</xsl:template> 
+0

Merci pour votre réponse Rupesh. Cela fonctionne correctement. – Sumathi

+0

Nous avons ci-dessous l'instance mentionnée ci-dessus xslt ne fonctionne pas correctement. Fig. 1-2 Cicatrice chéloïde. Dans ce cas, l'élément « légende » devrait être passer à au-dessus des deux éléments « subfigure » qui est sous « figure » .Mais tout en utilisant mentionnée ci-dessus xslt, la légende apparaît entre les deux éléments « subfigure ». – Sumathi

+0

Pourriez-vous nous guider, comment écrire du code dans ce cas. – Sumathi