如何在 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])
嗨,我有一个 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])