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 :
Je veux changer la structure pour remplacer les elements ITEM par leur titre et mettre en texte le contenu de l'element VALUE.
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>
Exemple ( pour le premier ITEM ) :
J'ai donc, après moult recherches, pondu le XSLT suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part <Version>EVEREST v3.50.761/it</Version>
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 <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>
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...
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
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![]()
Partager