我试图编写一个查询,该查询根据特定字符串是否存在于同一个父节点中来返回节点。XQuery/XPath:尝试根据不同节点的值返回节点
我的XML的一个例子,它有一个根元素“书”,让你知道它的样子。
编辑:添加了一个较大的数据。因为它们不相关,所以省略了一些“bok”的子元素。 这是挪威的,所以如果你想知道:
fagbøker=教科书
书=书
tittel =标题
forfatter =作者
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>
该查询应该查找尚未在“数据库”字段中发布图书的发布者。我的其他几本书不是关于数据库的,还有那些没有发表过任何内容的出版商。
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>
这会返回我拥有的每个发布者。上述XML中的发布者是我不想要的结果中唯一的发布者。上述XML中的发布者已经发布了其他几本书,但只有一本关于数据库,因此它不应该出现在结果中。
任何人都知道如何解决这个问题?
谢谢。不过,这个查询返回与我的完全相同的XML。开始认为我的XML有什么问题,只是看不到它会是什么。 – Sebastian
您需要共享一组更大的测试数据。这是不可能的,否则 – wst
好吧。添加更多主要职位。 – Sebastian