Return XML 的值与 for 循环不是数字,使用 Xquery

Return the value of XML with for loop not the number, using Xquery

我正在使用 http://xpatheval.apphb.com/ 这个网站,它工作得很好,我只是在代码和获取我需要的值方面遇到了问题。 我这里有一个 XML 代码:

<?xml version="1.0"?>
<RIGA>
   <STREET Name="Brivibas">
      <HOUSE No="1">
         <FLAT No="1">
            <INHABITANT Year="1970" Gender="M">Ivanovs Sergejs</INHABITANT>
            <INHABITANT Year="1970" Gender="F">Ivanova Anna</INHABITANT>
         </FLAT>
         <FLAT No="2">
            <INHABITANT Year="1972" Gender="M">Strods Janis</INHABITANT>
            <INHABITANT Year="1972" Gender="F">Strode Inna</INHABITANT>
            <INHABITANT Year="1974" Gender="F">Strode Julija</INHABITANT>
         </FLAT>
      </HOUSE> 
      <HOUSE No="2">
         <FLAT No="1">
            <INHABITANT Year="1974" Gender="M">Zemzars Uldis</INHABITANT>
         </FLAT>
      </HOUSE> 
   </STREET>
   <STREET Name="Elizabetes">
      <HOUSE No="1">
         <FLAT No="1">
            <INHABITANT Year="1985" Gender="M">Celms Juris</INHABITANT>
         </FLAT>
         <FLAT No="2">
            <INHABITANT Year="1988" Gender="M">Dmitrijevs Igors</INHABITANT>
            <INHABITANT Year="1988" Gender="F">Dmitrijeva Svetlana</INHABITANT>
            <INHABITANT Year="1989" Gender="F">Dmitrijeva Olga</INHABITANT>
            <INHABITANT Year="1989" Gender="M">Dmitrijevs Pjotrs</INHABITANT>
         </FLAT>
      </HOUSE> 
   </STREET>
</RIGA>

而我写的 Xquery 代码是这样的:

<MALES>
{let $male:=//INHABITANT[@Gender="M"]
for $male in (1 to 6)
return <MALE>{$male}</MALE>}
</MALES>

我得到:

<MALES>
   <MALE>1</MALE>
   <MALE>2</MALE>
   <MALE>3</MALE>
   <MALE>4</MALE>
   <MALE>5</MALE>
   <MALE>6</MALE>
</MALES>

但我需要的是:

<MALES>
   <MALE>First Name Last Name</MALE>
   <MALE>First Name Last Name</MALE>
   <MALE>First Name Last Name</MALE>
   <MALE>First Name Last Name</MALE>
   <MALE>First Name Last Name</MALE>
   <MALE>First Name Last Name</MALE>
</MALES>

我的代码哪里出错了?

我有 0 次使用 XML 和 Xquery

的经验

您需要将 XPath 表达式的文本节点绑定到变量,而不是数字 1 到 6:

<MALES>{
  for $male in //INHABITANT[@Gender = "M"]/text()
  return <MALE>{ $male }</MALE>
}</MALES>