> 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). > 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/ > > 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 > > > > >