I'm trying to write a query which returns a node based on whether a specific string exists in the same parent-node.
An example of my XML, which has a root-element "books", to give you an idea of how it looks like.
Edit: Added a larger piece of the data. Omitted some child-elements of "bok" since they aren't relevant. This is in Norwegian, so in case you're wondering:
fagbøker = textbooks
bok = book
tittel = title
forfatter = author
fornavn, mellomnavn, etternavn = forename, middlename, lastname
forlag = publisher
<?xml version="1.0" encoding="UTF-8"?>
<?xml-model href="Fagb%C3%B8ker.rng" type="application/xml" schematypens="http://relaxng.org/ns/structure/1.0"?>
<fagbøker>
<bok isbn="9780321197849">
<tittel>An Introduction to Database Systems</tittel>
<forfatter>
<fornavn>Christopher</fornavn>
<mellomnavn>J.</mellomnavn>
<etternavn>Date</etternavn>
</forfatter>
<fagfelt>
<felt>Databaser</felt>
</fagfelt>
<forlag>Pearson</forlag>
</bok>
<bok isbn="9780321392794">
<tittel>Data Structures in Java: From Abstract Data Types to the Java Collections
Framework</tittel>
<forfatter>
<fornavn>Simon</fornavn>
<etternavn>Gray</etternavn>
</forfatter>
<fagfelt>
<felt>Programmering</felt>
</fagfelt>
<forlag>Pearson</forlag>
</bok>
<bok isbn="0321165810">
<tittel>XQuery: The XML Query Language</tittel>
<forfatter>
<fornavn>Brundage</fornavn>
<etternavn>Michael</etternavn>
</forfatter>
<fagfelt>
<felt>XML</felt>
</fagfelt>
<forlag>Addison-Wesley Professional</forlag>
</bok>
<bok isbn="0201730472">
<tittel>Discrete Mathematics for Computing</tittel>
<forfatter>
<fornavn>Rod</fornavn>
<etternavn>Haggarty</etternavn>
</forfatter>
<fagfelt>
<felt>Matematikk</felt>
</fagfelt>
<forlag>Addison-Wesley Professional</forlag>
</bok>
<bok isbn="0321417461">
<tittel>Prolog Programming for Artificial Intelligence</tittel>
<forfatter>
<fornavn>Ivan</fornavn>
<etternavn>Bratko</etternavn>
</forfatter>
<fagfelt>
<felt>Kunstig intelligens</felt>
</fagfelt>
<forlag>Pearson Education Canada</forlag>
</bok>
<bok isbn="3540126899">
<tittel>A Programming Logic</tittel>
<forfatter>
<fornavn>Robert</fornavn>
<mellomnavn>L.</mellomnavn>
<etternavn>Constable</etternavn>
</forfatter>
<fagfelt>
<felt>Programmering</felt>
</fagfelt>
<forlag>Springer-Verlag London LTD</forlag>
</bok>
</fagbøker>
The query is supposed to find publishers who haven't published a book in the field "database". I have several other books in my XML which are not about databases, as well publishers who haven't published anything in the field.
for $publisher in distinct-values(
let $doc := doc('../Fagboker.xml')
where every $field in $doc
satisfies $field//fieldname != 'Database'
return
$doc//publisher)
return
<publisher>{$publisher}</publisher>
This returns every publisher I have. The publisher in the XML above is the only publisher I do not want in the result. The publisher in the above XML has published several other books, but only one about databases, and thus it is not supposed to come up in the result.
Anyone got an idea of how I could solve this?