XML XQuery多个子元素

时间:2017-04-27 07:06:35

标签: xml xquery

我需要找到一种方法来查看父元素是否具有使用XQuery的多个子元素

let $d:=doc("/Users/stefan.kenyon/company.xml")
for $e in $d/companyDB/employees/employee[dependents]
return $e/lname

这是我的查询,它会返回所有有家属的员工。

我需要帮助的是如何根据他们有多少家属来对员工进行排序。因此修改后的查询将返回

员工#1

<dependent>
      <dependentName>Michael</dependentName>
      <sex>M</sex>
      <dob>01-JAN-1978</dob>
      <relationship>Son</relationship>
    </dependent>
    <dependent>
      <dependentName>Alice</dependentName>
      <sex>F</sex>
      <dob>31-DEC-1978</dob>
      <relationship>Daughter</relationship>
    </dependent>
<dependent>

谁有两个家属,

但不要返回

员工#2

<dependents>
    <dependent>
      <dependentName>Johnny</dependentName>
      <sex>M</sex>
      <dob>04-APR-1997</dob>
      <relationship>Son</relationship>
    </dependent>
<dependent>

谁只有一名受抚养人。

感谢。

1 个答案:

答案 0 :(得分:1)

您的输入示例都不是格式良好的XML,因此我们必须做一些猜测。但是,测试是否有两个或更多依赖项的最简单方法是测试依赖[2]是否存在,这给出了类似的东西:

for $e in $d/companyDB/employees/employee[dependents/dependent[2]]

如果您更喜欢更具可读性的内容,则可能更喜欢

for $e in $d/companyDB/employees/employee[count(dependents/dependent) ge 2]