IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

XSL/XSLT/XPATH XML Discussion :

[XSLT]Problème de comportement inattendu


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Futur Membre du Club
    Inscrit en
    Mars 2007
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 10
    Points : 7
    Points
    7
    Par défaut [XSLT]Problème de comportement inattendu
    Désolé si le titre n'est pas explicite, mais je ne savais pas comment decrire mon problème.

    Je suis débutant en XML/XSLT, j'ai parcouru divers forum/FAQ/Cours et je n'ai pas trouvé de solutions à mon problème.

    Mon but est de changer la structure d'un fichier XML.
    Voici le XML source :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <Report><Lang>it</Lang>
    <Page><Title>Report</Title><Icon>112</Icon>
    <Item><Title>Version</Title><Icon>112</Icon><ID>257</ID><Value>EVEREST v3.50.761/it</Value></Item>
    <Item><Title>Benchmark Module</Title><Icon>112</Icon><ID>266</ID><Value>2.1.169.0</Value></Item>
    <Item><Title>Homepage</Title><Icon>116</Icon><ID>259</ID><Value>http://www.lavalys.com/</Value></Item>
    <Item><Title>Report Type</Title><Icon>91</Icon><ID>260</ID><Value>Report Wizard</Value></Item>
    <Item><Title>Computer</Title><Icon>46</Icon><ID>261</ID><Value>INFP01XXXXXXX1</Value></Item>
    <Item><Title>Generator</Title><Icon>47</Icon><ID>262</ID><Value>Administrator</Value></Item>
    <Item><Title>Operating System</Title><Icon>38</Icon><ID>263</ID><Value>Microsoft Windows 2000 Professional 5.0.2195 (Win2000 Retail)</Value></Item>
    <Item><Title>Date</Title><Icon>64</Icon><ID>264</ID><Value>2007-02-23</Value></Item>
    <Item><Title>Time</Title><Icon>131</Icon><ID>265</ID><Value>14:56</Value></Item>
    </Page>
    <Page><Title>Summary</Title><Icon>46</Icon><MenuTitle>Computer</MenuTitle><MenuIcon>46</MenuIcon>
    <Group><Title>Computer</Title><Icon>46</Icon>
    <Item><Title>Computer Type</Title><Icon>46</Icon><ID>582</ID><Value>Advanced Configuration and Power Interface (ACPI) PC  (Mobile)</Value></Item>
    <Item><Title>Operating System</Title><Icon>38</Icon><ID>513</ID><Value>Microsoft Windows 2000 Professional</Value></Item>
    <Item><Title>OS Service Pack</Title><Icon>40</Icon><ID>540</ID><Value>Service Pack 4</Value></Item>
    <Item><Title>Internet Explorer</Title><Icon>115</Icon><ID>564</ID><Value>6.0.2800.1106 (IE 6.0 SP1)</Value></Item>
    <Item><Title>DirectX</Title><Icon>49</Icon><ID>566</ID><Value>4.07.00.0700 (DirectX 7.0)</Value></Item>
    <Item><Title>Computer Name</Title><Icon>46</Icon><ID>514</ID><Value>INFP01XXXXXXX1</Value></Item>
    <Item><Title>User Name</Title><Icon>47</Icon><ID>515</ID><Value>Administrator</Value></Item>
    <Item><Title>Logon Domain</Title><Icon>32</Icon><ID>516</ID><Value>INFP01XXXXXXX1</Value></Item>
    <Item><Title>Date / Time</Title><Icon>64</Icon><Value>2007-02-23 / 14:56</Value></Item>
    </Group>
    <Group><Title>Motherboard</Title><Icon>42</Icon>
    <Item><Title>CPU Type</Title><Icon>80</Icon><ID>517</ID><Value>Intel Pentium IIIE, 866 MHz (6.5 x 133)</Value></Item>
    <Item><Title>Motherboard Name</Title><Icon>42</Icon><ID>518</ID><Value>Unknown</Value></Item>
    <Item><Title>Motherboard Chipset</Title><Icon>27</Icon><ID>519</ID><Value>VIA VT8606 ProSavage PN133</Value></Item>
    <Item><Title>System Memory</Title><Icon>50</Icon><ID>520</ID><Value>247 MB  (PC133 SDRAM)</Value></Item>
    <Item><Title>BIOS Type</Title><Icon>27</Icon><ID>521</ID><Value>Phoenix (08/23/06)</Value></Item>
    <Item><Title>Communication Port</Title><Icon>21</Icon><ID>522</ID><Value>Communications Port (COM1)</Value></Item>
    <Item><Title>Communication Port</Title><Icon>21</Icon><ID>522</ID><Value>Communications Port (COM2)</Value></Item>
    <Item><Title>Communication Port</Title><Icon>21</Icon><ID>522</ID><Value>Printer Port (LPT1)</Value></Item>
    </Group>
    <Group><Title>Display</Title><Icon>6</Icon>
    <Item><Title>Video Adapter</Title><Icon>6</Icon><ID>523</ID><Value>S3 Graphics Twister  (8 MB)</Value></Item>
    <Item><Title>3D Accelerator</Title><Icon>49</Icon><ID>524</ID><Value>S3 Twister (86c380)</Value></Item>
    <Item><Title>Monitor</Title><Icon>6</Icon><ID>525</ID><Value>Plug and Play Monitor [NoDB]</Value></Item>
    </Group>
    <Group><Title>Storage</Title><Icon>5</Icon>
    <Item><Title>IDE Controller</Title><Icon>4</Icon><ID>580</ID><Value>VIA Bus Master IDE Controller</Value></Item>
    <Item><Title>Floppy Drive</Title><Icon>7</Icon><ID>527</ID><Value>Floppy disk drive</Value></Item>
    <Item><Title>Disk Drive</Title><Icon>5</Icon><ID>528</ID><Value>M-SysT5 Dell Memory Key USB Device  (109 MB, USB)</Value></Item>
    <Item><Title>Disk Drive</Title><Icon>5</Icon><ID>528</ID><Value>ST3402111A  (40 GB, 7200 RPM, Ultra-ATA/100)</Value></Item>
    <Item><Title>Optical Drive</Title><Icon>2</Icon><ID>529</ID><Value>TOSHIBA ODD-DVD SD-C2732  (8x/24x DVD-ROM)</Value></Item>
    <Item><Title>SMART Hard Disks Status</Title><Icon>5</Icon><ID>585</ID><Value>OK</Value></Item>
    </Group>
    <Group><Title>Partitions</Title><Icon>5</Icon>
    <Item><Title>C: (NTFS)</Title><Icon>5</Icon><ID>530</ID><Value>9114 MB (7282 MB free)</Value></Item>
    <Item><Title>D: (NTFS)</Title><Icon>5</Icon><ID>530</ID><Value>29015 MB (27840 MB free)</Value></Item>
    <Item><Title>Total Size</Title><Icon>5</Icon><ID>586</ID><Value>37.2 GB (34.3 GB free)</Value></Item>
    </Group>
    <Group><Title>Input</Title><Icon>15</Icon>
    <Item><Title>Keyboard</Title><Icon>12</Icon><ID>531</ID><Value>Standard 101/102-Key or Microsoft Natural PS/2 Keyboard</Value></Item>
    <Item><Title>Mouse</Title><Icon>15</Icon><ID>532</ID><Value>PS/2 Compatible Mouse</Value></Item>
    </Group>
    <Group><Title>Peripherals</Title><Icon>36</Icon>
    <Item><Title>USB1 Controller</Title><Icon>26</Icon><ID>568</ID><Value>VIA PCI-USB Universal Host Controller</Value></Item>
    <Item><Title>USB1 Controller</Title><Icon>26</Icon><ID>568</ID><Value>VIA PCI-USB Universal Host Controller</Value></Item>
    <Item><Title>USB Device</Title><Icon>26</Icon><ID>537</ID><Value>USB Mass Storage Device</Value></Item>
    </Group>
    </Page>
    </Report>
    Je veux changer la structure pour remplacer les elements ITEM par leur titre et mettre en texte le contenu de l'element VALUE.
    Exemple ( pour le premier ITEM ) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <Version>EVEREST v3.50.761/it</Version>
    J'ai donc, après moult recherches, pondu le XSLT suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <xsl:stylesheet xmlns:xsl = "http://www.w3.org/1999/XSL/Transform" version = "1.0" >
              <xsl:output method="xml" indent="yes"/>
     
              <xsl:template match = "/" >
                    <xsl:for-each select = "//Item" >
                        <xsl:element name = "{current()/Title}" >
                            <xsl:value-of select = "current()/Value" />
                        </xsl:element> 
                                  <xsl:text >
                                  </xsl:text> 
                     </xsl:for-each>
     
     
           </xsl:template>
    </xsl:stylesheet>
    La logique me semble bonne mais à la sortie on obtient le résultat suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    <?xml version="1.0" encoding="UTF-8"?>
    <Version>EVEREST v3.50.761/it</Version>
          2.1.169.0
          <Homepage>http://www.lavalys.com/</Homepage>
          Report Wizard
          <Computer>INFP01XXXXXXX1</Computer>
          <Generator>Administrator</Generator>
          Microsoft Windows 2000 Professional 5.0.2195 (Win2000 Retail)
          <Date>2007-02-23</Date>
          <Time>14:56</Time>
          Advanced Configuration and Power Interface (ACPI) PC  (Mobile)
          Microsoft Windows 2000 Professional
          Service Pack 4
          6.0.2800.1106 (IE 6.0 SP1)
          <DirectX>4.07.00.0700 (DirectX 7.0)</DirectX>
          INFP01XXXXXXX1
          Administrator
          INFP01XXXXXXX1
          2007-02-23 / 14:56
          Intel Pentium IIIE, 866 MHz (6.5 x 133)
          Unknown
          VIA VT8606 ProSavage PN133
          247 MB  (PC133 SDRAM)
          Phoenix (08/23/06)
          Communications Port (COM1)
          Communications Port (COM2)
          Printer Port (LPT1)
          S3 Graphics Twister  (8 MB)
          S3 Twister (86c380)
          <Monitor>Plug and Play Monitor [NoDB]</Monitor>
          VIA Bus Master IDE Controller
          Floppy disk drive
          M-SysT5 Dell Memory Key USB Device  (109 MB, USB)
          ST3402111A  (40 GB, 7200 RPM, Ultra-ATA/100)
          TOSHIBA ODD-DVD SD-C2732  (8x/24x DVD-ROM)
          OK
          9114 MB (7282 MB free)
          29015 MB (27840 MB free)
          37.2 GB (34.3 GB free)
          <Keyboard>Standard 101/102-Key or Microsoft Natural PS/2 Keyboard</Keyboard>
          <Mouse>PS/2 Compatible Mouse</Mouse>
          VIA PCI-USB Universal Host Controller
          VIA PCI-USB Universal Host Controller
          USB Mass Storage Device
    On constate donc que pour le premier élément le traitement à bien fonctionné, mais pas pour le 2, alors que pour le 3e c'est de nouveau OK etc...
    Je ne comprend pas en fait pourquoi le traitement fonctionne sur certains éléments et pas d'autres

    Auriez vous une idée d'où vient mon soucis ?

    Merci

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 952
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 952
    Points : 4 378
    Points
    4 378
    Par défaut
    Citation Envoyé par kalimatchoum
    Auriez vous une idée d'où vient mon soucis ?

    Merci

    au moins 1 problème :

    un tag xml ne peut contenir des espaces : donc les <Title> dont la valeur en contiendra vont vous poser problème…

    (Benchmark Module par exemple…)

  3. #3
    Futur Membre du Club
    Inscrit en
    Mars 2007
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    Ok merci pour la réponse rapide. En effet, je n'avais pas vu que les elements qui posaient problème étaient ceux avec des espaces.
    A présent, comment faire pour enlever ces espaces génants ?

    J'ai essayé avec la fonction normalize-space ou translate, mais ça ne donne rien de concluant ( au mieux j'obtiens le même résultat, au pire je n'ai plus aucun élement ).
    Maintenant que je sais d'où viens le problème, je continue de chercher

  4. #4
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 952
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 952
    Points : 4 378
    Points
    4 378
    Par défaut
    Citation Envoyé par kalimatchoum
    Ok merci pour la réponse rapide. En effet, je n'avais pas vu que les elements qui posaient problème étaient ceux avec des espaces.
    A présent, comment faire pour enlever ces espaces génants ?

    J'ai essayé avec la fonction normalize-space ou translate, mais ça ne donne rien de concluant ( au mieux j'obtiens le même résultat, au pire je n'ai plus aucun élement ).
    Maintenant que je sais d'où viens le problème, je continue de chercher
    montrez l'expression que vous utilisez avec normalize-space et translate…

  5. #5
    Futur Membre du Club
    Inscrit en
    Mars 2007
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    Merci J'avais testé mais m'etais trompé dans l'emplacement des {}.
    J'ai donc remplacé :
    <xsl:element name = "{current()/Title}" >

    par :
    <xsl:element name = "{translate(normalize-space(./Title),' ','_')}">

    Et ça marche mieux
    Il semblerai par contre que les chiffres et les ponctuations posent problème aussi, mais ça devrait vite être reglé

    Merci encore pour vos réponses, ca me permet de finir ma journée sur une bonne note

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [WD17] Champ boîte à outils. Problème d'ancrage : comportement inattendu
    Par xavier.ninane dans le forum WinDev
    Réponses: 1
    Dernier message: 30/07/2014, 16h42
  2. [Coldfusion] Problème de comportement des *.cfm
    Par DarkOcean dans le forum Coldfusion
    Réponses: 7
    Dernier message: 21/06/2006, 18h52
  3. [PHP][XSLT] problème caractères accentués
    Par beho dans le forum XSL/XSLT/XPATH
    Réponses: 11
    Dernier message: 29/05/2006, 09h29
  4. [XSLT]Problèmes d'ordre de lecture et d'écriture
    Par leup dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 11/07/2005, 10h36
  5. [XSLT] Problème de chemin d'accès + XSLT
    Par Jorus dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 15/09/2004, 08h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo