0

我有一个具有这种结构的 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

请帮忙。我尝试了很长时间。

问候, 弗兰克

4

1 回答 1

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), '&#xA;')

在我用来测试这个的 XQuery 引擎中,这产生了预期的结果:

111 1
 111 2
 111 3
 222 4
 222 5
 222 6
于 2012-09-05T17:55:35.350 回答