Le 3/9/16 à 08:41, monty a écrit :
Sent: Saturday, September 03, 2016 at 2:02 AM
From: stepharo <steph...@free.fr>
To: "Any question about pharo is welcome" <pharo-users@lists.pharo.org>
Subject: Re: [Pharo-users] Coding XPath as Smalltalk
Hi monty
In which repository this maintained version is?
PharoExtras/XPath (you gave me the write access).
Excellent.
I like the idea that we all share an improve common identifiable places.
PharoExtras?
Is it the entry in the catalog?
It has a catalog entry at http://catalog.pharo.org and a CI job at
https://ci.inria.fr/pharo-contribution/job/XPath/
super cool!
I'm happy
Stef
Le 3/9/16 à 07:54, monty a écrit :
Peter, you're using an ancient version with bugs that were fixed last fall. The newest
version has more tests and correct behavior (checked against a reference implementation).
Just download a new Moose image and you'll get it, along with an up to date XMLParser.
(But if you insist on upgrading in your old image, run "XPath initialize" after)
The binary syntax (there are keyword equivalents now) officially only supports
XPath axis selectors like #/ and #// that take node test arguments where the
node tests can be name tests like 'name,' '*', 'prefix:*' or type tests like
'text()', 'comment()', 'element(name)'.
Filters aren't officially supported with that syntax, but you can always use
select: on the result. ?? was removed, but I might add it back as shorthand.
Filters are implemented differently now.
From: PBKResearch <pe...@pbkresearch.co.uk>
To: pharo-users@lists.pharo.org
Subject: [Pharo-users] Coding XPath as Smalltalk
Hello
I am using XPath as a way of dissecting web pages, especially from Wiktionary. Generally I get good results, but I could get useful extra flexibility by using the binary Smalltalk operators to represent XPath, as mentioned at the end of the class comment for XPath. However, the description there is very terse, and I am having difficulty seeing how to include more complex expressions, especially attribute tests. I have put some of my XPath expressions through the XPath compiler and looked at the output, and out of that I have found expressions which work but look very clumsy. As an example, I have used the fragment:
document xPath: '//div[@id=''catlinks'']//li//text()'
and found that an equivalent is:
document //'div' ?? [:node :x :y|(node attributeAt: 'id') = 'catlinks']//'li'//[:n| n isStringNode]].
(I had to put two dummy arguments in the three-argument block to get it to
work.)
Is there a more extensive explanation of the use of these binary operators? If not, could some kind person show me the most concise translation of the sample XPath above, to give me a start in working out more complex cases?
Many thanks for any help.
Peter Kenny