Croues | Bonjour
Pour faire simple j'ai un fichier XML, qui ressemble à ca. à la base il fait 32000 ligne et je l'ai simplifié, pour avoir une meilleur vu d'ensemble. Je veux transformer mon fichier, XML en fichier csv. Le fichier contiendra :
controlModule.library,controleModule.plc,<parent>.name,<parent>.levelName,<parent>.controlDomain,<parent>.<parent>.name,<parent>.<parent>.levelName,<parent>.<parent>.controlDomain
par exemple:
CItect70_Astra,SPSZUL,Rechen,Unit,Zulauf,SteuerungZulauf,Process Cell, (voir en gras sur le fichier xml)
J'ai fais un fichier XSL que voici:
Code :
- <?xml version="1.0"?>
- <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
- <xsl:output method="text" encoding="ISO-8859-1" />
- <xsl:template match="/">
- <xsl:text>controlModule.library,controleModule.plc,parent.name,parent.levelName,parent.controlDomain,parent.parent.name,parent.parent.levelName,parent.parent.controlDomain</xsl:text>
- <xsl:text> </xsl:text>
- <xsl:apply-templates select="//controlModule"/>
- </xsl:template>
- <xsl:template match="controlModule">
- <xsl:call-template name="writeImportLine">
- <xsl:with-param name="name" select= "@name"/>
- <xsl:with-param name="Library" select= "@library"/>
- <xsl:with-param name="PLC" select= "@plc"/>
- <xsl:with-param name="ParentName" select="../../../*/@name"/>
- <xsl:with-param name="ParentLevelName" select="../../../*/@levelName"/>
- <xsl:with-param name="ParentControlDomain" select="../../../*/@controlDomain"/>
- <xsl:with-param name="ParentParentName" select="../../../../../*/@name"/>
- <xsl:with-param name="startNewLine" select="position() - 1" />
- </xsl:call-template>
- </xsl:template>
- <xsl:template name="writeImportLine">
- <xsl:param name="name"/>
- <xsl:param name="Library"/>
- <xsl:param name="PLC"/>
- <xsl:param name="ParentName"/>
- <xsl:param name="ParentLevelName"/>
- <xsl:param name="ParentControlDomain"/>
- <xsl:param name="ParentParentName"/>
- <xsl:param name="startNewLine" />
- <xsl:if test="$startNewLine > 0">
- <!-- start new line -->
- <xsl:text> </xsl:text>
- </xsl:if>
- <xsl:value-of select="$name"/><xsl:text>,</xsl:text>
- <xsl:value-of select="$Library"/><xsl:text>,</xsl:text>
- <xsl:value-of select="$PLC"/><xsl:text>,</xsl:text>
- <xsl:value-of select="$ParentName"/><xsl:text>,</xsl:text>
- <xsl:value-of select="$ParentLevelName"/><xsl:text>,</xsl:text>
- <xsl:value-of select="$ParentControlDomain"/><xsl:text>,</xsl:text>
- <xsl:value-of select="$ParentParentName"/><xsl:text>,</xsl:text>
- </xsl:template>
- </xsl:stylesheet>
|
et j'ai ce résultat, En gras ce qui est faut. (j'ai mit les noms des variables pour mon usage personnel) controlModule.library,controleModule.plc,parent.name,parent.levelName,parent.controlDomain,parent.parent.name,parent.parent.levelName,parent.parent.controlDomain
P20GA001,CItect70_Astra,SPSZUL,Rechen,Unit,Zulauf,SteuerungZulauf,
P96GP051,CItect70_Astra,SPSZUL,Rechen,Unit,Zulauf,SteuerungZulauf,
P96GS072,CItect70_Astra,SPSZUL,Rechen,Unit,Zulauf,SteuerungZulauf,
P20AA001,CItect70_Astra,SPSZUL,Rechen,Unit,Zulauf,SteuerungZulauf,
P20AM001,CItect70_Astra,SPSZUL,Rechen,Unit,Zulauf,SteuerungZulauf,
P10AP001,CItect70_Astra,SPSZUL,Rechen,Unit,Zulauf,SteuerungZulauf,
P10AP002,CItect70_Astra,SPSZUL,Rechen,Unit,Zulauf,SteuerungZulauf,
P10AP003,CItect70_Astra,SPSZUL,Rechen,Unit,Zulauf,SteuerungZulauf,
P20AB001,CItect70_Astra,SPSZUL,Rechen,Unit,Zulauf,SteuerungZulauf,
P20AB002,CItect70_Astra,SPSZUL,Rechen,Unit,Zulauf,SteuerungZulauf,
P20AM301,CItect70_Astra,SPSZUL,Rechen,Unit,Zulauf,SteuerungZulauf,
P20AM302,CItect70_Astra,SPSZUL,Rechen,Unit,Zulauf,SteuerungZulauf,
P20GA001,CItect70_Astra,SPSZUL,Rechen3,Unit,Zulauf,SteuerungZulauf,
P96GP051,CItect70_Astra,SPSZUL,Rechen3,Unit,Zulauf,SteuerungZulauf,
P96GS072,CItect70_Astra,SPSZUL,Rechen3,Unit,Zulauf,SteuerungZulauf,
P20AA001,CItect70_Astra,SPSZUL,Rechen3,Unit,Zulauf,SteuerungZulauf,
P20AM001,CItect70_Astra,SPSZUL,Rechen3,Unit,Zulauf,SteuerungZulauf,
P10AP001,CItect70_Astra,SPSZUL,Rechen3,Unit,Zulauf,SteuerungZulauf,
P10AP002,CItect70_Astra,SPSZUL,Rechen3,Unit,Zulauf,SteuerungZulauf,
P10AP003,CItect70_Astra,SPSZUL,Rechen3,Unit,Zulauf,SteuerungZulauf,
P20AB001,CItect70_Astra,SPSZUL,Rechen3,Unit,Zulauf,SteuerungZulauf,
P20AB002,CItect70_Astra,SPSZUL,Rechen3,Unit,Zulauf,SteuerungZulauf,
P20AM301,CItect70_Astra,SPSZUL,Rechen3,Unit,Zulauf,SteuerungZulauf,
P20AM302,CItect70_Astra,SPSZUL,Rechen3,Unit,Zulauf,SteuerungZulauf,
Voici le résultat que j'aurai voulu avoir.
controlModule.library,controleModule.plc,parent.name,parent.levelName,parent.controlDomain,parent.parent.name,parent.parent.levelName,parent.parent.controlDomain
P20GA001,CItect70_Astra,SPSZUL,Rechen,Unit,Zulauf,SteuerungZulauf,
P96GP051,CItect70_Astra,SPSZUL,Rechen,Unit,Zulauf,SteuerungZulauf,
P96GS072,CItect70_Astra,SPSZUL,Rechen,Unit,Zulauf,SteuerungZulauf,
P20AA001,CItect70_Astra,SPSZUL,Rech1,Unit,Zulauf,SteuerungZulauf,
P20AM001,CItect70_Astra,SPSZUL,Rech1,Unit,Zulauf,SteuerungZulauf,
P10AP001,CItect70_Astra,SPSZUL,ZulaufPW,Unit,Zulauf,SteuerungZulauf,
P10AP002,CItect70_Astra,SPSZUL,ZulaufPW,Unit,Zulauf,SteuerungZulauf,
P10AP003,CItect70_Astra,SPSZUL,ZulaufPW,Unit,Zulauf,SteuerungZulauf,
P20AB001,CItect70_Astra,SPSZUL,ContRech,Unit,Zulauf,SteuerungZulauf,
P20AB002,CItect70_Astra,SPSZUL,ContRech,Unit,Zulauf,SteuerungZulauf,
P20AM301,CItect70_Astra,SPSZUL,ContRech,Unit,Zulauf,SteuerungZulauf,
P20AM302,CItect70_Astra,SPSZUL,ContRech,Unit,Zulauf,SteuerungZulauf,
P20GA001,CItect70_Astra,SPSZUL,Rechen3,Unit,Zulauf,SteuerungNHV,
P96GP051,CItect70_Astra,SPSZUL,Rechen3,Unit,Zulauf,SteuerungNHV,
P96GS072,CItect70_Astra,SPSZUL,Rechen3,Unit,Zulauf,SteuerungNHV,
P20AA001,CItect70_Astra,SPSZUL,Rech333,Unit,Zulauf,SteuerungNHV,
P20AM001,CItect70_Astra,SPSZUL,Rech333,Unit,Zulauf,SteuerungNHV,
P10AP001,CItect70_Astra,SPSZUL,Zulauf3334,Unit,Zulauf,SteuerungNHV,
P10AP002,CItect70_Astra,SPSZUL,Zulauf3334,Unit,Zulauf,SteuerungNHV,
P10AP003,CItect70_Astra,SPSZUL,Zulauf3334,Unit,Zulauf,SteuerungNHV,
P20AB001,CItect70_Astra,SPSZUL,ContRech32321,Unit,Zulauf,SteuerungNHV,
P20AB002,CItect70_Astra,SPSZUL,ContRech32321,Unit,Zulauf,SteuerungNHV,
P20AM301,CItect70_Astra,SPSZUL,ContRech32321,Unit,Zulauf,SteuerungNHV,
P20AM302,CItect70_Astra,SPSZUL,ContRech32321,Unit,Zulauf,SteuerungNHV,
Depuis hier, je passe énormément de temps à essayer de trouver ce bug. Pour information, j'ai commencé le XSL ya 3 semaines donc je suis un peu débutant. J'ai pas tous les automatismes...
En esperant avoir bien expliqué mon problème.
Merci pour votre aide. |