如何写一个xQuery来根据others value的条件提取两个字段?
How to write a xQuery to extract two fields based on the conditions of others value?
我有一个 XML 文档:
<resultsets>
<row>
<emp_no>10001</emp_no>
<first_name>Georgi</first_name>
<last_name>Facello</last_name>
</row>
<row>
<emp_no>10002</emp_no>
<first_name>Bezalel</first_name>
<last_name>Simmel</last_name>
</row>
</resultset>
我想使用 FLWOR 编写一个 xQuery 来提取 emp_no 和 first_name,其中 emp_no 是 10001,对应的名字如下:
<row>
<emp_no>10001</emp_no>
<first_name>Georgi</first_name>
</row>
我写的代码:
for $id in doc("employees.xml")//emp_no
for $first in doc("employees.xml")//first_name
where ($id/text() = '10001')
return
<row>
<id>{upper-case($id/text())}</id>
<first>{$first/text()}</first>
</row>
然而,它returns $id 和 $first 的笛卡尔积,
<row>
<emp_no>10001</emp_no>
<first_name>Georgi</first_name>
</row>
<row>
<emp_no>10001</emp_no>
<first_name>Bezalel</first_name>
</row>
您知道如何使用 xQuery FLWOR 解决这个问题吗?谢谢!
我会简单地 select row
然后在 emp_no
child:
上使用 where 子句
for $row in /resultsets/row
where $row/emp_no = '10001'
return
<row>
<id>{$row/emp_no/data()}</id>
<first>{$row/first_name/data()}</first>
</row>
http://xqueryfiddle.liberty-development.net/bFukv89
不太清楚是否要将元素名称从 emp_no
更改为 id
以及从 first_name
更改为 first
,如果不需要的话,您当然可以简单地复制它们:
for $row in /resultsets/row
where $row/emp_no = '10001'
return
<row>
{$row/emp_no, $row/first_name}
</row>
我有一个 XML 文档:
<resultsets>
<row>
<emp_no>10001</emp_no>
<first_name>Georgi</first_name>
<last_name>Facello</last_name>
</row>
<row>
<emp_no>10002</emp_no>
<first_name>Bezalel</first_name>
<last_name>Simmel</last_name>
</row>
</resultset>
我想使用 FLWOR 编写一个 xQuery 来提取 emp_no 和 first_name,其中 emp_no 是 10001,对应的名字如下:
<row>
<emp_no>10001</emp_no>
<first_name>Georgi</first_name>
</row>
我写的代码:
for $id in doc("employees.xml")//emp_no
for $first in doc("employees.xml")//first_name
where ($id/text() = '10001')
return
<row>
<id>{upper-case($id/text())}</id>
<first>{$first/text()}</first>
</row>
然而,它returns $id 和 $first 的笛卡尔积,
<row>
<emp_no>10001</emp_no>
<first_name>Georgi</first_name>
</row>
<row>
<emp_no>10001</emp_no>
<first_name>Bezalel</first_name>
</row>
您知道如何使用 xQuery FLWOR 解决这个问题吗?谢谢!
我会简单地 select row
然后在 emp_no
child:
for $row in /resultsets/row
where $row/emp_no = '10001'
return
<row>
<id>{$row/emp_no/data()}</id>
<first>{$row/first_name/data()}</first>
</row>
http://xqueryfiddle.liberty-development.net/bFukv89
不太清楚是否要将元素名称从 emp_no
更改为 id
以及从 first_name
更改为 first
,如果不需要的话,您当然可以简单地复制它们:
for $row in /resultsets/row
where $row/emp_no = '10001'
return
<row>
{$row/emp_no, $row/first_name}
</row>