[英]How to include element tags within the return results for an XQuery FLWOR?
如何在xquery
的return
子句中混合“新”标签?
这是我追求的 output 的形式:
<?xml version="1.0"?>
<csv>
<record>
<sex>M</sex>
</record>
<record>
<sex>F</sex>
</record>
<record>
<sex>M</sex>
</record>
<record>
<sex>F</sex>
</record>
</csv>
我刚刚手动输入的具体值用于说明目的。 实际值和当前 output 为:
<?xml version="1.0" encoding="UTF-8"?><csv>SexMFFMFFMF</csv>
原xml
数据:
<csv>
<record>
<entry>Reported_Date</entry>
<entry>HA</entry>
<entry>Sex</entry>
<entry>Age_Group</entry>
<entry>Classification_Reported</entry>
</record>
<record>
<entry>2020-01-26</entry>
<entry>Vancouver Coastal</entry>
<entry>M</entry>
<entry>40-49</entry>
<entry>Lab-diagnosed</entry>
</record>
<record>
<entry>2020-02-02</entry>
<entry>Vancouver Coastal</entry>
<entry>F</entry>
<entry>50-59</entry>
<entry>Lab-diagnosed</entry>
</record>
<record>
<entry>2020-02-05</entry>
<entry>Vancouver Coastal</entry>
<entry>F</entry>
<entry>20-29</entry>
<entry>Lab-diagnosed</entry>
</record>
<record>
<entry>2020-02-05</entry>
<entry>Vancouver Coastal</entry>
<entry>M</entry>
<entry>30-39</entry>
<entry>Lab-diagnosed</entry>
</record>
<record>
<entry>2020-02-11</entry>
<entry>Interior</entry>
<entry>F</entry>
<entry>30-39</entry>
<entry>Lab-diagnosed</entry>
</record>
<record>
<entry>2020-02-20</entry>
<entry>Fraser</entry>
<entry>F</entry>
<entry>30-39</entry>
<entry>Lab-diagnosed</entry>
</record>
<record>
<entry>2020-02-21</entry>
<entry>Fraser</entry>
<entry>M</entry>
<entry>40-49</entry>
<entry>Lab-diagnosed</entry>
</record>
<record>
<entry>2020-02-27</entry>
<entry>Vancouver Coastal</entry>
<entry>F</entry>
<entry>60-69</entry>
<entry>Lab-diagnosed</entry>
</record>
</csv>
FLWOR
查询:
declare namespace map = "http://www.w3.org/2005/xpath-functions/map";
declare namespace array = "http://www.w3.org/2005/xpath-functions/array";
declare namespace output = "http://www.w3.org/2010/xslt-xquery-serialization";
for $x in /csv
return <csv>{$x/record[position() = (1 to 9)]/entry[3]/text()}</csv>
我尝试将节点标签放在大括号内,但遇到语法错误。
使用例如
<csv>
{
for $record in /csv/record[position() = (2 to 9)]
return
<record>
<sex>{data($record/entry[3])}</sex>
</record>
}
</csv>
或简单的 map 运算符
<csv>
{
/csv/record[position() = (2 to 9)]
!
<record>
<sex>{data(entry[3])}</sex>
</record>
}
</csv>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.