6

病院とオフィスという 2 つの XML ドキュメントを BaseX に保存しています。

以下は、オフィス xml です。

<Staff>
    <Employee Name="Brian">
        <Personal>
            <SSN> 666-66-6666 </SSN>
        </Personal>
        <StaffInfo>
            <Position> Doctor </Position>
            <AccountableTo> David </AccountableTo>
        </StaffInfo>
    </Employee>
    <Employee Name="David">
        <Personal>
            <SSN> 555-55-5555 </SSN>
        </Personal>
        <StaffInfo>
            <Position> Doctor </Position>
            <AccountableTo />
        </StaffInfo>
    </Employee>
</Staff>

この XML では、1 人以上の従業員を追加したいと考えています。BaseX を使用して要素を追加するにはどうすればよいですか?

4

1 に答える 1

11

XQuery には、文書構造を変更するための XQuery Update と呼ばれる、W3C の公式勧告である更新機能があります。

次のように更新を使用できます。

次のコマンドを使用して、従業員データベースを作成したとします。

CREATE DB office /path/to/office.xml

XQuery Update 機能を使用して、次のクエリを実行できます。

let $up := <Employee Name="Joe">
    <Personal>
      <SSN>666-66-1234</SSN>
    </Personal>
    <StaffInfo>
      <Position>Doctor</Position>
      <AccountableTo>Jeff</AccountableTo>
    </StaffInfo>
  </Employee>

  return
insert node $up as last into doc('office')/Staff

これにより、によって参照されるノードが$upデータベースの最後の位置に追加されますstaff

BaseX Documentation Wikiには、更新に関する詳細情報が含まれています。

xmlmind.com が提供する、せっかちな人のための XQuery Updateという優れたチュートリアルがあります。

API を使用してこれらのクエリを発行できることは確かですが、最初は結果を直接確認できるように GUI を使用することをお勧めします。

これがお役に立てば幸いです。詳細についてはお気軽にお問い合わせください。ここまたは公式のBaseX メーリング リストで。

于 2012-02-23T09:45:26.620 に答える