以下是描述我正在使用的 XML 结构的 DTD:
<!DOCTYPE bib [
<!ELEMENT bib (book+,magazine*)>
<!ELEMENT book (title,author+,publisher,editor?,price)>
<!ELEMENT magazine (title,publisher,editor+)>
<!ELEMENT title (#PCDATA)>
<!ELEMENT author (last,first)>
<!ELEMENT publisher (#PCDATA)>
<!ELEMENT editor (last, first,affiliation)>
<!ELEMENT price ((#PCDATA)>
<!ELEMENT last (#PCDATA)>
<!ELEMENT first (#PCDATA)>
<!ELEMENT affiliation (#PCDATA)>
<!ATTLIST book year CDATA #REQUIRED>
]>
我必须编写一个 XQuery 来返回 Weikum 先生是编辑之一的所有书籍或杂志。
我在确定如何归还书籍或杂志时遇到问题。这是我能想到的:
for $x in document(“bib.xml”)/bib
where $x/book/editor/lastname = “Weikum” or $x/magazine/editor/lastname = “Weikum”
return <result></result>
但这并没有达到我想要的结果。如何退回书籍或杂志元素?我应该说return $x
吗?