我继承了去年从 ML7 移植到 ML9 的代码,并且搜索页面的构面窗格没有像在旧系统中那样显示构面清除控件。构建控件的 XQuery 逻辑取决于search:parse()
包含@qtextpre
属性的结果。在旧系统中,解析后的查询是:
<cts:element-range-query qtextpre="Status:" qtextref="cts:annotation" operator="=" xmlns:cts="http://marklogic.com/cts" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<cts:element xmlns:_1="http://www.marklogic.com/ps/ns/qanda/">_1:Status</cts:element>
<cts:annotation qtextref="following-sibling::cts:value"></cts:annotation>
<cts:value xsi:type="xs:string" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">Review</cts:value>
<cts:option>collation=http://marklogic.com/collation/codepoint</cts:option>
</cts:element-range-query>
但在新系统中,具有相同选项的相同查询文本解析为:
<cts:element-range-query operator="=" xmlns:cts="http://marklogic.com/cts">
<cts:element xmlns:_1="http://www.marklogic.com/ps/ns/qanda/">_1:Status</cts:element>
<cts:value xsi:type="xs:string" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">Review</cts:value>
<cts:option>collation=http://marklogic.com/collation/codepoint</cts:option>
</cts:element-range-query>
我不清楚该属性的用途,但此应用程序代码依赖于@qtextpre
在查询中查找该属性来决定是否在构面窗格中显示构面清除控件。谁能解释为什么它在 ML9 版本的解析查询中不存在?