我应该编写一个基于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
任何人都可以告诉我哪里出错了吗?
答案 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创建结果集。