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 に答える