Xml data in Table
EN hij laat alle overige data die ik niet gebruik zien.
hier de code.
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
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
<?php
$xml_file = "xml/saveprijs.xml";
echo "<table border=0 cellpadding=5>";
echo "<tr><th colspan=2>Prijzenlijst</th></tr>";
function startElement($parser_instance, $element_name, $attrs) {
switch($element_name) {
case "VERTALING" : echo "<tr><td>";
break;
case "KOSTEN" : echo "<td>";
break;
case "KOSTEN" : echo ">";
break;
}
}
function characterData($parser_instance, $xml_data) {
echo $xml_data;
}
function endElement($parser_instance, $element_name) {
switch($element_name) {
case "VERTALING" : echo "</td>";
break;
case "KOSTEN" : echo "</td></tr>";
break;
}
}
$parser = xml_parser_create();
xml_set_element_handler($parser, "startElement", "endElement");
xml_set_character_data_handler($parser, "characterData");
if (!($filehandler = fopen($xml_file, "r"))) {
die("could not open XML input");
}
while ($data = fread($filehandler, 4096)) {
if (!xml_parse($parser, $data, feof($filehandler))) {
die(sprintf("XML error: %s at line %d",
xml_error_string(xml_get_error_code($parser)),
xml_get_current_line_number($parser)));
}
}
fclose($filehandler);
xml_parser_free($parser);
echo "</table>";
?>
$xml_file = "xml/saveprijs.xml";
echo "<table border=0 cellpadding=5>";
echo "<tr><th colspan=2>Prijzenlijst</th></tr>";
function startElement($parser_instance, $element_name, $attrs) {
switch($element_name) {
case "VERTALING" : echo "<tr><td>";
break;
case "KOSTEN" : echo "<td>";
break;
case "KOSTEN" : echo ">";
break;
}
}
function characterData($parser_instance, $xml_data) {
echo $xml_data;
}
function endElement($parser_instance, $element_name) {
switch($element_name) {
case "VERTALING" : echo "</td>";
break;
case "KOSTEN" : echo "</td></tr>";
break;
}
}
$parser = xml_parser_create();
xml_set_element_handler($parser, "startElement", "endElement");
xml_set_character_data_handler($parser, "characterData");
if (!($filehandler = fopen($xml_file, "r"))) {
die("could not open XML input");
}
while ($data = fread($filehandler, 4096)) {
if (!xml_parse($parser, $data, feof($filehandler))) {
die(sprintf("XML error: %s at line %d",
xml_error_string(xml_get_error_code($parser)),
xml_get_current_line_number($parser)));
}
}
fclose($filehandler);
xml_parser_free($parser);
echo "</table>";
?>
dit weergeeft hij als ik deze run.
8 4 28-03-2008 11:22:04 -1 -1 74 Y 1032 1115 Schoolreisje kind 1 Schoolreisje kind
1
0 Y 1033 1114 Schoolreisje volwassene 3 Schoolreisje volwassene
3
0 OK OK
en hieronder keurig het tabel met wat ik wil.
1 Schoolreisje 18,5
3 Schoolreisje volwassene 55,5
Gewijzigd op 01/01/1970 01:00:00 door Boee
dus als ik het naar XSLT parse kan de webservice het niet lezen.
boee schreef op 28.03.2008 12:14:
Dan snap je duidelijk niet wat XSLT is, dat is namelijk de transformer en niet het resultaat. En wat je met XSLT gaat uitpoepen, dat mag je zelf weten, een <table> met data is slechts één van de vele mogelijkheden.dus als ik het naar XSLT parse kan de webservice het niet lezen.
Ik sla de response van de webservice op als saveprijzen.xml.
Dan kan ik saveprijzen.xml naar een XSLT bestand transformen naar saveprijzen.xsl en dit bestand importeren in mijn php pagina.
Is dit correct?, of zit ik er weer naast :)
EDIT: moet ik dan ook niet in de response zetten om het te laten werken ?
Mvg,
Boee
Gewijzigd op 01/01/1970 01:00:00 door boee
XML (de content) + XSLT (de template) = xHTML
pgFrank schreef op 28.03.2008 13:09:
Nee, XML mét een XSLT transformeer je de boel bv. naar een fraaie html-table.
XML (de content) + XSLT (de template) = xHTML
XML (de content) + XSLT (de template) = xHTML
Ah nu snap ik eht maar dan moet ik dus nogsteeds
toevoegen aan mijn response om het te laten werken ?
XML:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="boodschappen.xsl"?>
<artikelen>
<artikel prodnr="1372">
<omschrijving>pindakaas</omschrijving>
<prijs>2.95</prijs>
</artikel>
<artikel prodnr="22">
<omschrijving>hagelslag</omschrijving>
<prijs>2.49</prijs>
</artikel>
<artikel prodnr="5389">
<omschrijving>jam</omschrijving>
<prijs>1.99</prijs>
</artikel>
</artikelen>
<?xml-stylesheet type="text/xsl" href="boodschappen.xsl"?>
<artikelen>
<artikel prodnr="1372">
<omschrijving>pindakaas</omschrijving>
<prijs>2.95</prijs>
</artikel>
<artikel prodnr="22">
<omschrijving>hagelslag</omschrijving>
<prijs>2.49</prijs>
</artikel>
<artikel prodnr="5389">
<omschrijving>jam</omschrijving>
<prijs>1.99</prijs>
</artikel>
</artikelen>
De XSLT:
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
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
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
<html>
<body>
<h2>Boodschappen</h2>
<table>
<tr>
<th>Artikelnummer</th>
<th>Omschrijving</th>
<th>Prijs (euro)</th>
</tr>
<xsl:for-each select="artikelen/artikel">
<tr>
<td><xsl:value-of select="@prodnr"/></td>
<td><xsl:value-of select="omschrijving"/></td>
<td><xsl:value-of select="prijs"/></td>
</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:template match="/">
<html>
<body>
<h2>Boodschappen</h2>
<table>
<tr>
<th>Artikelnummer</th>
<th>Omschrijving</th>
<th>Prijs (euro)</th>
</tr>
<xsl:for-each select="artikelen/artikel">
<tr>
<td><xsl:value-of select="@prodnr"/></td>
<td><xsl:value-of select="omschrijving"/></td>
<td><xsl:value-of select="prijs"/></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
En dan de html-output zoals het in de browser komt te staan:
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
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
<html>
<body>
<h2>Boodschappen</h2>
<table>
<tr>
<th>Artikelnummer</th>
<th>Omschrijving</th>
<th>Prijs (euro)</th>
</tr>
<tr>
<td>1372</td>
<td>pindakaas</td>
<td>2.95</td>
</tr>
<tr>
<td>22</td>
<td>hagelslag</td>
<td>2.49</td>
</tr>
<tr>
<td>5389</td>
<td>jam</td>
<td>1.99</td>
</tr>
</table>
</body>
</html>
<body>
<h2>Boodschappen</h2>
<table>
<tr>
<th>Artikelnummer</th>
<th>Omschrijving</th>
<th>Prijs (euro)</th>
</tr>
<tr>
<td>1372</td>
<td>pindakaas</td>
<td>2.95</td>
</tr>
<tr>
<td>22</td>
<td>hagelslag</td>
<td>2.49</td>
</tr>
<tr>
<td>5389</td>
<td>jam</td>
<td>1.99</td>
</tr>
</table>
</body>
</html>
Het transformeren kun je in PHP met xslt_process() doen, zie de PHP-handleiding. DOM is uiteraard ook een mogelijkheid.
<DOCUMENT>
<NUMBER>8</NUMBER>
<VERSION>4</VERSION>
<HEADER>
<RESPONSE>
<DATUM>28-03-2008</DATUM>
<TIJD>11:35:04</TIJD>
</RESPONSE>
</HEADER>
<DATA>
<RESULT>
<RESERVERING>
<NUMMER>-1</NUMMER>
<OVEREENKOMSTNUMMER>-1</OVEREENKOMSTNUMMER>
<TOTAALKOSTEN>74</TOTAALKOSTEN>
<ARTIKELREGELS>
<ARTIKELREGEL>
<SELECTED>Y</SELECTED>
<NUMMER>1032</NUMMER>
<IDARTIKEL>1115</IDARTIKEL>
<OMSCHRIJVING>Schoolreisje kind</OMSCHRIJVING>
<REGEL>1 Schoolreisje kind</REGEL>
<VERTALING>1 Schoolreisje kind</VERTALING>
<AANTAL>1</AANTAL>
<KOSTEN>18,5</KOSTEN>
<KORTING>0</KORTING>
</ARTIKELREGEL>
<ARTIKELREGEL>
<SELECTED>Y</SELECTED>
<NUMMER>1033</NUMMER>
<IDARTIKEL>1114</IDARTIKEL>
<OMSCHRIJVING>Schoolreisje volwassene</OMSCHRIJVING>
<REGEL>3 Schoolreisje volwassene</REGEL>
<VERTALING>3 Schoolreisje volwassene</VERTALING>
<AANTAL>3</AANTAL>
<KOSTEN>55,5</KOSTEN>
<KORTING>0</KORTING>
</ARTIKELREGEL>
</ARTIKELREGELS>
<BETALINGSTERMIJNEN/>
</RESERVERING>
</RESULT>
</DATA>
<CONTROL>
<STATUS>
<CODE>OK</CODE>
<MESSAGE>OK</MESSAGE>
</STATUS>
</CONTROL>
</DOCUMENT>
dus de xsl zou er zo uit moeten zien voor de artikel gegevens.
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
<html>
<body>
<h2>Prijzen</h2>
<table>
<tr>
<th>Aantal</th>
<th>Omschrijving</th>
<th>Prijs</th>
</tr>
<xsl:for-each select="DATA/RESULT/RESERVERING/ARTIKELREGELS/ARTIKELREGEL">
<tr>
<td><xsl:value-of select="AANTAL"/></td>
<td><xsl:value-of select="OMSCHRIVJING"/></td>
<td><xsl:value-of select="PRIJS"/></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Alleen dus nog
In saveprijs.xml te krijgen.
Zie de php-handleiding.
Edit: Mijn voorbeelden komen Oxygen en heb ik niet met PHP geparsed. Vandaar dat de opzet ietjes anders is. Er gaan vele wegen naar Rome!
Gewijzigd op 01/01/1970 01:00:00 door Frank -
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?php
$xml = new DomDocument();
$xml->load('xml/saveprijs.xml');
$xsl = new DomDocument;
$xsl->load('xml/saveprijs.xsl');
$proc = new xsltprocessor();
$proc->importStyleSheet($xsl);
echo($proc->transformToXML($xml));
?>
$xml = new DomDocument();
$xml->load('xml/saveprijs.xml');
$xsl = new DomDocument;
$xsl->load('xml/saveprijs.xsl');
$proc = new xsltprocessor();
$proc->importStyleSheet($xsl);
echo($proc->transformToXML($xml));
?>
nu krijg ik keurig
Prijzen
Aantal Omschrijving Prijs
Tezien maar volgens mij zit er nog een fout in mijn xsl, aangezien mijn xml vrij groot is.
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
<html>
<body>
<h2>Prijzen</h2>
<table>
<tr>
<th>Aantal</th>
<th>Omschrijving</th>
<th>Prijs</th>
</tr>
<xsl:for-each select="DATA/RESULT/RESERVERING/ARTIKELREGELS/ARTIKELREGEL">
<tr>
<td><xsl:value-of select="AANTAL"/></td>
<td><xsl:value-of select="OMSCHRIJVING"/></td>
<td><xsl:value-of select="PRIJS"/></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Ook zal ik even het forum browser hoe ik bovenstaande code netjes in een coderegels krijg want dit ziet er zo niet uit :)
Gewijzigd op 01/01/1970 01:00:00 door boee
Jouw php-code ziet er goed uit, al is echo geen functie. ( en ) gooi je weg, kunnen alleen maar voor tikfouten zorgen:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
<?php
$xml = new DomDocument();
$xml->load('xml/saveprijs.xml');
$xsl = new DomDocument;
$xsl->load('xml/saveprijs.xsl');
$proc = new xsltprocessor();
$proc->importStyleSheet($xsl);
echo $proc->transformToXML($xml);
?>
$xml = new DomDocument();
$xml->load('xml/saveprijs.xml');
$xsl = new DomDocument;
$xsl->load('xml/saveprijs.xsl');
$proc = new xsltprocessor();
$proc->importStyleSheet($xsl);
echo $proc->transformToXML($xml);
?>
Werk perfect.
Nu denk ik dat ik een fout heb gemaakt in
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
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
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
<html>
<body>
<h2>Prijzen</h2>
<table>
<tr>
<th>Aantal</th>
<th>Omschrijving</th>
<th>Prijs</th>
</tr>
<xsl:for-each select="DATA/RESULT/RESERVERING/ARTIKELREGELS/ARTIKELREGEL">
<tr>
<td><xsl:value-of select="AANTAL"/></td>
<td><xsl:value-of select="OMSCHRIVJING"/></td>
<td><xsl:value-of select="PRIJS"/></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
<xsl:template match="/">
<html>
<body>
<h2>Prijzen</h2>
<table>
<tr>
<th>Aantal</th>
<th>Omschrijving</th>
<th>Prijs</th>
</tr>
<xsl:for-each select="DATA/RESULT/RESERVERING/ARTIKELREGELS/ARTIKELREGEL">
<tr>
<td><xsl:value-of select="AANTAL"/></td>
<td><xsl:value-of select="OMSCHRIVJING"/></td>
<td><xsl:value-of select="PRIJS"/></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Dit mag hem worden:
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
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
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
<html>
<body>
<h2>Prijzen</h2>
<table>
<tr>
<th>Aantal</th>
<th>Omschrijving</th>
<th>Prijs</th>
</tr>
<xsl:for-each select="DOCUMENT/DATA/RESULT/RESERVERING/ARTIKELREGELS/ARTIKELREGEL">
<tr>
<td><xsl:value-of select="AANTAL"/></td>
<td><xsl:value-of select="OMSCHRIJVING"/></td>
<td><xsl:value-of select="KOSTEN"/></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
<xsl:template match="/">
<html>
<body>
<h2>Prijzen</h2>
<table>
<tr>
<th>Aantal</th>
<th>Omschrijving</th>
<th>Prijs</th>
</tr>
<xsl:for-each select="DOCUMENT/DATA/RESULT/RESERVERING/ARTIKELREGELS/ARTIKELREGEL">
<tr>
<td><xsl:value-of select="AANTAL"/></td>
<td><xsl:value-of select="OMSCHRIJVING"/></td>
<td><xsl:value-of select="KOSTEN"/></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Gewijzigd op 01/01/1970 01:00:00 door Frank -
pgFrank schreef op 28.03.2008 14:09:Ok, en wat gaat er fout?
Dit mag hem worden:
Dit mag hem worden:
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
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
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
<html>
<body>
<h2>Prijzen</h2>
<table>
<tr>
<th>Aantal</th>
<th>Omschrijving</th>
<th>Prijs</th>
</tr>
<xsl:for-each select="DOCUMENT/DATA/RESULT/RESERVERING/ARTIKELREGELS/ARTIKELREGEL">
<tr>
<td><xsl:value-of select="AANTAL"/></td>
<td><xsl:value-of select="OMSCHRIJVING"/></td>
<td><xsl:value-of select="KOSTEN"/></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
<xsl:template match="/">
<html>
<body>
<h2>Prijzen</h2>
<table>
<tr>
<th>Aantal</th>
<th>Omschrijving</th>
<th>Prijs</th>
</tr>
<xsl:for-each select="DOCUMENT/DATA/RESULT/RESERVERING/ARTIKELREGELS/ARTIKELREGEL">
<tr>
<td><xsl:value-of select="AANTAL"/></td>
<td><xsl:value-of select="OMSCHRIJVING"/></td>
<td><xsl:value-of select="KOSTEN"/></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Bedankt ! hij werkt nu, maar ik zou er graag de Totaalprijs onderaan goed willen neerzetten
nu zet hij hem helemaal onderaan.
Prijzen
Aantal | Omschrijving | Prijs
1 | Schoolreisje kind | 18,5
3 | Schoolreisje volwassene | 55,5
74
Is het mogelijk om het zo te maken?
Prijzen
Aantal | Omschrijving | Prijs
1 | Schoolreisje kind | 18,5
3 | Schoolreisje volwassene | 55,5
-----------------------------------
Totaal Kosten 74 Euro
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
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
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
<html>
<body>
<h2>Prijzen</h2>
<table>
<tr bgcolor="#9acd32">
<th>Aantal</th>
<th>Omschrijving</th>
<th>Prijs</th>
</tr>
<xsl:for-each select="DOCUMENT/DATA/RESULT/RESERVERING/ARTIKELREGELS/ARTIKELREGEL">
<tr>
<td><xsl:value-of select="AANTAL"/></td>
<td><xsl:value-of select="OMSCHRIJVING"/></td>
<td><xsl:value-of select="KOSTEN"/></td>
</tr>
</xsl:for-each>
<xsl:for-each select="DOCUMENT/DATA/RESULT/RESERVERING">
<tr>
<td><xsl:value-of select="TOTAALKOSTEN"/></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
<xsl:template match="/">
<html>
<body>
<h2>Prijzen</h2>
<table>
<tr bgcolor="#9acd32">
<th>Aantal</th>
<th>Omschrijving</th>
<th>Prijs</th>
</tr>
<xsl:for-each select="DOCUMENT/DATA/RESULT/RESERVERING/ARTIKELREGELS/ARTIKELREGEL">
<tr>
<td><xsl:value-of select="AANTAL"/></td>
<td><xsl:value-of select="OMSCHRIJVING"/></td>
<td><xsl:value-of select="KOSTEN"/></td>
</tr>
</xsl:for-each>
<xsl:for-each select="DOCUMENT/DATA/RESULT/RESERVERING">
<tr>
<td><xsl:value-of select="TOTAALKOSTEN"/></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Bij voorbaat dank.
Gewijzigd op 01/01/1970 01:00:00 door boee
Edit: 18 komma 5 is trouwens ook geen getal, daar kun je dus niet mee rekenen. In de wiskunde gebruikt men een punt, dat heb je in PHP en XML dus ook nodig. Waar komt deze foute XML eigenlijk vandaan?
Gewijzigd op 01/01/1970 01:00:00 door Frank -
pgFrank schreef op 28.03.2008 14:59:
74 klopt natuurlijk niet: 1x 18.5 + 3x 55.5 dat is nog altijd 185.
Edit: 18 komma 5 is trouwens ook geen getal, daar kun je dus niet mee rekenen. In de wiskunde gebruikt men een punt, dat heb je in PHP en XML dus ook nodig. Waar komt deze foute XML eigenlijk vandaan?
Edit: 18 komma 5 is trouwens ook geen getal, daar kun je dus niet mee rekenen. In de wiskunde gebruikt men een punt, dat heb je in PHP en XML dus ook nodig. Waar komt deze foute XML eigenlijk vandaan?
Het is niet de volle prijs dus 3 personen, 55,5
55,5 word door eht programma zelf meegegeven.
18,5 + 55,5 = wel 74 :)
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
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
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:decimal-format name="euro"
decimal-separator="," grouping-separator="."/>
<xsl:template match="/DOCUMENT">
<html>
<body>
<h2>Prijzen</h2>
<table>
<tr>
<th>Aantal</th>
<th>Omschrijving</th>
<th>Prijs</th>
<th>Subtotaal</th>
</tr>
<xsl:for-each select="DATA/RESULT/RESERVERING/ARTIKELREGELS/ARTIKELREGEL">
<tr>
<td><xsl:value-of select="AANTAL"/></td>
<td><xsl:value-of select="OMSCHRIJVING"/></td>
<td><xsl:value-of select="KOSTEN"/></td>
</tr>
</xsl:for-each>
<tr>
<td>Totaal:</td>
<td colspan="3"><xsl:value-of select="format-number(sum(DATA/RESULT/RESERVERING/ARTIKELREGELS/ARTIKELREGEL/KOSTEN), '#.###,00', 'euro')"/></td>
</tr>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
<xsl:decimal-format name="euro"
decimal-separator="," grouping-separator="."/>
<xsl:template match="/DOCUMENT">
<html>
<body>
<h2>Prijzen</h2>
<table>
<tr>
<th>Aantal</th>
<th>Omschrijving</th>
<th>Prijs</th>
<th>Subtotaal</th>
</tr>
<xsl:for-each select="DATA/RESULT/RESERVERING/ARTIKELREGELS/ARTIKELREGEL">
<tr>
<td><xsl:value-of select="AANTAL"/></td>
<td><xsl:value-of select="OMSCHRIJVING"/></td>
<td><xsl:value-of select="KOSTEN"/></td>
</tr>
</xsl:for-each>
<tr>
<td>Totaal:</td>
<td colspan="3"><xsl:value-of select="format-number(sum(DATA/RESULT/RESERVERING/ARTIKELREGELS/ARTIKELREGEL/KOSTEN), '#.###,00', 'euro')"/></td>
</tr>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Edit: Nog even een numberformat toegevoegd, dus met een puntje voor de duizendtallen en een komma voor de decimalen.
Gewijzigd op 01/01/1970 01:00:00 door Frank -
pgFrank schreef op 28.03.2008 15:41:
In dat geval kun je met sum() werken, mits je getallen als input ontvangt. En getallen bevatten geen komma's, die zul je eruit moeten werken, dat is namelijk echt fout.
Het bevat dus wel comma's die ik terug krijg van het programma, waardoor waarschijnlijk uw code niet werkt.
Ik zal even ik het programma zien of de prijzen als 00,0 opgeslagen zijn inplaats van 00,00.
Als dat niet zo is kan ik hier niks aan veranderen (of het bedrijf van de applicatie bellen).
Ik zal het even onderzoeken, Vriendelijk dank voor uw snelle reactie's trouwens echt top :).
Code (php)
1
2
3
4
5
2
3
4
5
Prijzen
Aantal Omschrijving Prijs Subtotaal
2 Schoolreisje kind 37
1 Schoolreisje volwassene 18,5
Totaal: NaN
Aantal Omschrijving Prijs Subtotaal
2 Schoolreisje kind 37
1 Schoolreisje volwassene 18,5
Totaal: NaN
Gewijzigd op 01/01/1970 01:00:00 door boee
boee schreef op 28.03.2008 15:47:
Tja, wanneer iemand niet kan programmeren en niet snapt/wil snappen dat decimalen met een punt worden genoteerd, dan zit er niks anders op dan weer terug te gaan naar de schoolbanken. Alle programmeertalen gebruiken de wiskundige notatie, daar zul je het mee moeten doen.Het bevat dus wel comma's die ik terug krijg van het programma, waardoor waarschijnlijk uw code niet werkt.
Ik zal even ik het programma zien of de prijzen als 00,0 opgeslagen zijn inplaats van 00,00.
Ik zal even ik het programma zien of de prijzen als 00,0 opgeslagen zijn inplaats van 00,00.
Dat je de uitkomsten met een komma wilt presenteren, dat is een ander verhaal maar dat verandert niks aan de interne werking van een getal en/of programmeertaal. Het opslaan van data werkt precies zo, met punten voor de decimalen.
pgFrank schreef op 28.03.2008 15:51:
Dat je de uitkomsten met een komma wilt presenteren, dat is een ander verhaal maar dat verandert niks aan de interne werking van een getal en/of programmeertaal. Het opslaan van data werkt precies zo, met punten voor de decimalen.
boee schreef op 28.03.2008 15:47:
Tja, wanneer iemand niet kan programmeren en niet snapt/wil snappen dat decimalen met een punt worden genoteerd, dan zit er niks anders op dan weer terug te gaan naar de schoolbanken. Alle programmeertalen gebruiken de wiskundige notatie, daar zul je het mee moeten doen.Het bevat dus wel comma's die ik terug krijg van het programma, waardoor waarschijnlijk uw code niet werkt.
Ik zal even ik het programma zien of de prijzen als 00,0 opgeslagen zijn inplaats van 00,00.
Ik zal even ik het programma zien of de prijzen als 00,0 opgeslagen zijn inplaats van 00,00.
Dat je de uitkomsten met een komma wilt presenteren, dat is een ander verhaal maar dat verandert niks aan de interne werking van een getal en/of programmeertaal. Het opslaan van data werkt precies zo, met punten voor de decimalen.
Het probleem zit dus in de responses van het programma aangezien alles in het programmas wel goed staat :), du shier zal ik maandag even achteraan.
Bedankt voor al uw hulp.