【发布时间】:2016-11-07 17:23:31
【问题描述】:
我正在尝试编写一个查询,该查询根据同一父节点中是否存在特定字符串返回一个节点。
我的 XML 示例,它有一个根元素“books”,让您了解它的外观。
编辑:添加了更大的数据。省略了“bok”的一些子元素,因为它们不相关。 这是挪威语,如果您想知道的话:
fagbøker = 教科书
bok = 书
title = 标题
forfatter = 作者
fornavn, mellomnavn, etternavn = 名字、中间名、姓氏
forlag = 发布者
<?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>
该查询应该在“数据库”字段中查找尚未出版书籍的出版商。我的 XML 中还有其他几本与数据库无关的书籍,以及尚未在该领域发表任何内容的出版商。
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 中的出版商已经出版了其他几本书,但只有一本关于数据库,因此它不应该出现在结果中。
有人知道我该如何解决这个问题吗?
【问题讨论】: