Thanks Danny,
I still cannot construct my element query, but for a different reason now. I've
tried to include the full query in my example this time for clarity:
$engQuery := search:parse("pa", <options
xmlns="http://marklogic.com/appservices/search">
<term apply="term">
<empty apply="all-results"/>
<term-option>lang=en</term-option>
</term>
</options>),
$deQuery := search:parse("pa", <options
xmlns="http://marklogic.com/appservices/search">
<term apply="term">
<empty apply="all-results"/>
<term-option>lang=de</term-option>
</term>
</options>),
$query :=
cts:element-query(fn:QName("http://www.tei-c.org/ns/1.0", "div"),
cts:or-query(($engQuery, $deQuery))),
$searchOptions := <options
xmlns="http://marklogic.com/appservices/search">
<debug>{fn:true()}</debug>
<return-query>{fn:true()}</return-query>
<additional-query>{cts:document-query(c:DB_URI())}</additional-query>
</options>
$results := search:resolve($query, $ searchOptions, $start,
$pageLength)
The output is a 500 Internal Server Error. The error message is:
"XDMP-NONMIXEDCOMPLEXCONT: fn:data(<cts:word-query qtextref="cts:text"
xmlns:cts="http://marklogic.com/cts"><cts:text
xml:lang="en">pa</cts:text></cts:word-query>) -- Node has complex type with
non-mixed complex content".
It looks like the fn:data function does not like the cts:word-query returned by
search:parse with the language term-option set to "en"...this confuses me.
Incidentally, the cts:or-query works fine if I do not try to constrain it to
the "div" element with the cts_element-query. Any thoughts are appreciated.
Cheers,
Adam
From: [email protected]
[mailto:[email protected]] On Behalf Of Danny Sokolsky
Sent: April 13, 2010 5:12 PM
To: General Mark Logic Developer Discussion
Subject: [MarkLogic Dev General] RE: Noobie cts:element-query question
Hi Adam,
It is telling you that the XML for your cts:query is not correct.
Note that you were not building a cts:element-query, but were building an XML
representation of a cts:element-query.
You might try constructing this query as a cts:query like this:
xquery version "1.0-ml";
let $engQuery := "dog"
let $deQuery := "cat"
return
cts:element-query(
fn:QName("http://www.tei-c.org/ns/1.0", "div"),
cts:or-query(($engQuery, $deQuery))
)
and if you need the XML representation of a cts:query then wrap the cts:query
in an element and take the contents of that element:
xquery version "1.0-ml";
let $engQuery := "dog"
let $deQuery := "cat"
return
<foo>{cts:element-query(
fn:QName("http://www.tei-c.org/ns/1.0", "div"),
cts:or-query(($engQuery, $deQuery))
)}</foo>/*
-Danny
From: [email protected]
[mailto:[email protected]] On Behalf Of Adam Patterson
Sent: Tuesday, April 13, 2010 2:03 PM
To: [email protected]
Subject: [MarkLogic Dev General] Noobie cts:element-query question
I apologize in advance for this question as I'm sure it's very straightforward,
but it does have me stumped. I am building a cts:element-query as follows:
<cts:element-query>
{
fn:QName("http://www.tei-c.org/ns/1.0", "div"),
<cts:or-query>{$engQuery, $deQuery}</cts:or-query>
}
</cts:element-query>
MarkLogic is telling me that I have the following error:
"XDMP-QUERYTEXT: cts:query(<cts:and-query
xmlns:cts="http://marklogic.com/cts"><cts:element-query
xmlns:tei="http://www.tei-c.org/ns/1.0">tei:d...</cts:and-query>) -- Query
element /cts:and-query/cts:element-query contains misplaced text"
Please let me know (1) What this error means, and (2) What I'm doing wrong to
cause it.
Thank you,
Adam
_______________________________________________
General mailing list
[email protected]
http://xqzone.com/mailman/listinfo/general