[XML/XSL]Problème avec aply template ou autre chose

Problème avec aply template ou autre chose [XML/XSL] - XML/XSL - Programmation

Marsh Posté le 20-07-2010 à 10:28:53    

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)
 
 

Code :
  1. <?xml version="1.0" encoding="Windows-1252"?>
  2. <ProjectExchangeFile>
  3.   <fileHeader company="Schneider Electric SAS" product="Unity Application Generator" productVersion="V3.2  Version 3.2.261.13 - Large Version" schemaVersion="1.0" dateTime="07/15/2010 08:39:30  02:00:00" />
  4.   <contentHeader projectFile="C:\CustomerUAG\Germany_ZKW-Lage\ZKW_Lage\ZKW_Lage.osp" />
  5.   <physicalModel>
  6.     <physicalElements>
  7.       <physicalElement name="ZKW" levelName="Area" description="Zentralklärwerk Lage">
  8.         <physicalElements>
  9.           <physicalElement name="SteuerungZulauf" levelName="Process Cell" description="Steuerung Zulauf" plc="SPSZUL" controlDomain="Zulauf" section="SteuerungZulauf">
  10.             <physicalElements>
  11.               <physicalElement name="Rechen" levelName="Unit" description="Rechenanlage" variableNamePrefix="Rechen_" plc="SPSZUL" controlDomain="Zulauf" section="Rechen_ges" picture="Rechen_Übersicht">
  12.                 <controlModules>
  13.                   <controlModule name="P20GA001" fullName="Rechen_P20GA001" type="MELD_LPS1" library="CItect70_Astra" description="Rechengesamtanlage" plc="SPSZUL" variableNamePrefix="Rechen_P20GA001_" separatorLine="false">
  14.                     </controlModule>
  15.                   <controlModule name="P96GP051" fullName="Rechen_P96GP051" type="MELD_LPM1" library="CItect70_Astra" description="Gebäudeinstallation Rechen Notlichtanlage" plc="SPSZUL" variableNamePrefix="Rechen_P96GP051_" separatorLine="false">
  16.                   </controlModule>
  17.                   <controlModule name="P96GS072" fullName="Rechen_P96GS072" type="MELD_CME2" library="CItect70_Astra" description="Gebäudeinstallation Rechen Notlichtanlage, Motorschutzschalter" plc="SPSZUL" variableNamePrefix="Rechen_P96GS072_" separatorLine="false">
  18.                    </controlModule>
  19.                 </controlModules>
  20.               </physicalElement>
  21.               <physicalElement name="Rech1" levelName="Unit" description="Rechen 1" variableNamePrefix="Rech1_" plc="SPSZUL" controlDomain="Zulauf" section="Rechen_1" picture="Rechen_1">
  22.                 <controlModules>
  23.                   <controlModule name="P20AA001" fullName="Rech1_P20AA001" type="MELD_CV4" library="CItect70_Astra" description="Rechen 1 Sohleventil 12Y1" plc="SPSZUL" variableNamePrefix="Rech1_P20AA001_" separatorLine="false" hmiSymbolType="VijeoCitect Genie" hmiSymbolName="uag_ventil_astra.vent01_m_h_o_a">
  24.                    </controlModule>
  25.                   <controlModule name="P20AM001" fullName="Rech1_P20AM001" type="MOT_LPM3" library="CItect70_Astra" description="Rechen 1" plc="SPSZUL" variableNamePrefix="Rech1_P20AM001_" separatorLine="false" hmiSymbolType="VijeoCitect Genie" hmiSymbolName="uag_motor_astra.mot01_o_a">
  26.                    </controlModule>
  27.                 </controlModules>
  28.               </physicalElement>
  29.               <physicalElement name="ZulaufPW" levelName="Unit" description="Zulauf Pumpwerk" variableNamePrefix="ZulaufPW_" plc="SPSZUL" controlDomain="Zulauf" section="ZulaufPW" picture="Zulaufpumpwerk">
  30.                 <controlModules>
  31.                   <controlModule name="P10AP001" fullName="ZulaufPW_P10AP001" type="MOT_LPP2" library="CItect70_Astra" description="Zulaufschnecke I" plc="SPSZUL" variableNamePrefix="ZulaufPW_P10AP001_" separatorLine="false">
  32.                     </controlModule>
  33.                   <controlModule name="P10AP002" fullName="ZulaufPW_P10AP002" type="MOT_LPP2" library="CItect70_Astra" description="Zulaufschnecke II" plc="SPSZUL" variableNamePrefix="ZulaufPW_P10AP002_" separatorLine="false">
  34.                     </controlModule>
  35.                   <controlModule name="P10AP003" fullName="ZulaufPW_P10AP003" type="MOT_LPP1" library="CItect70_Astra" description="Zulaufschnecke III" plc="SPSZUL" variableNamePrefix="ZulaufPW_P10AP003_" separatorLine="false">
  36.                    </controlModule>
  37.                 </controlModules>
  38.               </physicalElement>
  39.               <physicalElement name="ContRech" levelName="Unit" description="Containeranlage Rechen" variableNamePrefix="ContRech_" plc="SPSZUL" controlDomain="Zulauf" section="ContRech" picture="Containerversch_Rechen">
  40.                 <controlModules>
  41.                   <controlModule name="P20AB001" fullName="ContRech_P20AB001" type="MELD_CME2" library="CItect70_Astra" description="Rolltor 1" plc="SPSZUL" variableNamePrefix="ContRech_P20AB001_" separatorLine="false">
  42.                    </controlModule>
  43.                   <controlModule name="P20AB002" fullName="ContRech_P20AB002" type="MELD_CME2" library="CItect70_Astra" description="Rolltor 2" plc="SPSZUL" variableNamePrefix="ContRech_P20AB002_" separatorLine="false">
  44.                    </controlModule>
  45.                   <controlModule name="P20AM301" fullName="ContRech_P20AM301" type="MELD_LPM2" library="CItect70_Astra" description="Wagen 1" plc="SPSZUL" variableNamePrefix="ContRech_P20AM301_" separatorLine="false">
  46.                   </controlModule>
  47.                   <controlModule name="P20AM302" fullName="ContRech_P20AM302" type="MELD_LPM2" library="CItect70_Astra" description="Wagen 2" plc="SPSZUL" variableNamePrefix="ContRech_P20AM302_" separatorLine="false">
  48.                   </controlModule>
  49.                 </controlModules>
  50.               </physicalElement>
  51.             </physicalElements>
  52.           </physicalElement>
  53.           <physicalElement name="SteuerungNHV" levelName="Process Cell" description="Steuerung Zulauf" plc="SPSZUL" controlDomain="Zulauf" section="SteuerungZulauf">
  54.             <physicalElements>
  55.               <physicalElement name="Rechen3" levelName="Unit" description="Rechenanlage" variableNamePrefix="Rechen_" plc="SPSZUL" controlDomain="Zulauf" section="Rechen_ges" picture="Rechen_Übersicht">
  56.                 <controlModules>
  57.                   <controlModule name="P20GA001" fullName="Rechen_P20GA001" type="MELD_LPS1" library="CItect70_Astra" description="Rechengesamtanlage" plc="SPSZUL" variableNamePrefix="Rechen_P20GA001_" separatorLine="false">
  58.                     </controlModule>
  59.                   <controlModule name="P96GP051" fullName="Rechen_P96GP051" type="MELD_LPM1" library="CItect70_Astra" description="Gebäudeinstallation Rechen Notlichtanlage" plc="SPSZUL" variableNamePrefix="Rechen_P96GP051_" separatorLine="false">
  60.                   </controlModule>
  61.                   <controlModule name="P96GS072" fullName="Rechen_P96GS072" type="MELD_CME2" library="CItect70_Astra" description="Gebäudeinstallation Rechen Notlichtanlage, Motorschutzschalter" plc="SPSZUL" variableNamePrefix="Rechen_P96GS072_" separatorLine="false">
  62.                    </controlModule>
  63.                 </controlModules>
  64.               </physicalElement>
  65.               <physicalElement name="Rech333" levelName="Unit" description="Rechen 1" variableNamePrefix="Rech1_" plc="SPSZUL" controlDomain="Zulauf" section="Rechen_1" picture="Rechen_1">
  66.                 <controlModules>
  67.                   <controlModule name="P20AA001" fullName="Rech1_P20AA001" type="MELD_CV4" library="CItect70_Astra" description="Rechen 1 Sohleventil 12Y1" plc="SPSZUL" variableNamePrefix="Rech1_P20AA001_" separatorLine="false" hmiSymbolType="VijeoCitect Genie" hmiSymbolName="uag_ventil_astra.vent01_m_h_o_a">
  68.                    </controlModule>
  69.                   <controlModule name="P20AM001" fullName="Rech1_P20AM001" type="MOT_LPM3" library="CItect70_Astra" description="Rechen 1" plc="SPSZUL" variableNamePrefix="Rech1_P20AM001_" separatorLine="false" hmiSymbolType="VijeoCitect Genie" hmiSymbolName="uag_motor_astra.mot01_o_a">
  70.                    </controlModule>
  71.                 </controlModules>
  72.               </physicalElement>
  73.               <physicalElement name="Zulauf3334" levelName="Unit" description="Zulauf Pumpwerk" variableNamePrefix="ZulaufPW_" plc="SPSZUL" controlDomain="Zulauf" section="ZulaufPW" picture="Zulaufpumpwerk">
  74.                 <controlModules>
  75.                   <controlModule name="P10AP001" fullName="ZulaufPW_P10AP001" type="MOT_LPP2" library="CItect70_Astra" description="Zulaufschnecke I" plc="SPSZUL" variableNamePrefix="ZulaufPW_P10AP001_" separatorLine="false">
  76.                     </controlModule>
  77.                   <controlModule name="P10AP002" fullName="ZulaufPW_P10AP002" type="MOT_LPP2" library="CItect70_Astra" description="Zulaufschnecke II" plc="SPSZUL" variableNamePrefix="ZulaufPW_P10AP002_" separatorLine="false">
  78.                     </controlModule>
  79.                   <controlModule name="P10AP003" fullName="ZulaufPW_P10AP003" type="MOT_LPP1" library="CItect70_Astra" description="Zulaufschnecke III" plc="SPSZUL" variableNamePrefix="ZulaufPW_P10AP003_" separatorLine="false">
  80.                    </controlModule>
  81.                 </controlModules>
  82.               </physicalElement>
  83.               <physicalElement name="ContRech32321" levelName="Unit" description="Containeranlage Rechen" variableNamePrefix="ContRech_" plc="SPSZUL" controlDomain="Zulauf" section="ContRech" picture="Containerversch_Rechen">
  84.                 <controlModules>
  85.                   <controlModule name="P20AB001" fullName="ContRech_P20AB001" type="MELD_CME2" library="CItect70_Astra" description="Rolltor 1" plc="SPSZUL" variableNamePrefix="ContRech_P20AB001_" separatorLine="false">
  86.                    </controlModule>
  87.                   <controlModule name="P20AB002" fullName="ContRech_P20AB002" type="MELD_CME2" library="CItect70_Astra" description="Rolltor 2" plc="SPSZUL" variableNamePrefix="ContRech_P20AB002_" separatorLine="false">
  88.                    </controlModule>
  89.                   <controlModule name="P20AM301" fullName="ContRech_P20AM301" type="MELD_LPM2" library="CItect70_Astra" description="Wagen 1" plc="SPSZUL" variableNamePrefix="ContRech_P20AM301_" separatorLine="false">
  90.                   </controlModule>
  91.                   <controlModule name="P20AM302" fullName="ContRech_P20AM302" type="MELD_LPM2" library="CItect70_Astra" description="Wagen 2" plc="SPSZUL" variableNamePrefix="ContRech_P20AM302_" separatorLine="false">
  92.                   </controlModule>
  93.                 </controlModules>
  94.               </physicalElement>
  95.             </physicalElements>
  96.           </physicalElement>
  97.  </physicalElements>
  98.   </physicalElement>
  99.     </physicalElements>
  100.   </physicalModel>
  101. </ProjectExchangeFile>


 
J'ai fais un fichier XSL que voici:  
 

Code :
  1. <?xml version="1.0"?>
  2. <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
  3. <xsl:output method="text" encoding="ISO-8859-1" />
  4. <xsl:template match="/">
  5.  <xsl:text>controlModule.library,controleModule.plc,parent.name,parent.levelName,parent.controlDomain,parent.parent.name,parent.parent.levelName,parent.parent.controlDomain</xsl:text>
  6.  <xsl:text>&#13;&#10;</xsl:text>
  7.  <xsl:apply-templates select="//controlModule"/>  
  8. </xsl:template>
  9. <xsl:template match="controlModule">
  10.   <xsl:call-template name="writeImportLine">
  11.    <xsl:with-param name="name" select= "@name"/>
  12.    <xsl:with-param name="Library" select= "@library"/>
  13.    <xsl:with-param name="PLC" select= "@plc"/>
  14.    <xsl:with-param name="ParentName" select="../../../*/@name"/>
  15.    <xsl:with-param name="ParentLevelName" select="../../../*/@levelName"/>
  16.    <xsl:with-param name="ParentControlDomain" select="../../../*/@controlDomain"/>
  17.    <xsl:with-param name="ParentParentName" select="../../../../../*/@name"/>
  18.    <xsl:with-param name="startNewLine" select="position() - 1" />
  19.   </xsl:call-template>
  20. </xsl:template>
  21. <xsl:template name="writeImportLine">
  22.  <xsl:param name="name"/>
  23.  <xsl:param name="Library"/>
  24.  <xsl:param name="PLC"/>
  25.  <xsl:param name="ParentName"/>
  26.  <xsl:param name="ParentLevelName"/>
  27.  <xsl:param name="ParentControlDomain"/>
  28.  <xsl:param name="ParentParentName"/>
  29.  <xsl:param name="startNewLine" />
  30.  <xsl:if test="$startNewLine > 0">
  31.   <!-- start new line -->
  32.   <xsl:text>&#13;&#10;</xsl:text>
  33.  </xsl:if>
  34.  <xsl:value-of select="$name"/><xsl:text>,</xsl:text>
  35.  <xsl:value-of select="$Library"/><xsl:text>,</xsl:text>
  36.  <xsl:value-of select="$PLC"/><xsl:text>,</xsl:text>
  37.  <xsl:value-of select="$ParentName"/><xsl:text>,</xsl:text>
  38.  <xsl:value-of select="$ParentLevelName"/><xsl:text>,</xsl:text>
  39.  <xsl:value-of select="$ParentControlDomain"/><xsl:text>,</xsl:text>
  40.  <xsl:value-of select="$ParentParentName"/><xsl:text>,</xsl:text>
  41. </xsl:template>
  42. </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.

Reply

Marsh Posté le 20-07-2010 à 10:28:53   

Reply

Marsh Posté le 20-07-2010 à 11:02:36    

Hello,  
 
Comme quoi formuler son problème peut aider a apporter une solution :).
 
Voici le xsl que j'ai trouvé qui correspond a mon besoin :

Code :
  1. <?xml version="1.0"?>
  2. <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
  3. <xsl:output method="text" encoding="ISO-8859-1" />
  4. <xsl:template match="/">
  5.  <xsl:text>controlModule.library,controleModule.plc,parent.name,parent.levelName,parent.controlDomain,parent.parent.name,parent.parent.levelName,parent.parent.controlDomain</xsl:text>
  6.  <xsl:text>&#13;&#10;</xsl:text>
  7.  <xsl:apply-templates select="//controlModule"/>  
  8. </xsl:template>
  9. <xsl:template match="controlModule">
  10.   <xsl:call-template name="writeImportLine">
  11.    <xsl:with-param name="name" select= "@name"/>
  12.    <xsl:with-param name="Library" select= "@library"/>
  13.    <xsl:with-param name="PLC" select= "@plc"/>
  14.    <xsl:with-param name="ParentName" select="../../@name"/>
  15.    <xsl:with-param name="ParentLevelName" select="../../@levelName"/>
  16.    <xsl:with-param name="ParentControlDomain" select="../../@controlDomain"/>
  17.    <xsl:with-param name="ParentParentName" select="../../../../@name"/>
  18.    <xsl:with-param name="ParentParentlevelName" select="../../../../@levelName"/>
  19.    <xsl:with-param name="ParentParentcontrolDomain" select="../../../../@controlDomain"/>
  20.    <xsl:with-param name="startNewLine" select="position() - 1" />
  21.   </xsl:call-template>
  22. </xsl:template>
  23. <xsl:template name="writeImportLine">
  24.  <xsl:param name="name"/>
  25.  <xsl:param name="Library"/>
  26.  <xsl:param name="PLC"/>
  27.  <xsl:param name="ParentName"/>
  28.  <xsl:param name="ParentLevelName"/>
  29.  <xsl:param name="ParentControlDomain"/>
  30.  <xsl:param name="ParentParentName"/>
  31.  <xsl:param name="ParentParentlevelName"/>
  32.  <xsl:param name="ParentParentcontrolDomain"/>
  33.  <xsl:param name="startNewLine" />
  34.  <xsl:if test="$startNewLine > 0">
  35.   <!-- start new line -->
  36.   <xsl:text>&#13;&#10;</xsl:text>
  37.  </xsl:if>
  38.  <xsl:value-of select="$name"/><xsl:text>,</xsl:text>
  39.  <xsl:value-of select="$Library"/><xsl:text>,</xsl:text>
  40.  <xsl:value-of select="$PLC"/><xsl:text>,</xsl:text>
  41.  <xsl:value-of select="$ParentName"/><xsl:text>,</xsl:text>
  42.  <xsl:value-of select="$ParentLevelName"/><xsl:text>,</xsl:text>
  43.  <xsl:value-of select="$ParentControlDomain"/><xsl:text>,</xsl:text>
  44.  <xsl:value-of select="$ParentParentName"/><xsl:text>,</xsl:text>
  45.  <xsl:value-of select="$ParentParentlevelName"/><xsl:text>,</xsl:text>
  46.  <xsl:value-of select="$ParentParentcontrolDomain"/><xsl:text>,</xsl:text>
  47. </xsl:template>
  48. </xsl:stylesheet>


 
 
Si vous avez des commentaire sur ma façon de programmer, faite les moi savoir  s'il vous plait.
 
merci :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed