如何在 Xquery 中获取序列中的每个项目?

How to get each item in a sequence in Xquery?

嗨,我有一个 XML,看起来像

<Movies>
    <Movie>
        <Title>$#*! My Dad Says</Title>
        <Year>2010</Year>
        <OtherTitles>
            <OtherTitleName>Beep My Dad Says</OtherTitleName>
            <Year>2010</Year>
            <Country>USA</Country>
            <TitleType>alternative title</TitleType>
            <OtherTitleName>Shit My Dad Says</OtherTitleName>
            <Year>2010</Year>
            <Country>USA</Country>
            <TitleType>uncensored intended title</TitleType>
            <OtherTitleName>Shit! My Dad Says</OtherTitleName>
            <Year>2013</Year>
            <Country>Germany</Country>
            <TitleType>imdb display title</TitleType>
        </OtherTitles>
    </Movie>
</Movies>

我正在尝试获取每部电影的 OtherTitleName 和年份,以便像这样显示它 -

       Beep My Dad Says, 2010   
       Shit! My Dad says, 2010

我已尝试使用串联,但我得到了预期的错误项,找到了序列。

如何在遍历时获取每个项目的标题和年份?

编辑:我试过这样的 Xquery。

   for $n in Movies//Movie//OtherTitles

       let $d := ($n/OtherTitleName/text(),$n/Year/text())

         return $d
     // let $d := concat($n/OtherTitleName/text(),$n/Year/text()) Gives me error

您可以使用 XPath return 将每个 OtherTitleName 元素与其旁边的 相应 Year 元素 连接起来,如下所示:

//OtherTitleName/concat(.,following-sibling::Year[1])

你可以使用下面的代码得到上面的结果。

let $OtherTitleName := $xml/Movie/OtherTitles/OtherTitleName/text()
let $Year := $xml/Movie/OtherTitles/Year/text()
for $each at $pos in $OtherTitleName 
return concat($each, ", ", $Year[$pos])