Hi,

*Current xml structure:*

<book author="Author" length="262" id="unique-id" chapCnt="4">

   <chapter pageStart="5" name="chap1" pageEnd="80" />

   <chapter pageStart="83" name="chap2" pageEnd="180" />

</book>


*XQuery used:*

for $a in cts:search(collection(),
cts:and-query((cts:element-attribute-range-query(xs:QName("book"),
xs:QName("length"), ">=", 26),
cts:element-attribute-range-query(xs:QName("book"), xs:QName("length"),
"<=", 2620), cts:element-attribute-value-query(xs:QName("chapter"),
xs:QName("name"), ('chap1','chap2','chap3','chap4')))), ("score-simple"))

*Proposed structure:*

<book author="Author" length="262" id="unique-id" chapCnt="4">

<search>

   <chapter pageStart="5" name="chap1" pageEnd="80" />

   <chapter pageStart="83" name="chap2" pageEnd="180" />

</search>

<retrieve>

<chapter pageStart="5" name="chap1" pageEnd="80" />

   <chapter pageStart="83" name="chap2" pageEnd="180" />

   <chapter pageStart="182" name="chap3" pageEnd="401" />

</retrieve>

</book>
Our requirement is to find out all the matching chapter names inside the
search tag name alone. There can be same chapter names available inside
retrieve tag as well. But that should not be retrieved. I tried replacing
the QName "chapter" by "search". But this is not valid as we do not have
"name" QName within it. The current xquery if used on the proposed xml, it
is retrieving those xmls whcih matches the chapternames inside the retrieve
tag.
I also tried providing multiple QName elements for the first argument -
cts:element-attribute-value-query((xs:QName("search"), xs:QName("chapter")).
This as giving back the results as the previous query. It was just
performing a OR etween search and chapter qnames.
Request your help.

Thanks,
Radhika.
_______________________________________________
General mailing list
[email protected]
http://developer.marklogic.com/mailman/listinfo/general

Reply via email to