BaseX XQUERY 选择具有特定属性值的节点
BaseX XQUERY selecting nodes with the value of a specific attribute
XML样本:
<mondial>
<continent id="f0_119" name="Europe"/>
<continent id="f0_123" name="Asia"/>
<continent id="f0_126" name="America"/>
<continent id="f0_129" name="Australia/Oceania"/>
<continent id="f0_132" name="Africa"/>
<country id="f0_136" name="Albania" capital="f0_1461" population="3249136"
datacode="AL" total_area="28750" population_growth="1.34"
infant_mortality="49.2" gdp_agri="55" gdp_total="4100"
inflation="16" indep_date="28 11 1912"
government="emerging democracy" car_code="AL">
<name>Albania</name>
<city id="f0_1461" country="f0_136" longitude="10.7" latitude="46.2">
<name>Tirane</name>
<population year="87">192000</population>
</city>
<city id="f0_36498" country="f0_136" longitude="19.2" latitude="42.2">
<name>Shkoder</name>
<population year="87">62000</population>
<located_at type="lake" water="f0_39058"/>
</city>
</country>
</mondial>
for $x in //mondial/country/population
where $x/@year=87
return $x/name
我基本上是在尝试从具有 year=87
属性的节点 <population>
return <name>
。我知道这听起来很令人困惑,我什至找不到这方面的文档我已经尝试使用谷歌搜索如何 select 使用该属性,但我似乎无法 return 任何东西。
请尝试以下 XQuery。
XQuery
for $x in //mondial/country/city
where $x/population/@year=87
return $x/name
请注意,XML 文档中的 population
元素是 city
元素的子元素。接下来,您尝试遍历 population
元素,最好将此路径步骤移动到 where
子句中。返回城市名称的一种解决方案如下:
for $city in /mondial/country/city
where $city/population/@year = 87
return $city/name
您可以使用一个 XPath 获取所需的信息
//city[population/@year=87]/name
XML样本:
<mondial>
<continent id="f0_119" name="Europe"/>
<continent id="f0_123" name="Asia"/>
<continent id="f0_126" name="America"/>
<continent id="f0_129" name="Australia/Oceania"/>
<continent id="f0_132" name="Africa"/>
<country id="f0_136" name="Albania" capital="f0_1461" population="3249136"
datacode="AL" total_area="28750" population_growth="1.34"
infant_mortality="49.2" gdp_agri="55" gdp_total="4100"
inflation="16" indep_date="28 11 1912"
government="emerging democracy" car_code="AL">
<name>Albania</name>
<city id="f0_1461" country="f0_136" longitude="10.7" latitude="46.2">
<name>Tirane</name>
<population year="87">192000</population>
</city>
<city id="f0_36498" country="f0_136" longitude="19.2" latitude="42.2">
<name>Shkoder</name>
<population year="87">62000</population>
<located_at type="lake" water="f0_39058"/>
</city>
</country>
</mondial>
for $x in //mondial/country/population
where $x/@year=87
return $x/name
我基本上是在尝试从具有 year=87
属性的节点 <population>
return <name>
。我知道这听起来很令人困惑,我什至找不到这方面的文档我已经尝试使用谷歌搜索如何 select 使用该属性,但我似乎无法 return 任何东西。
请尝试以下 XQuery。
XQuery
for $x in //mondial/country/city
where $x/population/@year=87
return $x/name
请注意,XML 文档中的 population
元素是 city
元素的子元素。接下来,您尝试遍历 population
元素,最好将此路径步骤移动到 where
子句中。返回城市名称的一种解决方案如下:
for $city in /mondial/country/city
where $city/population/@year = 87
return $city/name
您可以使用一个 XPath 获取所需的信息
//city[population/@year=87]/name