1

嗨,我有一个看起来像的 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
4

2 回答 2

2

OtherTitleName您可以使用 XPath 返回每个元素与其旁边的相应Year元素的串联,如下所示:

//OtherTitleName/concat(.,following-sibling::Year[1])
于 2016-04-14T11:45:38.023 回答
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])
于 2016-04-15T09:02:20.967 回答