Version française
Home     About     Download     Resources     Contact us    

This site is updated infrequently. For up-to-date information, please visit the new OCaml website at

Browse thread
xpath or alternatives
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: 2009-09-28 (15:06)
From: Till Varoquaux <till@p...>
Subject: Re: [Caml-list] xpath or alternatives
There are a few projects out here:



and of course the good old cduce/xduce/ocamlduce. All in all naive
querying is not hard and tree automata:


can provide a good middle ground between efficiency and simplicity.
The problem you might run into is that XML is a tricky format to deal
with and some of these tools will choke up on complex files
(namespaces,switching character encoding, weird entities in the DTD


P.S.: Alain has a good paper on how to compile queries (as done in
cduce). I am just too lazy to look for it.

On Mon, Sep 28, 2009 at 8:48 AM, Yaron Minsky <> wrote:
> I don't have the code in front of me, but I've done something like this
> using the list monad. i.e., using bind (= concat-map) and map chained
> together, along with a couple operators I wrote for lifting bits of XML
> documents into lists, by say returning the subnodes of the present node as a
> list.
> It was quite effective.  I got the inspiration from a similar tool we have
> for navigating s-expressions, which we should release at some point...
> Yaron Minsky
> On Sep 28, 2009, at 8:17 AM, Richard Jones <> wrote:
>> I need to do some relatively simple extraction of fields from an XML
>> document.  In Perl I would use xpath, very specifically if $xml was an
>> XML document[1] stored as a string, then:
>>   my $p = XML::XPath->new (xml => $xml);
>>   my @disks = $p->findnodes ('//devices/disk/source/@dev');
>>   push (@disks, $p->findnodes ('//devices/disk/source/@file'));
>> This isn't type safe or pretty, but it is very easy to use for quick
>> and dirty extraction.
>> What is the OCaml equivalent for this sort of code?
>> Alain Frisch has a library called Xpath
>> (, but unfortunately this
>> relies on the now obsolete wlex program.
>> Is there a completely alternative way to do this?  Better still, in 3
>> lines of code??
>> Rich.
>> [1] for XML doc, see:
>> --
>> Richard Jones
>> Red Hat
>> _______________________________________________
>> Caml-list mailing list. Subscription management:
>> Archives:
>> Beginner's list:
>> Bug reports:
> _______________________________________________
> Caml-list mailing list. Subscription management:
> Archives:
> Beginner's list:
> Bug reports: