我有一个具有此结构的XML文件
<Class>
<ClassNumber>111</Flight_Number>
<Student>
<Student_ID>1</Student_ID>
<Student_ID>2</Student_ID>
<Student_ID>3</Student_ID>
</Student>
</ClassNumber>
</Class>
<Class>
<ClassNumber>222</Flight_Number>
<Student>
<Student_ID>4</Student_ID>
<Student_ID>5</Student_ID>
<Student_ID>6</Student_ID>
</Student>
</ClassNumber>
</Class>
我希望输出像
111 1
111 2
111 3
222 4
222 5
222 6
请帮忙。我试了很长时间。
此致 弗兰克
答案 0 :(得分:1)
您的第一个问题是您显示的输入不是XML:</Flight_Number>
没有关闭任何打开的元素,并且您没有文档的根元素。
如果预期输入类似于下面查询中的$ doc变量,那么您想要的XQuery表达式将具有此处给出的结构:
let $doc := <Classes>
<Class>
<ClassNumber>111</ClassNumber>
<Student>
<Student_ID>1</Student_ID>
<Student_ID>2</Student_ID>
<Student_ID>3</Student_ID>
</Student>
</Class>
<Class>
<ClassNumber>222</ClassNumber>
<Student>
<Student_ID>4</Student_ID>
<Student_ID>5</Student_ID>
<Student_ID>6</Student_ID>
</Student>
</Class>
</Classes>
for $s in $doc//Student_ID
return concat($s/../../ClassNumber, ' ', string($s), '
')
在我用来测试它的XQuery引擎中,这产生了预期的结果:
111 1
111 2
111 3
222 4
222 5
222 6