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>
我正在使用 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>