Hi Christian --
I can't give you a real example because it's the client's health care data, and I would be fed to the rippy fish if I posted any of it.
I've created an example with trivial data, zipped that up, and attached it. (Create a database from example.xml, and run threePartMatchesEG.xq against that DB.)
(I think) the difficult part is:
let $found := //*[@name eq $match(1)][./descendant::*[@name eq $match(2)][./descendant::*[@name eq $match(3)]]]
This works, but it's going over the entire database for every three part class-operation-specifier compound name. I can't shake the feeling that there's a more efficient way to do this, but I can't see what it might be.
Thanks! Graydon
On Fri, Apr 1, 2016 at 12:04 PM, Christian Grün christian.gruen@gmail.com wrote:
Hi Graydon,
Do you think there’d be a chance for us to get a minimized, self-contained example, which demonstrates the n^2 solution?
Thanks in advance, Christian
On Fri, Apr 1, 2016 at 5:24 PM, Graydon Saunders graydonish@gmail.com wrote:
Hello -
I've got a problem I'm not sure how to best approach.
I've got triplets of names -- class.operation.specifier -- that I need to match against much longer sequences of names. (Which are in attributes
in an
XML hierarchy; each sequence of names derives from a path to a leaf element.)
If there is a match (as there usually is not) one of the names in the sequence of names will match to the class, a subsequent name to the operation, and a name subsequent to that match to the specifier. (All simple string values.)
The naive n^2 version is much too slow for the amount of data involved.
Is there an efficient way to do this kind of matching?
Thanks! Graydon