我有一些xml文档。文件的结构如下: -
<?xml version="1.0" encoding="UTF-8"?>
<patent-assignment>
<assignment-record>
<correspondent>
<name>NORTH AMERICA INTERNATIONAL PATENT OFFIC</name>
<address-1>P.O. BOX 506</address-1>
<address-2>MERRIFIELD, VA 22116</address-2>
</correspondent>
</assignment-record>
<patent-assignors>
<patent-assignor>
<assignor-name>TSAI, YU-WEN</name>
<execution-date>
<date>20050331</date>
</execution-date>
</patent-assignor>
<patent-assignor>
<assignor-name>HUANG, CHENG-I</name>
<execution-date>
<date>20050331</date>
</execution-date>
</patent-assignor>
</patent-assignors>
<patent-assignees>
<patent-assignee>
<assignee-name>FARADAY TECHNOLOGY CORP.</name>
<address-1>NO.10-2, LI-HSIN ROAD 1, SCIENCE-BASED INDUSTRIAL PARK</address-1>
<city>HSIN-CHU CITY</city>
<country-name>TAIWAN</country-name>
</patent-assignee>
</patent-assignees>
</patent-assignment>
我在assignor-name
和assignee-name
上创建了字段。现在我正在运行cts:search
查询,如下所示: -
let $query:=cts:and-query((
cts:element-query(xs:QName("assignor-name"),
cts:field-word-query("Assignor Name", "apple")),
cts:element-query(xs:QName("assignee-name"),
cts:field-word-query("Assignee Name", "salix"))
))
for $x in cts:search(fn:doc(), $query)
return $x
其中,“转让人姓名”和“受让人姓名”是我创建的字段的名称。这些字段分别以assignor-name
和assignee-name
作为其本地名称。但是当我运行这个查询时,它给了我空序列。我还检查了我的xml文档和文档中有assignor-name
是“apple”且assignee-name
是“salix”的数据,但我还没有得到结果。当我仅针对转让人姓名或受让人姓名运行此查询时,我得到结果但是当我将它们组合成and-query
时,我没有得到任何结果。请帮忙。
答案 0 :(得分:2)
除了Dave指出的命名空间问题之外,element-query
和field-query
的组合是不寻常的,并且可能不会产生令人满意的结果。
对于此查询,您可以同时放弃元素上的简单cts:element-word-query
。
答案 1 :(得分:1)
是的,您可以通过以下方式使用cts:element-word-query
功能:
cts:and-query((cts:element-word-query(xs:QName("pa:assignor-name"),
"apple",
"case-insensitive"
),
cts:element-word-query(xs:QName("pa:assignee-name"),
"salix",
"case-insensitive")
))