如何使用包含列表的谓词访问全局变量

时间:2019-08-14 20:11:47

标签: xquery

我不确定我是否正确说了标题,但让我尝试解释一下:

使用the first example from here

declare variable $message := ("message1","message2");
<output>
        <print>{$message[1]}</print>
        <print>{$message[2]}</print>
</output>

您将获得以下输出:

<output>    
  <print>message1</print>    
  <print>message2</print>    
</output>

我正在尝试使用更复杂的变量based on Question 5 here获得相似的效果。这个想法是使用以下表格创建法语国家和德语国家的列表:

<result>
  <French>
    <country>country-name</country>
            ...
  </French>
  <German>
    <country>country-name</country>
           ...
  </German>
</result>

有多种方法可以做到这一点,但是我对第一个示例的开头特别感兴趣:

declare variable $lang := doc("countries.xml")//country/language[.=('French','German')];

,并使用如下所示的FLOWR表达式:

<result>
<French>    
{for $f in (the first language specified in the $lang predicate)
return <country>{$f/data(@name)}</country>
}
</French>
<German>
{for $f in (the second language specified in the $lang predicate)
return <country>{$f/data(@name)}</country>
}
</German>
</result>

那可行吗?如果可以,怎么做到?

0 个答案:

没有答案