Just my guess ;) Thanks, Bridger. Here are some general comparisons with their correct results:
() = () : false () != () : false (1,2) = (2,3) : true (1,2) != (2,3) : true (1) > (10,20,30,40,0) : true (5) < (1,2,3,4) : false
On Tue, Mar 26, 2019 at 1:58 PM Bridger Dyson-Smith bdysonsmith@gmail.com wrote:
Chris - thanks for sharing your solution (IMO it will help future searchers/readers of the list, or others with similar problems searching the list archive)!
Note that the `!=` is an existential quantifier in XPath; i.e. it returns `true` if *any* value on the left is not equal to *any* value of the right*. So you might have had an expression problem earlier.
Cheers, Bridger
- -- I totally and completely cribbed that note from Mr. Liam Quin, who is often giving away advice like that on the xml freenode IRC channel. Credit to him :).
On Tue, Mar 26, 2019 at 8:48 AM Christopher Yocum cyocum@gmail.com wrote:
Hi Bridger,
The solution was indeed using is-value-in-sequence:
import module namespace functx = 'http://www.functx.com'; let $biblFull := distinct-values(collection('edil/Prologue Merged 2013.xml')//biblFull/@id) let $biblStruct := distinct-values(collection('edil/Prologue Merged 2013.xml')//biblStruct/@id) let $bibl := distinct-values(collection('edil/Prologue Merged 2013.xml')//bibl/@id) for $title in collection('edil/eDIL-A.xml')//entry//title where not(functx:is-value-in-sequence($title/@target, $biblFull)) and not(functx:is-value-in-sequence($title/@target, $biblStruct)) and not(functx:is-value-in-sequence($title/@target, $bibl)) return $title
It is also pretty speedy as well.
All the best, Chris
On Tue, Mar 26, 2019 at 12:47 PM Bridger Dyson-Smith bdysonsmith@gmail.com wrote:
Chris,
please don't leave us hanging :). What was your solution?
Best, Bridger
On Tue, Mar 26, 2019 at 8:40 AM Christopher Yocum cyocum@gmail.com wrote:
Hi,
Of course the instant you say that, you fix it. Thanks for everyone's support.
All the best, Chris
On Tue, Mar 26, 2019 at 12:35 PM Christopher Yocum cyocum@gmail.com wrote:
Hi Everyone,
I just tried using functx:is-value-in-sequence: where not(functx:is-value-in-sequence($title/@id, $biblFull)). I am still getting erroneous results. At this point, I very near offering money for someone to help me fix this. It looks like a bug though to me. I should not be getting the results that I am.
All the best, Chris
On Tue, Mar 26, 2019 at 12:13 PM Christopher Yocum cyocum@gmail.com wrote:
Hi,
> If you are allowed to share some snippets of the actual documents, it > will be easier to see how the query needs to be phrased. >
Sadly, probably not. I can probably do something off list but even then I would hesitate.
I tried your proposal from your other email and I am getting the same results as with all other attempts. I feel like this should be very straightforward and I am just missing something small.
> Have you verified that $biblFull and $biblStruct actually contain > strings? If not, do you need to declare a default namespace? The > vocabulary looks like TEI, so > > declare default element namespace "http://www.tei-c.org/ns/1.0"; >
It is TEI-like. It is not exactly TEI and I very much doubt it would validate.
> may be necessary. And if it is TEI, the ID attributes are probably > called @xml:id rather than @id. >
No, the XML documents are explicit about the @id as I checked.
Thank you for your help.
All the best, Chris