Re: [PHP-XML-DEV] DomXPath extension
[email protected] (Christian Stocker) Sat, 24 Jul 2004 10:47:47 +0200
| Newsgroups | php.xml.dev |
|---|---|
| Message-ID | <[email protected]> |
Rob and me were talking about that the other day. I don't think that
anyone is working right now on it, but we at least decided on the API
for it. It should be loosely based on the W3C specs
(http://www.w3.org/TR/2004/NOTE-DOM-Level-3-XPath-20040226/xpath.html#XPathEvaluator
), for example:
$xp = new DomXPath($doc);
$xp->evaluate($xpathExpression[, $contextnode [, $type]]);
This can all go into ext/dom/xpath.c, no need for writing a new
extension. And Jason, you're of course very welcome to extend this. It
shouldn't be that hard, with the already existing code as a template.
And query() will never return a number instead of a nodeset, for
backwards compatibility reasons, we'd rather introduce a new method name
"evaluate" like explained above.
chregu
On 24.7.2004 4:18 Uhr, Jason Barnett wrote:
>>
>> This is the PHP 5 DOMXPath class? It just passes XPath queries to
>> libxml2, so it should support everything you want. What specifically
>> are you missing?
>>
>> -adam
>>
>
> Yes, I mean PHP5 DOMXPath. OK, here's a sample script:
> <?php
>
> $xml = <<<XML
> <music>
> <artist id="1">
> <name>The Rolling Stones</name>
> <albums>
> <title>Exile On Main Street</title>
> </albums>
> </artist>
> <artist id="2">
> <name>Aimee Mann</name>
> <albums>
> <title>I'm With Stupid</title>
> <title>Bachelor No. 2</title>
> </albums>
> </artist>
> </music>
> XML;
>
> $dom = new DomDocument();
> $dom->loadXML($xml);
> $xpath = new DomXpath($dom);
> var_dump($xpath->query("count(//music/artist)"));
>
> ?>
>
> Result of the var_dump (php5.0.0):
> object(DOMNodeList)#3 (0) { }
>
> I expected to get a number (2), but Chrisitan told me before that right
> now query will only return DOMNodeList's. A workaround is to query for
> the nodes (//music/artist) and then use PHP's count() function, but I
> was wondering when query will actually return a number instead of a
> nodelist.
>
--
christian stocker | Bitflux GmbH | schoeneggstrasse 5 | ch-8004 zurich
phone +41 1 240 56 70 | mobile +41 76 561 88 60 | fax +41 1 240 56 71
http://www.bitflux.ch | [email protected] | gnupg-keyid 0x5CE1DECB