Transformer mon XML avec XSLT

Transformer mon XML avec XSLT - XML/XSL - Programmation

Marsh Posté le 12-04-2013 à 11:38:06    

Bonjour,
 
Je suis en bts iris, je suis en train de réaliser mon projet de fin d'année. Un application(en c++ avec Qt Creator) qui charge un fichier XML (qui contient tous les appels détaillées), généré par le système téléphonique, et qui exploite ce fichier: fonction de recherche, statistiques.
Mon fichier XML est importé dans une base de données Access que j'interroge avec mon application.
 
Voilà mon problème, voilà une partie de mon fichier XML brut :
 
 

Code :
  1. <?xml version="1.0"?>
  2. <CallAccountingList xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="TicketCollector.xsd">
  3. <CallAccounting xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="CAPTicket_V001.001.xsd">
  4.  <OmniPCXOffice>
  5.   <SoftwareVersion>3EH30369CUAA ALZFR510/046.001</SoftwareVersion>
  6.   <CPUIPAddress>192.168.92.245</CPUIPAddress>
  7.  </OmniPCXOffice>
  8.  <Checksum>380140032</Checksum>
  9.  <TicketType>Call</TicketType>
  10.  <InitialUserType>G</InitialUserType>
  11.  <InitialUserID>9</InitialUserID>
  12.  <ChargedUserType>A</ChargedUserType>
  13.  <ChargedUserID>18</ChargedUserID>
  14.  <SubscriberName>JULIEN</SubscriberName>
  15.  <CommunicationType>IncomingTransfer</CommunicationType>
  16.  <TrunkType>N</TrunkType>
  17.  <TrunkID>002</TrunkID>
  18.  <Date>2013-04-04</Date>
  19.  <Time>10:38:00</Time>
  20.  <CallDuration>00:01:18</CallDuration>
  21.  <TaxesAmount>0</TaxesAmount>
  22.  <Service>ST</Service>
  23.  <AdditionalServices>X</AdditionalServices>
  24.  <DialledNumber>00559118410</DialledNumber>
  25.  <DiallingMode>M</DiallingMode>
  26.  <RingingDuration>00:00:04</RingingDuration>
  27.  <Cost>0.00</Cost>
  28.  <Currency>EUR</Currency>
  29. </CallAccounting>
  30. <CallAccounting xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="CAPTicket_V001.001.xsd">
  31.  <OmniPCXOffice>
  32.   <SoftwareVersion>3EH30369CUAA ALZFR510/046.001</SoftwareVersion>
  33.   <CPUIPAddress>192.168.92.245</CPUIPAddress>
  34.  </OmniPCXOffice>
  35.  <Checksum>473982685</Checksum>
  36.  <TicketType>Call</TicketType>
  37.  <InitialUserType>G</InitialUserType>
  38.  <InitialUserID>9</InitialUserID>
  39.  <ChargedUserType>A</ChargedUserType>
  40.  <ChargedUserID>18</ChargedUserID>
  41.  <SubscriberName>JULIEN</SubscriberName>
  42.  <CommunicationType>IncomingTransfer</CommunicationType>
  43.  <TrunkType>N</TrunkType>
  44.  <TrunkID>002</TrunkID>
  45.  <Date>2013-04-04</Date>
  46.  <Time>10:40:00</Time>
  47.  <CallDuration>00:01:22</CallDuration>
  48.  <TaxesAmount>0</TaxesAmount>
  49.  <Service>ST</Service>
  50.  <AdditionalServices>X</AdditionalServices>
  51.  <DialledNumber>0559594339</DialledNumber>
  52.  <DiallingMode>M</DiallingMode>
  53.  <RingingDuration>00:00:01</RingingDuration>
  54.  <Cost>0.00</Cost>
  55.  <Currency>EUR</Currency>
  56. </CallAccounting> ....
  57. </CallAccountingList>


 
Je dois le modifier pour obtenir ceci afin de l'intégrer dans ma base de donnée:
 

Code :
  1. <?xml version="1.0"?>
  2. <CallAccountingList>
  3. <CallAccounting>
  4.  <ChargedUserID>18</ChargedUserID>
  5.  <SubscriberName>JULIEN</SubscriberName>
  6.  <CommunicationType>IncomingTransfer</CommunicationType>
  7.  <Date>2013-04-04</Date>
  8.  <Time>10:38:00</Time>
  9.  <CallDuration>00:01:18</CallDuration>
  10.  <DialledNumber>00559118410</DialledNumber>
  11. </CallAccounting>
  12. <CallAccounting>
  13.  <ChargedUserID>18</ChargedUserID>
  14.  <SubscriberName>JULIEN</SubscriberName>
  15.  <CommunicationType>IncomingTransfer</CommunicationType>
  16.  <Date>2013-04-04</Date>
  17.  <Time>10:40:00</Time>
  18.  <CallDuration>00:01:22</CallDuration>
  19.  <DialledNumber>0559594339</DialledNumber>
  20. </CallAccounting>...
  21. </CallAccountingList>


 
Je ne connais pas du tout le XSLT, est que quelqu'un peut m'aider s'il vous plait ?
J'ai commencé à faire les modifs du fichier à la main, mais il y a plus de 50000 lignes.. :(

Reply

Marsh Posté le 12-04-2013 à 11:38:06   

Reply

Marsh Posté le 12-04-2013 à 13:24:43    

Tu peux faire un script en php qui va prendre ton ficheir XML et appliquer la feuille XSL que tu auras codée pour faire la transfo.
 
Autre solution : un soft en GPL comme GeoKettle (c'est un ETL pour traiter des données géographique à la base) qui sait faire du XSL ;)


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 12-04-2013 à 19:15:27    

Si tu as besoin d'un processeur XSLT, Saxon est bien.
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Sujets relatifs:

Leave a Replay

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