我正在嘗試學習XPath,並且在做嵌套搜索時遇到了麻煩(使用contains)。xpath:包含()一組答案
具體來說,我得到了以下問題:
有作者的列表,以及一個書單,根據下面的DTD:
<!ELEMENT db1 (book*, author*)>
<!ELEMENT book (title)>
<!ATTLIST book
bid ID #REQUIRED
authors IDREFS #REQUIRED
>
<!ELEMENT title (#PCDATA)>
<!ELEMENT author (#PCDATA)>
<!ATTLIST author
aid ID #REQUIRED
>
編寫返回XPath表達式寫書的作者數量。有可能假設沒有兩個作者ID相互包含。
我嘗試了很多事情,但我總是收到「包含的項目太多」的錯誤。 我嘗試運行是這樣的:
//author/@aid[contains(//book/@authors/string(.), string(.))]
我使用下面的XML文件爲例:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE db1 SYSTEM "C:\blabla\db1.dtd">
<db1>
<book authors="a1 a3 a4" bid="b1">
<title>Book 1</title>
</book>
<book authors="a1 a2 a3" bid="b2">
<title>Book 2</title>
</book>
<book authors="a4" bid="b3">
<title>Book 3</title>
</book>
<author aid="a1"></author>
<author aid="a91"></author>
<author aid="a2"></author>
<author aid="a88"></author>
<author aid="a3"></author>
<author aid="a4"></author>
<author aid="a5"></author>
<author aid="a6"></author>
</db1>
預期的答案應該是
a1 a2 a3 a4
有什麼建議?
謝謝。
您能否提供您正在運行的XML文檔和代碼來測試XPath表達式? – 2010-01-27 19:38:59
@AJ,我添加了我正在使用的示例。希望它有幫助.... – Anna 2010-01-27 20:07:10
解釋預期的答案?你想從bid = 1返回@authors嗎?或者您是否想要返回具有相應書籍的作者的唯一列表? – 2010-01-28 07:37:34