On the fly dataverwerken.
Ik heb rondgezocht maar kom niet uit het probleem wat ik heb. Na lang gerommel met het xml bestand heb ik eindelijk de informatie eruit kunnen halen die ik nodig heb. Nu moet ik het met php nog allemaal netjes zetten, en daar ben ik de weg kwijt op het moment.
Ik wil de lijst die opgebouwd wordt real-time verwerken en in de juist layout zetten. Hieronder zal ik delen van de lijststuctuur plaatsen. Het probleem zit hem dus in het maken van apparte blokjes van specificaties, nu staan ze nog door elkaar en los.
Nu is het dus de bedoeling dat de in dit geval 4 categoryfeaturegroups als 4 blokjes dienen waar de andere omschrijvingen in worden verdeeld.
Dus alles van de groep 1443 als 1 blokje 1443 met de 11 regels van de naam en omschrijving van de specificatie.
Wat er dan als volgt uit zou moeten gaan zien:
Cat 1443
naam omschrijving
naam omschrijving
naam omschrijving
naam omschrijving
naam omschrijving
Cat 1445
naam omschrijving
naam omschrijving
Cat 1446
naam omschrijving
naam omschrijving
Het gaat niet altijd om de Cat id 1443, 1445 of 1446. Dit is dus per xml bestand anders. Aangezien het gaat om ruim 2000 losse xml bestanden die op deze manier verwerkt zou moeten worden zou ik het real-time willen verwerken ipv eerst naar een db schrijven en dan het weer uit de db halen.
Ik hoop dat iemand mij hiermee kan helpen, of de goede richting in kan sturen.
Alvast bedankt voor jullie tijd en moeite.
Gewijzigd op 01/01/1970 01:00:00 door Rico
Toevallig heb ik gisteren een script toegevoegd waar dit ook wordt gedaan: PostgreSQL met XML en XSLT. Hier vind je ook een aantal links naar nuttige documentatie.
aangenomen dat het, na het uit elkaar halen van de XML, in een array gepropt wordt.
Eerst sorteren, dan een nieuw array maken met alles samen gevoegd.
Dus:
9 ProductFeature 17788660 1443 Box Y
- newline
10 ProductFeature 17788663 1446 Maximale temperatuur (in bedrijf) 55-70 °C
- newline
11 ProductFeature 17788666 1445 Thermisch vermogen 89 W
- newline
12 ProductFeature 17788667 1443 Processor-productieproces 90 nm
naar
9 ProductFeature 17788660 1443 Box Y
12 ProductFeature 17788667 1443 Processor-productieproces 90 nm
13 ProductFeature 17788669 1443 Aantal geïnstalleerde processoren 2
14 ProductFeature 17788670 1443 L1 cache 0.128 MB
- newline
11 ProductFeature 17788666 1445 Thermisch vermogen 89 W
- newline
10 ProductFeature 17788663 1446 Maximale temperatuur (in bedrijf) 55-70 °C
Dan zou je het er met een foreach weer uit kunnen halen.
Voor de verwerking van het XML bestand heb ik domit gebruikt. En ik zag dat je script gebruik maakt van de db PostgreSQL. Op mijn hosting wordt gebruik gemaakt van MySQL. Ik weet niet of het dan ook nog wel werkt.
XML + XSLT => parsen met PHP => jouw gewenste formaat (kan zelfs SQL zijn, denk bv. aan een INSERT-query)
Miky: nee het wordt nog niet in een array gestopt. Ik heb nog nooit met array's gewerkt. Ik ben het al wel aan het bekijken, maar het zal moeilijk worden voor mij denk ik. Maar ga het een poging geven :D
Welke tools gebruik jij voor XML? <oXygen/> verricht hier goed werk, maar is niet gratis. Werkt op Linux, OSX en Windows.
http://www.xxxx.nl/test/xxxx.xml
Dit is het xml bestand. Hieruit moet ik dus een nette specificatielijst maken.
Ik heb domit gebruikt om er de nodige informatie uit te halen. Zoals hier wordt weergegeven
http://www.xxxxx.nl/test/xxxx_xxx_xxxx.php
Hieronder heb ik de rommelige code staan die ik tot nu toe heb. Heb alleen het php gedeelte gedaan om het korter te maken.
Zoals je ziet staat alles nog los. Nu is dus de bedoeling dat de ProductFeature regels gekoppelt worden aan de CategoryFeatureGroup regels, zodat ik per group een blok kan maken die ik weer wil weergeven als apparte category blokjes met de categorynaam erbij.
Hier een kleine indruk:
Processor:
Processor AMD Athlon
Processor-kloksnelheid 2800 Mhz
Processorfamilie AMD Athlon X2
Processorsocket Socket AM2
Energie:
Thermisch vermogen 89 W
Eisen aan de omgeving:
Maximale temperatuur (in bedrijf) 55-70 °C
Ik hoop dat ik het een beetje heb kunnen uitleggen wat de bedoeling is en wat het probleem is.
Iig alvast bedankt voor jullie tijd en moeite.
Dit is het xml bestand. Hieruit moet ik dus een nette specificatielijst maken.
Ik heb domit gebruikt om er de nodige informatie uit te halen. Zoals hier wordt weergegeven
http://www.xxxxx.nl/test/xxxx_xxx_xxxx.php
Hieronder heb ik de rommelige code staan die ik tot nu toe heb. Heb alleen het php gedeelte gedaan om het korter te maken.
Code (php)
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
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
<?php
require_once('domit/xml_domit_include.php');
$doc =& new DOMIT_Document();
$success= $doc->loadXML("http://www.xxxxx.nl/test/xxxxx.xml");
$nodes =& $doc->documentElement->childNodes[0];
$node =& $nodes->childNodes;
$num =& $nodes->childCount;
for ($i = 0; $i < $num; $i++) {
$currentNode =& $node[$i];
$catNode1 =& $currentNode->firstChild;
$catNode2 =& $catNode1->lastChild;
$nodename =& $currentNode->nodeName;
$nodeid =& $currentNode->getAttribute("ID");
$specvalue =& $currentNode->getAttribute("Presentation_Value");
$catnummer =& $currentNode->getAttribute("CategoryFeatureGroup_ID");
if (empty($catNode2)) {
echo "";
}else {
$specnaam =& $catNode2->getAttribute("Value");
}
echo "<tr><td>".$i."</td><td>".$nodename."</td><td>".$nodeid."</td><td>".$catnummer."</td><td>".$specnaam."</td><td>".$specvalue."</td></tr>";
}
echo "</table>";
?>
require_once('domit/xml_domit_include.php');
$doc =& new DOMIT_Document();
$success= $doc->loadXML("http://www.xxxxx.nl/test/xxxxx.xml");
$nodes =& $doc->documentElement->childNodes[0];
$node =& $nodes->childNodes;
$num =& $nodes->childCount;
for ($i = 0; $i < $num; $i++) {
$currentNode =& $node[$i];
$catNode1 =& $currentNode->firstChild;
$catNode2 =& $catNode1->lastChild;
$nodename =& $currentNode->nodeName;
$nodeid =& $currentNode->getAttribute("ID");
$specvalue =& $currentNode->getAttribute("Presentation_Value");
$catnummer =& $currentNode->getAttribute("CategoryFeatureGroup_ID");
if (empty($catNode2)) {
echo "";
}else {
$specnaam =& $catNode2->getAttribute("Value");
}
echo "<tr><td>".$i."</td><td>".$nodename."</td><td>".$nodeid."</td><td>".$catnummer."</td><td>".$specnaam."</td><td>".$specvalue."</td></tr>";
}
echo "</table>";
?>
Zoals je ziet staat alles nog los. Nu is dus de bedoeling dat de ProductFeature regels gekoppelt worden aan de CategoryFeatureGroup regels, zodat ik per group een blok kan maken die ik weer wil weergeven als apparte category blokjes met de categorynaam erbij.
Hier een kleine indruk:
Processor:
Processor AMD Athlon
Processor-kloksnelheid 2800 Mhz
Processorfamilie AMD Athlon X2
Processorsocket Socket AM2
Energie:
Thermisch vermogen 89 W
Eisen aan de omgeving:
Maximale temperatuur (in bedrijf) 55-70 °C
Ik hoop dat ik het een beetje heb kunnen uitleggen wat de bedoeling is en wat het probleem is.
Iig alvast bedankt voor jullie tijd en moeite.
Gewijzigd op 01/01/1970 01:00:00 door Rico
Rico schreef op 29.03.2008 17:51:
Ga met XSLT aan de slag, dat is veruit de meest eenvoudige oplossing. Vervolgens heb je maar 5 regeltjes PHP-code nodig om e.e.a. te parsen, dat stelt echt helemaal niets meer voor. Op w3schools kun je meer informatie vinden over XSLT.Hieruit moet ik dus een nette specificatielijst maken.
domit kun je volgens mij dan ook weggooien, voegt niets toe.
Maar ik zal het eens gaan bekijken... Bedankt
Ik heb het bekeken, maar het ziet er niet naaruit dat dit een oplossing is voor wat ik als uitkomst wil hebben. Het kan heel goed zijn dat ik de oplossing er niet in heb kunnen vinden, aangezien dit pas de eerste keer is dat ik met xml werk. Dus zal ik het op de lastiger manier moeten doen die ik wel kan, dus alles in een db gooien, wat helaas zal resulteren in een uit de kluiten gewassen db.. :S Maarja, iig toch bedankt voor de informatie en tips.
Gewijzigd op 01/01/1970 01:00:00 door Rico
Code (php)
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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
<?xml version="1.0"?>
<!DOCTYPE ICECAT-interface SYSTEM "http://data.icecat.biz/dtd/ICECAT-interface_response.dtd">
<ICECAT-interface>
<Product ID="674163" ThumbPicSize="0" Quality="ICECAT"
HighPic="http://data.icecat.biz/img/norm/high/674163-4032.jpg"
LowPic="http://data.icecat.biz/img/norm/low/674163-4032.jpg" LowPicSize="31541"
Prod_id="ADA5600CZBOX" HighPicSize="61585"
ThumbPic="http://data.icecat.biz/thumbs/674163.jpg" Code="1"
Name="Athlon 64 X2 Dual-Core 5600+">
<ProductDescription/>
<ProductRelated/>
<ProductMultimediaObject/>
<ProductFeature Localized="0" ID="17139440" Value="AMD Athlon" CategoryFeature_ID="6074"
CategoryFeatureGroup_ID="1443" No="100000" Presentation_Value="AMD Athlon">
<Feature ID="47">
<Measure ID="29" Sign="">
<Signs/>
</Measure>
<Name ID="1432" Value="Processor" langid="2"/>
</Feature>
</ProductFeature>
<ProductFeature Localized="0" ID="17788653" Value="2800" CategoryFeature_ID="10875"
CategoryFeatureGroup_ID="1443" No="10100100" Presentation_Value="2800 MHz">
<Feature ID="5">
<Measure ID="18" Sign="MHz">
<Signs>
<Sign ID="9" langid="1">MHz</Sign>
</Signs>
</Measure>
<Name ID="1292" Value="Processor-kloksnelheid" langid="2"/>
</Feature>
</ProductFeature>
<ProductFeature Localized="0" ID="17788654" Value="AMD Athlon X2" CategoryFeature_ID="11582"
CategoryFeatureGroup_ID="1443" No="10100000" Presentation_Value="AMD Athlon X2">
<Feature ID="2196">
<Measure ID="29" Sign="">
<Signs/>
</Measure>
<Name ID="11272" Value="Processorfamilie" langid="2"/>
</Feature>
</ProductFeature>
<ProductFeature Localized="0" ID="17788655" Value="Socket AM2" CategoryFeature_ID="10876"
CategoryFeatureGroup_ID="1443" No="200040" Presentation_Value="Socket AM2">
<Feature ID="2325">
<Measure ID="29" Sign="">
<Signs/>
</Measure>
<Name ID="12017" Value="Processorsocket" langid="2"/>
</Feature>
</ProductFeature>
<ProductFeature Localized="0" ID="17788657" Value="2000" CategoryFeature_ID="16773"
CategoryFeatureGroup_ID="1443" No="100000" Presentation_Value="2000 MHz">
<Feature ID="1020">
<Measure ID="18" Sign="MHz">
<Signs>
<Sign ID="9" langid="1">MHz</Sign>
</Signs>
</Measure>
<Name ID="3582" Value="Processor systeembus" langid="2"/>
</Feature>
</ProductFeature>
<ProductFeature Localized="0" ID="17788658" Value="2x1" CategoryFeature_ID="6077"
CategoryFeatureGroup_ID="1443" No="200015" Presentation_Value="2x1 MB">
<Feature ID="1564">
<Measure ID="19" Sign="MB">
<Signs>
<Sign ID="196" langid="2">MB</Sign>
</Signs>
</Measure>
<Name ID="4874" Value="L2 cache" langid="2"/>
</Feature>
</ProductFeature>
<ProductFeature Localized="0" ID="17788660" Value="Y" CategoryFeature_ID="12813"
CategoryFeatureGroup_ID="1443" No="200020" Presentation_Value="Y">
<Feature ID="2306">
<Measure ID="29" Sign="">
<Signs/>
</Measure>
<Name ID="11960" Value="Box" langid="2"/>
</Feature>
</ProductFeature>
<ProductFeature Localized="0" ID="17788663" Value="55-70" CategoryFeature_ID="18637"
CategoryFeatureGroup_ID="1446" No="100000" Presentation_Value="55-70 C">
<Feature ID="3257">
<Measure ID="65" Sign="C">
<Signs>
<Sign ID="48" langid="1">C</Sign>
</Signs>
</Measure>
<Name ID="30879" Value="Maximale temperatuur (in bedrijf)" langid="2"/>
</Feature>
</ProductFeature>
<ProductFeature Localized="0" ID="17788666" Value="89" CategoryFeature_ID="18635"
CategoryFeatureGroup_ID="1445" No="100000" Presentation_Value="89 W">
<Feature ID="3255">
<Measure ID="44" Sign="W">
<Signs>
<Sign ID="28" langid="1">W</Sign>
</Signs>
</Measure>
<Name ID="30867" Value="Thermisch vermogen" langid="2"/>
</Feature>
</ProductFeature>
<ProductFeature Localized="0" ID="17788667" Value="90" CategoryFeature_ID="12432"
CategoryFeatureGroup_ID="1443" No="0" Presentation_Value="90 nm">
<Feature ID="1623">
<Measure ID="98" Sign="nm">
<Signs>
<Sign ID="80" langid="1">nm</Sign>
</Signs>
</Measure>
<Name ID="5060" Value="Processor-productieproces" langid="2"/>
</Feature>
</ProductFeature>
<ProductFeature Localized="0" ID="17788669" Value="2" CategoryFeature_ID="11881"
CategoryFeatureGroup_ID="1443" No="100000" Presentation_Value="2">
<Feature ID="596">
<Measure ID="29" Sign="">
<Signs/>
</Measure>
<Name ID="2724" Value="Aantal genstalleerde processoren" langid="2"/>
</Feature>
</ProductFeature>
<ProductFeature Localized="0" ID="17788670" Value="0.128" CategoryFeature_ID="11882"
CategoryFeatureGroup_ID="1443" No="0" Presentation_Value="0.128 MB">
<Feature ID="2219">
<Measure ID="19" Sign="MB">
<Signs>
<Sign ID="196" langid="2">MB</Sign>
</Signs>
</Measure>
<Name ID="11414" Value="L1 cache" langid="2"/>
</Feature>
</ProductFeature>
<ProductFeature Localized="0" ID="17788671" Value="1.30-1.35" CategoryFeature_ID="12433"
CategoryFeatureGroup_ID="1443" No="0" Presentation_Value="1.30-1.35 V">
<Feature ID="1017">
<Measure ID="42" Sign="V">
<Signs>
<Sign ID="26" langid="1">V</Sign>
</Signs>
</Measure>
<Name ID="3576" Value="Spanning processorkern (AC)" langid="2"/>
</Feature>
</ProductFeature>
<ProductFamily ID="1">
<Name/>
</ProductFamily>
<ProductBundled/>
<ProductGallery/>
<CategoryFeatureGroup ID="1444" No="1">
<FeatureGroup ID="0">
<Name ID="5074" Value="Technische details" langid="2"/>
</FeatureGroup>
</CategoryFeatureGroup>
<CategoryFeatureGroup ID="1443" No="50">
<FeatureGroup ID="1">
<Name ID="4860" Value="Processor" langid="2"/>
</FeatureGroup>
</CategoryFeatureGroup>
<CategoryFeatureGroup ID="1445" No="5">
<FeatureGroup ID="27">
<Name ID="5050" Value="Energie" langid="2"/>
</FeatureGroup>
</CategoryFeatureGroup>
<CategoryFeatureGroup ID="1446" No="2">
<FeatureGroup ID="28">
<Name ID="5068" Value="Eisen aan de omgeving" langid="2"/>
</FeatureGroup>
</CategoryFeatureGroup>
<EANCode EAN="0730143241250"/>
<Supplier ID="686" Name="AMD"/>
<Category ID="989">
<Name ID="6016" Value="processors" langid="2"/>
</Category>
</Product>
</ICECAT-interface>
<!DOCTYPE ICECAT-interface SYSTEM "http://data.icecat.biz/dtd/ICECAT-interface_response.dtd">
<ICECAT-interface>
<Product ID="674163" ThumbPicSize="0" Quality="ICECAT"
HighPic="http://data.icecat.biz/img/norm/high/674163-4032.jpg"
LowPic="http://data.icecat.biz/img/norm/low/674163-4032.jpg" LowPicSize="31541"
Prod_id="ADA5600CZBOX" HighPicSize="61585"
ThumbPic="http://data.icecat.biz/thumbs/674163.jpg" Code="1"
Name="Athlon 64 X2 Dual-Core 5600+">
<ProductDescription/>
<ProductRelated/>
<ProductMultimediaObject/>
<ProductFeature Localized="0" ID="17139440" Value="AMD Athlon" CategoryFeature_ID="6074"
CategoryFeatureGroup_ID="1443" No="100000" Presentation_Value="AMD Athlon">
<Feature ID="47">
<Measure ID="29" Sign="">
<Signs/>
</Measure>
<Name ID="1432" Value="Processor" langid="2"/>
</Feature>
</ProductFeature>
<ProductFeature Localized="0" ID="17788653" Value="2800" CategoryFeature_ID="10875"
CategoryFeatureGroup_ID="1443" No="10100100" Presentation_Value="2800 MHz">
<Feature ID="5">
<Measure ID="18" Sign="MHz">
<Signs>
<Sign ID="9" langid="1">MHz</Sign>
</Signs>
</Measure>
<Name ID="1292" Value="Processor-kloksnelheid" langid="2"/>
</Feature>
</ProductFeature>
<ProductFeature Localized="0" ID="17788654" Value="AMD Athlon X2" CategoryFeature_ID="11582"
CategoryFeatureGroup_ID="1443" No="10100000" Presentation_Value="AMD Athlon X2">
<Feature ID="2196">
<Measure ID="29" Sign="">
<Signs/>
</Measure>
<Name ID="11272" Value="Processorfamilie" langid="2"/>
</Feature>
</ProductFeature>
<ProductFeature Localized="0" ID="17788655" Value="Socket AM2" CategoryFeature_ID="10876"
CategoryFeatureGroup_ID="1443" No="200040" Presentation_Value="Socket AM2">
<Feature ID="2325">
<Measure ID="29" Sign="">
<Signs/>
</Measure>
<Name ID="12017" Value="Processorsocket" langid="2"/>
</Feature>
</ProductFeature>
<ProductFeature Localized="0" ID="17788657" Value="2000" CategoryFeature_ID="16773"
CategoryFeatureGroup_ID="1443" No="100000" Presentation_Value="2000 MHz">
<Feature ID="1020">
<Measure ID="18" Sign="MHz">
<Signs>
<Sign ID="9" langid="1">MHz</Sign>
</Signs>
</Measure>
<Name ID="3582" Value="Processor systeembus" langid="2"/>
</Feature>
</ProductFeature>
<ProductFeature Localized="0" ID="17788658" Value="2x1" CategoryFeature_ID="6077"
CategoryFeatureGroup_ID="1443" No="200015" Presentation_Value="2x1 MB">
<Feature ID="1564">
<Measure ID="19" Sign="MB">
<Signs>
<Sign ID="196" langid="2">MB</Sign>
</Signs>
</Measure>
<Name ID="4874" Value="L2 cache" langid="2"/>
</Feature>
</ProductFeature>
<ProductFeature Localized="0" ID="17788660" Value="Y" CategoryFeature_ID="12813"
CategoryFeatureGroup_ID="1443" No="200020" Presentation_Value="Y">
<Feature ID="2306">
<Measure ID="29" Sign="">
<Signs/>
</Measure>
<Name ID="11960" Value="Box" langid="2"/>
</Feature>
</ProductFeature>
<ProductFeature Localized="0" ID="17788663" Value="55-70" CategoryFeature_ID="18637"
CategoryFeatureGroup_ID="1446" No="100000" Presentation_Value="55-70 C">
<Feature ID="3257">
<Measure ID="65" Sign="C">
<Signs>
<Sign ID="48" langid="1">C</Sign>
</Signs>
</Measure>
<Name ID="30879" Value="Maximale temperatuur (in bedrijf)" langid="2"/>
</Feature>
</ProductFeature>
<ProductFeature Localized="0" ID="17788666" Value="89" CategoryFeature_ID="18635"
CategoryFeatureGroup_ID="1445" No="100000" Presentation_Value="89 W">
<Feature ID="3255">
<Measure ID="44" Sign="W">
<Signs>
<Sign ID="28" langid="1">W</Sign>
</Signs>
</Measure>
<Name ID="30867" Value="Thermisch vermogen" langid="2"/>
</Feature>
</ProductFeature>
<ProductFeature Localized="0" ID="17788667" Value="90" CategoryFeature_ID="12432"
CategoryFeatureGroup_ID="1443" No="0" Presentation_Value="90 nm">
<Feature ID="1623">
<Measure ID="98" Sign="nm">
<Signs>
<Sign ID="80" langid="1">nm</Sign>
</Signs>
</Measure>
<Name ID="5060" Value="Processor-productieproces" langid="2"/>
</Feature>
</ProductFeature>
<ProductFeature Localized="0" ID="17788669" Value="2" CategoryFeature_ID="11881"
CategoryFeatureGroup_ID="1443" No="100000" Presentation_Value="2">
<Feature ID="596">
<Measure ID="29" Sign="">
<Signs/>
</Measure>
<Name ID="2724" Value="Aantal genstalleerde processoren" langid="2"/>
</Feature>
</ProductFeature>
<ProductFeature Localized="0" ID="17788670" Value="0.128" CategoryFeature_ID="11882"
CategoryFeatureGroup_ID="1443" No="0" Presentation_Value="0.128 MB">
<Feature ID="2219">
<Measure ID="19" Sign="MB">
<Signs>
<Sign ID="196" langid="2">MB</Sign>
</Signs>
</Measure>
<Name ID="11414" Value="L1 cache" langid="2"/>
</Feature>
</ProductFeature>
<ProductFeature Localized="0" ID="17788671" Value="1.30-1.35" CategoryFeature_ID="12433"
CategoryFeatureGroup_ID="1443" No="0" Presentation_Value="1.30-1.35 V">
<Feature ID="1017">
<Measure ID="42" Sign="V">
<Signs>
<Sign ID="26" langid="1">V</Sign>
</Signs>
</Measure>
<Name ID="3576" Value="Spanning processorkern (AC)" langid="2"/>
</Feature>
</ProductFeature>
<ProductFamily ID="1">
<Name/>
</ProductFamily>
<ProductBundled/>
<ProductGallery/>
<CategoryFeatureGroup ID="1444" No="1">
<FeatureGroup ID="0">
<Name ID="5074" Value="Technische details" langid="2"/>
</FeatureGroup>
</CategoryFeatureGroup>
<CategoryFeatureGroup ID="1443" No="50">
<FeatureGroup ID="1">
<Name ID="4860" Value="Processor" langid="2"/>
</FeatureGroup>
</CategoryFeatureGroup>
<CategoryFeatureGroup ID="1445" No="5">
<FeatureGroup ID="27">
<Name ID="5050" Value="Energie" langid="2"/>
</FeatureGroup>
</CategoryFeatureGroup>
<CategoryFeatureGroup ID="1446" No="2">
<FeatureGroup ID="28">
<Name ID="5068" Value="Eisen aan de omgeving" langid="2"/>
</FeatureGroup>
</CategoryFeatureGroup>
<EANCode EAN="0730143241250"/>
<Supplier ID="686" Name="AMD"/>
<Category ID="989">
<Name ID="6016" Value="processors" langid="2"/>
</Category>
</Product>
</ICECAT-interface>
Dan de XSLT, icecat.xsl:
Code (php)
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
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"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"
doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" indent="yes"/>
<xsl:template match="/ICECAT-interface/Product">
<html>
<head>
<title>Icecat</title>
</head>
<body>
<table>
<tr>
<td colspan="3">
<xsl:value-of select="@Name"/>
</td>
</tr>
<xsl:for-each select="ProductFeature">
<xsl:variable name="CategoryID" select="@CategoryFeatureGroup_ID"/>
<tr>
<td>
<xsl:value-of select="Feature/Name/@Value"/>
</td>
<td>
<xsl:value-of select="@Presentation_Value"/>
</td>
<xsl:for-each select="//CategoryFeatureGroup">
<xsl:if test="@ID=$CategoryID">
<td>
<xsl:value-of select="FeatureGroup/Name/@Value"/>
</td>
</xsl:if>
</xsl:for-each>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"
doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" indent="yes"/>
<xsl:template match="/ICECAT-interface/Product">
<html>
<head>
<title>Icecat</title>
</head>
<body>
<table>
<tr>
<td colspan="3">
<xsl:value-of select="@Name"/>
</td>
</tr>
<xsl:for-each select="ProductFeature">
<xsl:variable name="CategoryID" select="@CategoryFeatureGroup_ID"/>
<tr>
<td>
<xsl:value-of select="Feature/Name/@Value"/>
</td>
<td>
<xsl:value-of select="@Presentation_Value"/>
</td>
<xsl:for-each select="//CategoryFeatureGroup">
<xsl:if test="@ID=$CategoryID">
<td>
<xsl:value-of select="FeatureGroup/Name/@Value"/>
</td>
</xsl:if>
</xsl:for-each>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
En de PHP-code, icecat.php:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
$xsl_filename = 'icecat.xsl'; // stylesheet
$xml = 'icecat.xml'; // content
$doc = new DOMDocument();
$doc->load($xsl_filename);
$xsl = new XSLTProcessor();
$xsl->importStyleSheet($doc);
$doc->load($xml);
echo $xsl->transformToXML($doc);
?>
$xsl_filename = 'icecat.xsl'; // stylesheet
$xml = 'icecat.xml'; // content
$doc = new DOMDocument();
$doc->load($xsl_filename);
$xsl = new XSLTProcessor();
$xsl->importStyleSheet($doc);
$doc->load($xml);
echo $xsl->transformToXML($doc);
?>
Resultaat (xHTML):
Code (php)
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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
<?xml version="1.0"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Icecat</title>
</head>
<body>
<table>
<tr>
<td colspan="3">Athlon 64 X2 Dual-Core 5600+</td>
</tr>
<tr>
<td>Processor</td>
<td>AMD Athlon</td>
<td>Processor</td>
</tr>
<tr>
<td>Processor-kloksnelheid</td>
<td>2800 MHz</td>
<td>Processor</td>
</tr>
<tr>
<td>Processorfamilie</td>
<td>AMD Athlon X2</td>
<td>Processor</td>
</tr>
<tr>
<td>Processorsocket</td>
<td>Socket AM2</td>
<td>Processor</td>
</tr>
<tr>
<td>Processor systeembus</td>
<td>2000 MHz</td>
<td>Processor</td>
</tr>
<tr>
<td>L2 cache</td>
<td>2x1 MB</td>
<td>Processor</td>
</tr>
<tr>
<td>Box</td>
<td>Y</td>
<td>Processor</td>
</tr>
<tr>
<td>Maximale temperatuur (in bedrijf)</td>
<td>55-70 C</td>
<td>Eisen aan de omgeving</td>
</tr>
<tr>
<td>Thermisch vermogen</td>
<td>89 W</td>
<td>Energie</td>
</tr>
<tr>
<td>Processor-productieproces</td>
<td>90 nm</td>
<td>Processor</td>
</tr>
<tr>
<td>Aantal genstalleerde processoren</td>
<td>2</td>
<td>Processor</td>
</tr>
<tr>
<td>L1 cache</td>
<td>0.128 MB</td>
<td>Processor</td>
</tr>
<tr>
<td>Spanning processorkern (AC)</td>
<td>1.30-1.35 V</td>
<td>Processor</td>
</tr>
</table>
</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Icecat</title>
</head>
<body>
<table>
<tr>
<td colspan="3">Athlon 64 X2 Dual-Core 5600+</td>
</tr>
<tr>
<td>Processor</td>
<td>AMD Athlon</td>
<td>Processor</td>
</tr>
<tr>
<td>Processor-kloksnelheid</td>
<td>2800 MHz</td>
<td>Processor</td>
</tr>
<tr>
<td>Processorfamilie</td>
<td>AMD Athlon X2</td>
<td>Processor</td>
</tr>
<tr>
<td>Processorsocket</td>
<td>Socket AM2</td>
<td>Processor</td>
</tr>
<tr>
<td>Processor systeembus</td>
<td>2000 MHz</td>
<td>Processor</td>
</tr>
<tr>
<td>L2 cache</td>
<td>2x1 MB</td>
<td>Processor</td>
</tr>
<tr>
<td>Box</td>
<td>Y</td>
<td>Processor</td>
</tr>
<tr>
<td>Maximale temperatuur (in bedrijf)</td>
<td>55-70 C</td>
<td>Eisen aan de omgeving</td>
</tr>
<tr>
<td>Thermisch vermogen</td>
<td>89 W</td>
<td>Energie</td>
</tr>
<tr>
<td>Processor-productieproces</td>
<td>90 nm</td>
<td>Processor</td>
</tr>
<tr>
<td>Aantal genstalleerde processoren</td>
<td>2</td>
<td>Processor</td>
</tr>
<tr>
<td>L1 cache</td>
<td>0.128 MB</td>
<td>Processor</td>
</tr>
<tr>
<td>Spanning processorkern (AC)</td>
<td>1.30-1.35 V</td>
<td>Processor</td>
</tr>
</table>
</body>
</html>
Blijft leuk die XML-XSLT, heb er te lang niets mee gedaan! Moet er echt meer mee gaan doen, het maakt het programmeerwerk gewoon eenvoudiger. XML is King!
Edit:
Gewijzigd op 01/01/1970 01:00:00 door Frank -
Warning: domdocument() expects at least 1 parameter, 0 given in
Fatal error: Call to undefined function: load()
Ik heb al wat dingen geprobeerd, maar ik krijg het niet werkend. :S
En wat ik ook graag zou willen is dat alles bij elkaar staat, nu staat alles door elkaar. Dus alles van processor bij elkaar enzovoorts.
Gewijzigd op 01/01/1970 01:00:00 door Rico
PHP 5 lijkt mij ook wel een minimale eis, versie 4 is echt op sterven na dood. Versie 5 is al weer een jaar of 3, 4 oud...
Sorteren in XSLT doe je met order. Zie ook het script waar ik je al een link naar heb gegeven, daar staat dit ook in de XSLT.
Helaas wordt er nog steeds php 4.4.0 gebruikt. :S en ik durf het zo niet te zeggen of DOM en XSLT er wel op zitten.. kan maandag wel even nabellen of ze dit erop hebben zitten.
Rico schreef op 29.03.2008 19:53:
Dat wordt dus verhuizen naar een provider die wél up-to-date is.Helaas wordt er nog steeds php 4.4.0 gebruikt. :S en ik durf het zo niet te zeggen of DOM en XSLT er wel op zitten.. kan maandag wel even nabellen of ze dit erop hebben zitten.
DOM en XSLT zijn in de gebruikte vorm pas sinds versie 5 beschikbaar, dat gaat met 4 dus niet lukken. Maar goed, versie 4 is toch achterhaald, kun je beter z.s.m. afscheid van nemen. Het wordt zeer binnenkort technisch ook niet meer ondersteund.
Iig heel erg bedankt voor je hulp. Ik ga hier maandag meteen werk van maken, zodat het allemaal werkend is. En dan is als het goed is dit probleem meteen opgelost. :D Thx.. :D
Ik zag nog wel dat domxml, xml en xmlrpc actief zijn op de hosting. Maar geen XSLT. En zoals je al aangaf zal het dan niet werken.. :S
Gewijzigd op 01/01/1970 01:00:00 door Rico
Het enigste waar ik nu dus al een tijdje mee bezig ben is de sortering en groepering van dat xsl bestand.
Nu komt er dit uit
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
Processor AMD Athlon Processor
Processor-kloksnelheid 2800 MHz Processor
Processorfamilie AMD Athlon X2 Processor
Processorsocket Socket AM2 Processor
Processor systeembus 2000 MHz Processor
L2 cache 2x1 MB Processor
Box Y Processor
Maximale temperatuur 55-70 C Eisen aan de omgeving
Thermisch vermogen 89 W Energie
Processor-productieproces 90 nm Processor
Aantal processoren 2 Processor
L1 cache 0.128 MB Processor
Spanning processorkern (AC) 1.30-1.35 V Processor
Processor-kloksnelheid 2800 MHz Processor
Processorfamilie AMD Athlon X2 Processor
Processorsocket Socket AM2 Processor
Processor systeembus 2000 MHz Processor
L2 cache 2x1 MB Processor
Box Y Processor
Maximale temperatuur 55-70 C Eisen aan de omgeving
Thermisch vermogen 89 W Energie
Processor-productieproces 90 nm Processor
Aantal processoren 2 Processor
L1 cache 0.128 MB Processor
Spanning processorkern (AC) 1.30-1.35 V Processor
En het zou dus moeten zijn dat per catergorie 1 blokje wordt gemaakt waar alles in die wordt weergegeven. Het probleem waar ik mee zit is dat ik het sorteren en groeperen niet voorelkaar krijg.
Dit zou het moeten zijn:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Processor:
Processor AMD Athlon
Processor-kloksnelheid 2800 MHz
Processorfamilie AMD Athlon X2
Processorsocket Socket AM2
Processor systeembus 2000 MHz
L2 cache 2x1 MB
Box Y
Processor-productieproces 90 nm
Aantal processoren 2
L1 cache 0.128 MB
Spanning processorkern (AC) 1.30-1.35 V
Eisen aan de omgeving:
Maximale temperatuur (in bedrijf) 55-70 C
Energie:
Thermisch vermogen 89 W
Processor AMD Athlon
Processor-kloksnelheid 2800 MHz
Processorfamilie AMD Athlon X2
Processorsocket Socket AM2
Processor systeembus 2000 MHz
L2 cache 2x1 MB
Box Y
Processor-productieproces 90 nm
Aantal processoren 2
L1 cache 0.128 MB
Spanning processorkern (AC) 1.30-1.35 V
Eisen aan de omgeving:
Maximale temperatuur (in bedrijf) 55-70 C
Energie:
Thermisch vermogen 89 W
Helaas kan ik het niet beter laten zien aangezien dit forum extra spaties weghaalt. Dus ik hoop dat ik het op deze manier toch enigzins duidelijk heb kunnen maken wat ik als eindresultaat wil, maar mij niet lukt.
Alvast bedankt voor jullie tijd en moeite.
Gewijzigd op 01/01/1970 01:00:00 door Rico
Gebruik en om de blokken code, dan wordt het een stuk duidelijker.
Als je een recente browser hebt, kan ie het on the fly ...
Hipska schreef op 31.03.2008 18:28:
Klopt, maar jouw site wordt dan al wel snel een keer of tig zo langzaam. Zie de omvang (in KB's) van de XML en de XSLT, al deze data moet wel over de lijn worden gepompt. Daarnaast word je afhankelijk van de browser wat het uiteindelijke resultaat zal zijn. Ik zal niemand aanraden om het parsen door de browser af te laten handelen, de server kan dat veel sneller en efficienter.om een xml te transformen met xslt heb je helemaal geen php voor nodig...
Als je een recente browser hebt, kan ie het on the fly ...
Als je een recente browser hebt, kan ie het on the fly ...
wat overigen eigenlijk wel erg aan te raden is!