Je veux générer un nouveau fichier xmi en utilisant xslt mais j'ai un problème avec la boucle xsl: for-each en lisant le nom des balises je pense parce qu'il fonctionne bien avec des balises xml simples mais lors de l'utilisation de la balise xmi (uml: package par exemple) je n'ai pas de résultat. Voici mon fichier xmlxsl: pour chaque boucle ne fonctionne pas avec les fichiers xmi
<?xml version="1.0" encoding='UTF-8'?>
<XMI xmi.version='1.2' timestamp='Thu Mar 26 11:55:39 CET 2015' xmlns:UML='omg.org/UML/2.0' >
<UML:Namespace.ownedElement>
<UML:Package xmi.id='_9_0_bc102e5_1427365805826_580042_22' name='migration'>
</UML:Package>
<UML:Package xmi.id='_9_0_bc102e5_1427365805826_580042_22' name='migration'>
<UML:Class xmi.id='_9_0_bc102e5_1427367042666_255023_151' name='Employee'>
</UML:Class>
</UML:Package>
</UML:Namespace.ownedElement>
</XMI>
et mon fichier xsl:
<?xml version="1.0" encoding='UTF-8'?>
<xsl:stylesheet xmlns:UML="href://org.omg/UML/1.4" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xmi="http://www.omg.org/XMI" version="1.0">
<xsl:output indent="yes" method="xml"/>
<xsl:template match="XMI">
<XMI>
<xsl:attribute name="xmi.version">2.1</xsl:attribute>
<xsl:attribute name="timestamp">
<xsl:value-of select='XMI/@timestamp'/>
</xsl:attribute>
<xsl:template match="UML:Namespace.ownedElement">
<xsl:for-each select="UML:Package">
<packagedElement>
<xsl:attribute name="xmi:type">uml:package</xsl:attribute>
<xsl:attribute name="xmi.id">
<xsl:value-of select='../../@xmi.id'/>
</xsl:attribute>
<xsl:attribute name="name">
<xsl:value-of select='@name'/>
</xsl:attribute>
<packagedElement>
<xsl:attribute name="xmi:type">uml:Class</xsl:attribute>
<xsl:attribute name="xmi.id">
<xsl:value-of select='@xmi.id'/>
</xsl:attribute>
<xsl:attribute name="name">
<xsl:value-of select='@name'/>
</xsl:attribute>
</packagedElement>
</packagedElement>
</xsl:for-each>
</xsl:template>
</XMI>
</xsl:template>
</xsl:stylesheet>
Ceci est le résultat que je reçois:
<?xml version="1.0" encoding="UTF-8"?>
<XMI xmi.version="2.1" timestamp="" xmlns:UML="org.omg/UML/1.4"
xmlns:xs="http://www.w3.org/2001/XMLSchema" />
"Votre XSLT a un intérieur d'une autre" que voulez-vous dire par là? – Iheb
Vous avez un ' ' dans votre premier '
FiveO
Supprimez simplement le 'juste avant le pour-chaque. Voir mon code –
FiveO