Probleme de parser XML / XSLt - Doublons

Probleme de parser XML / XSLt - Doublons - PHP - Programmation

Marsh Posté le 30-07-2007 à 11:38:02    

Bonjour tout le monde,
 
J'ai un petit problème concernant le parsing d'un de mes documents XML. Faisons court, faisons bien, voici la description de mon problème avec extrait des XML / XSLt.
 
J'ai une liste de sociétés. Chaque société possède différents types de licences. Mon probleme est que dans mon XML contenant les sociétés et les licences, une même licence peut-être spécifiée 2 fois, voici un exemple (mon XML) :
 

Code :
  1. <Record>
  2.     <NomSociete>Societe 1</NomSociete>
  3.     <Licence1>NomLicence1</Licence1>
  4.     <Licence2>NomLicence2</Licence2>
  5.     <Licence3>NomLicence1</Licence3>
  6. <Record>


 
Dans ma page web, je dois choisir le nom de la licence dans une listbox. Ensuite je dois parser mon XML avec en argument ce nom de licence et etablir une liste des sociétés possédant cette licence dans une autre listbox (générée avec un modele XSLt)
 
Voici mon modele XSLt de génération de liste :
 

Code :
  1. <xsl:template match="Synthese">
  2.         <select name="Societe" onchange="document.forms[0].submit();">
  3.         <xsl:for-each select="Record">
  4.             <xsl:choose>
  5.                 <xsl:when test="NomLicence=./$obj and ./NomSociete=$entreprise">
  6.                     <option selected><xsl:value-of select="./NomSociete"/></option>
  7.                 </xsl:when>
  8.                 <xsl:when test="NomLicence=./$obj">
  9.                     <option><xsl:value-of select="./NomSociete"/></option>
  10.                 </xsl:when>
  11.             </xsl:choose>
  12.         </xsl:for-each>
  13.         </select>
  14.     </xsl:template>


 
En gros le parsing se fait bien, la listbox se génère bien mais j'ai des doublons dans ma liste étant donné qu'un meme NomLicence peut-être spécifié 2 fois de suite dans le meme bloc XML.
 
J'aimerai supprimer ces doublons.
 
J'espere que j'ai été assez clair (ce n'est pas très facile à expliquer) et je vous remercie d'avance pour l'aide que vous pourrez m'apporter :-)
 
A bientot

Reply

Marsh Posté le 30-07-2007 à 11:38:02   

Reply

Marsh Posté le 30-07-2007 à 12:04:59    

Akitounet a écrit :

Bonjour tout le monde,
 
J'ai un petit problème concernant le parsing d'un de mes documents XML. Faisons court, faisons bien, voici la description de mon problème avec extrait des XML / XSLt.
 
J'ai une liste de sociétés. Chaque société possède différents types de licences. Mon probleme est que dans mon XML contenant les sociétés et les licences, une même licence peut-être spécifiée 2 fois, voici un exemple (mon XML) :
 
En gros le parsing se fait bien, la listbox se génère bien mais j'ai des doublons dans ma liste étant donné qu'un meme NomLicence peut-être spécifié 2 fois de suite dans le meme bloc XML.
 
J'aimerai supprimer ces doublons.
 
J'espere que j'ai été assez clair (ce n'est pas très facile à expliquer) et je vous remercie d'avance pour l'aide que vous pourrez m'apporter :-)
 
A bientot


C'est pas un peu complètement con?
 
Pourquoi la source est crade?


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 30-07-2007 à 12:47:28    

masklinn a écrit :


C'est pas un peu complètement con?
 
Pourquoi la source est crade?


 ?

Reply

Marsh Posté le 30-07-2007 à 13:29:30    


Comment ça se fait que tu ais plusieurs fois la même license dans ton xml source...


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 30-07-2007 à 13:33:23    

C'est voulu par la boite pour laquelle je bosse,c'est une contrainte de programmation...

Reply

Marsh Posté le 30-07-2007 à 14:13:56    

Mouais...
 
Globalement, c'est un simple problème de grouping (tu crées des groupes en fonction du nom de license, tu itères sur tes groupes, et tu prends juste le premier élément de chaque groupe).
 
Le problème, c'est que selon la version de XSLT avec laquelle tu bosses, ça peut être trivial ou un cauchemard:
En XSLT 2.0 c'est trivial, suffit d'utiliser for-each-group avec les bonnes directives de grouping
En XSLT 1.0 par contre c'est bien merdique et bien pas pratique
 
Enjoy.


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Sujets relatifs:

Leave a Replay

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