The implementation assumed that most of the users have xml with a
fixed schema. . In that case giving absolute path is not hard. This
helps us deal with a large subset of usecases rather easily.

We have not added all the features which are possible with a
streaming parser. It is wiser to piggyback on some real XPath engine
for because the demand for full xpath support will always be there.
--Noble

On Wed, Feb 4, 2009 at 5:15 PM, Fergus McMenemie <fer...@twig.me.uk> wrote:
>>: > The solr data field is populated properly. So I guess that bit works.
>>: > I really wish I could use xpath="//para"
>>
>>: The limitation comes from streaming the XML instead of creating a DOM.
>>: XPathRecordReader is a custom streaming XPath parser implementation and
>>: streaming is easy only because we limit the syntax. You can use
>>: PlainTextEntityProcessor which gives the XML as a string to a  custom
>>: Transformer. This Transformer can create a DOM, run your XPath query and
>>: populate the fields. It's more expensive but it is an option.
>>
>>Maybe it's just me, but it seems like i'm noticing that as DIH gets used
>>more, many people are noting that the XPath processing in DIH doesn't work
>>the way they expect because it's a custom XPath parser/engine designed for
>>streaming.
>>
>>It seems like it would be helpful to have an alternate processor for
>>people who don't need the streaming support (ie: are dealing with small
>>enough docs that they can load the full DOM tree into memory) that would
>>use the default Java XPath engine (and have less caveats/suprises) ... i
>>wou think it would probably even make sense for this new XPath processor
>>to be the one we suggest for new users, and only suggest the existing
>>(stream based) processor if they have really big xml docs to deal with.
>>
>>(In hindsight XPathEntityProcessor and XPathRecordReader should probably
>>have been named StreamingXPathEntityProcessor and
>>StreamingXPathRecordReader)
>>
> Four thoughts!
>
> 1) My use case involves a few million XML documents ranging in size
>   from a few K to 500K. 95% of the documents are under 25KBytes,
>   5 of the documents are around 0.5Mbytes. So.. sod it, I think I
>   need a streaming parser.
>
> 2) "streaming XPath parser"? I only half understand all this stuff,
>   but, and this is based on the little bit of SAX stuff I have written,
>   I would have thought that //para was trivial for any kind of
>   streaming XML parser.
>
> 3) Much of the confusion may be arising because the DIH wiki page is
>   not to clear on what is and is not allowed. We need better,
>   more explicit examples. What seems to be allowed is:-
>    <field column="streetname" xpath="/record/address/@c" />
>    <field column="title"      xpath="/record/title" />
>    <field column="date"       xpath="/record/da...@qualifier='pubDate']" />
>   I will add these to the wiki. Just to be sure, I tested
>   xpath="//para". It does not work!
>
> 4) XML documents are ether well structured with good separation of
>   data and presentation in which case absolute xpaths work fine.
>   Or older, in my case text documents, which have been forced into
>   XML format with poor structure where the data and presentation
>   is all mixed up. I suspect that the addition of //para would
>   cover many of the use cases, and what was left could be covered
>   by a preceding XSLT transform.
> --
>
> ===============================================================
> Fergus McMenemie               Email:fer...@twig.me.uk
> Techmore Ltd                   Phone:(UK) 07721 376021
>
> Unix/Mac/Intranets             Analyst Programmer
> ===============================================================
>



-- 
--Noble Paul

Reply via email to