我正在尝试学习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