使用版本:4.5.0
db/system/config/db/test/collection.xconf 代码如下:
<range>
<create qname="item">
<condition attribute="name" value="number"/>
<field name="number" match="@value" type="xs:decimal"/>
</create>
<create qname="item">
<condition attribute="name" value="acreage"/>
<field name="acreage" match="@value" type="xs:decimal"/>
</create>
<create qname="item">
<condition attribute="name" value="radii"/>
<field name="radii" match="@value" type="xs:decimal"/>
</create>
<create qname="item">
<condition attribute="name" value="diameter"/>
<field name="diameter" match="@value" type="xs:decimal"/>
</create>
</range>
浏览索引
db/test XML 文件的代码如下:
<root>
<item name="number" value="4"/>
<item name="acreage" value="5"/>
<item name="radii" value="6"/>
<item name="diameter" value="7"/> </root>
查询语句:
//item[@name='radii'][@value>5.0]
查询分析
无结果
理论上可以找到XML文件,但找不到结果是为了什么?你可以帮我吗?谢谢!
根据您在此处尝试使用的 eXist 条件组合索引功能的文档,在我看来,此功能仅支持字符串比较(具有可选的"数字"模式)。请参阅 https://exist-db.org/exist/apps/doc/newrangeindex#D3.21.18。换句话说,您的@type="xs:decimal"
不会导致属性的值被转换为xs:decimal
;实际上,相反,它们被索引为 xs:string
.
因此,要使查询使用给定数据,请将谓词更改为 [@value gt "5"]
。
或者,若要强制进行数值比较,请将numeric="yes"
添加到索引定义中的 <field>
元素,然后将谓词更改为 [@value gt "5.0"]
。