XQuery - 需要帮助

时间:2012-01-26 19:31:52

标签: union xquery

我应该编写一个基于XQuery的SQL脚本,将来自3个不同XML文件的数据合并为一个统一格式 。 输出应采用以下格式:

<Courses>
<Course school="NYU">
<Number>30144</Number>
<Title>C‐PAC II</Title>
<Instructor>Lewis</Instructor>
</Course>
...
<Course school="Harvard">
<Number>4949</Number>
<Title>Computer Science 50. Introduction to Computer Science I</Title>
<Instructor>Michael D. Smith</Instructor>
</Course>
...
</Courses>

我编写了以下脚本来实现上述目标:

SELECT catalog.query('
<Courses>
{
(<Course school = "NYU">
{
for $x in (/nyu/Course)
return 
<Number> {$x/CallNo/text()} </Number>
<Title> {$x/Name/text()} </Title>
<Instructor> {$x/Instructor/text()} </Instructor>
}
</Course>)

union       

(<Course school = "Harvard">
{
for $y in (/harvard/Course)
return
<Number> {$y/Number/text()} </Number>
<Title> {$y/Title/text()} </Title>
<Instructor> {$y/Instructor/text()} </Instructor>
}               
</Course>)

union

(<Course scool = "Umich">
{
for $z in (/umich/Course)
return
<Number> {$z/@catalognumber} </Number>
<Title> {$z/name/text()} </Title>
}
</Course>)
}                       
</Courses>
')      
from catalogs

任何人都可以告诉我哪里出错了吗?

1 个答案:

答案 0 :(得分:1)

XQuery operators使用节点序列,而不是文件。语法如下:

document("umich.xml")/umich/Course UNION document("harvard.xml")/harvard/Course UNION document("nyu.xml")/nyu/Course

使用document function返回文件中的节点,使用union operator创建结果集。