【发布时间】:2021-01-19 04:40:35
【问题描述】:
在使用 XPath 或 XQuery 时,有没有办法限制结果的深度?
我正在使用 BaseX,它支持 XQuery 3.1 和 XSLT 2.0。
例如,给定这个输入文档:
<country name="United States">
<state name="California">
<county name="Alameda" >
<city name="Alameda" />
<city name="Oakland" />
<city name="Piedmont" />
</county>
<county name="Los Angeles">
<city name="Los Angeles" />
<city name="Malibu" />
<city name="Burbank" />
</county>
<county name="Marin">
<city name="Fairfax" />
<city name="Larkspur" />
<city name="Ross" />
</county>
<county name="Sacramento">
<city name="Folsom" />
<city name="Elk Grove" />
<city name="Sacramento" />
</county>
</state>
</country>
如果我执行这个查询:/country/state,我会得到以下结果:
<state name="California">
<county name="Alameda">
<city name="Alameda"/>
<city name="Oakland"/>
<city name="Piedmont"/>
</county>
<county name="Los Angeles">
<city name="Los Angeles"/>
<city name="Malibu"/>
<city name="Burbank"/>
</county>
<county name="Marin">
<city name="Fairfax"/>
<city name="Larkspur"/>
<city name="Ross"/>
</county>
<county name="Sacramento">
<city name="Folsom"/>
<city name="Elk Grove"/>
<city name="Sacramento"/>
</county>
</state>
我想限制结果的深度。理想情况下,我有办法指定深度,而不是硬编码 XPath 查询。
例如,我想将结果限制为结果节点及其子节点,但不包括孙子节点,因此结果将是:
<state name="California">
<county name="Alameda" />
<county name="Los Angeles" />
<county name="Marin" />
<county name="Sacramento" />
</state>
【问题讨论】: