Hi Mary,

In your queries, the where clause
    where /samhsa-doc//article-title[@id="AVD210_art1"]
means (roughly):
    where some document in the collection has
    an <article-title> with id="AVD210_art1"

Apparently, there *is* such a document in your collection,
so the where-condition is always true, *regardless* of what's
been bound to $mlid in the 'for' clause. That is, your second query is effectively equivalent to:
    for $mlid in /samhsa-doc
    where true()
    return $mlid//system-pub-id
or just:
    for $mlid in /samhsa-doc
    return $mlid//system-pub-id
which is why you're getting a result item for each document in the database.

Instead, you want to make the 'where' condition examine the document that's currently in hand, i.e. the one bound to $mlid in the 'for' clause. In your second query, in the where clause, just change "/samhsa-doc" to "$mlid", and I think it'll work:

    for $mlid in /samhsa-doc
    where $mlid//article-title[@id='AVD210_art1']
    return $mlid//system-pub-id

(Incidentally, since this is a fairly simple use of for-where-return, you could replace it with just a path expression, e.g.
    /samhsa-doc[.//article-title[@id='AVD210_art1']]//system-pub-id
would work, I think.)

-Michael
_______________________________________________
[email protected]
http://x-query.com/mailman/listinfo/talk

Reply via email to