[PHP] Re: XPath avg(), min(), max() functions not found

2006-06-09 Thread Alex
Rob Richards wrote:
 min(), max() and avg() don't exist in XPath 1.0 which is the version
 implemented in libxml2. You need to calculate these yourself. For example:

Thanks for your help.

Alex

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[PHP] Re: XPath avg(), min(), max() functions not found

2006-06-08 Thread Rob Richards

Hi Alex,

Alex wrote:

Hi all. I'm trying to use XPath avg(), min() and max() functions
without success. Others functions like count() or sum() works correctly.

Here is the code I'm using (PHP 5.1):

?php

$xml_str = '
stats
  cards
card name=My card
  type name=visits25/type
  type name=clicks7/type
/card
card name=My other card
  type name=visits50/type
  type name=clicks3/type
/card
  /cards
/stats
';

$xml_doc = new DOMDocument();
$xml_doc-loadXML($xml_str);

$xpath = new DOMXPath($xml_doc);

$cards_avg = $xpath-evaluate(avg(//card/[EMAIL PROTECTED]'visits']));
var_dump($cards_avg);

$cards_sum = $xpath-evaluate(sum(//card/[EMAIL PROTECTED]'visits']));
var_dump($cards_sum);

?


min(), max() and avg() don't exist in XPath 1.0 which is the version 
implemented in libxml2. You need to calculate these yourself. For example:


/* Find the average */
$cards_avg = $xpath-evaluate(sum(//card/[EMAIL PROTECTED]'visits']) div 
count(//card/[EMAIL PROTECTED]'visits']));

var_dump($cards_avg);

$cards_sum = $xpath-evaluate(sum(//card/[EMAIL PROTECTED]'visits']));
var_dump($cards_sum);

/* Find lowest visits */
$cards_min_nodes = $xpath-query(//card/[EMAIL PROTECTED]'visits']/text());
$min = NULL;
foreach ($cards_min_nodes AS $node) {
$val = (int)$node-nodeValue;
if (is_null($min) || $min  $val) {
$min = $val;
}
}
print 'Minimum Visits: '.$min.\n;

/* Find maximum visits */
$cards_max_nodes = $xpath-query(//card/[EMAIL PROTECTED]'visits']/text());
$max = NULL;
foreach ($cards_max_nodes AS $node) {
$val = (int)$node-nodeValue;
if (is_null($min) || $max  $val) {
$max = $val;
}
}
print 'Maximum Visits: '.$max.\n;

Rob

--
[EMAIL PROTECTED]
author of Pro PHP XML and Web Services from Apress

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php