2010-09-19 6 views
0

comment utiliser xsl pour changer le nom du nœud enfant si elle = au nœud parent et d'appliquer à tous les nœudscomment utiliser xsl pour changer le nom nœud enfant

exemple

<items> 
<items>3</items > 
</items > 

à

<items> 
< parentname-"inner"childname >3</parentname-"inner"childname > 
</items > 

merci beaucoup

+0

Aucune des Sécateur ci-dessus sont XML valide, le "à" cible est très mal. S'il vous plaît pourriez-vous corriger cela pour être valide XML. – Robin

Répondre

3

Si je comprends bien votre question, et vous voulez générer le code XML suivant de yo ur XML exemple:

<?xml version="1.0" encoding="UTF-16"?> 
<items> 
<items-items>3</items-items> 
</items> 

puis le XSLT suivant peut être utilisé:

<?xml version="1.0"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output indent="yes" /> 

<xsl:template match="@*|node()"> 
    <xsl:copy> 
     <xsl:apply-templates select="@*|node()"/> 
    </xsl:copy> 
</xsl:template> 

<!--Match elements who's name is equal to it's parent --> 
<xsl:template match="*[name()=name(..)]"> 
    <!--create an element using the name of the parent element, followed by a "-", followed by the matched element name --> 
    <xsl:element name="{name(..)}-{name()}"> 
     <xsl:apply-templates select="@*|node()"/> 
    </xsl:element> 
</xsl:template> 

</xsl:stylesheet> 
Questions connexes