2012-02-23 4 views
5

Я храню два документа XML, а именно: больницу и офис, в BaseX.Вставка данных в 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 Я хочу, чтобы добавить один или несколько сотрудников. Как добавить элементы с помощью BaseX?

ответ

9

У XQuery есть средство обновления, official W3C recommendation, называемое обновлением XQuery для изменения структуры документа.

Вы можете использовать обновление, как так:

Учитывая вы создали сотрудник базы данных, с вводом команды:

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 на последней позиции в вашем databa се staff

The BaseX Documentation Wiki содержит больше информации об обновлениях:

Там есть хороший учебник, XQuery Update for the impatient предоставляется xmlmind.com.

Конечно, вы можете использовать API для выдачи этих запросов. Для начала я предлагаю вам использовать графический интерфейс, чтобы вы могли видеть результаты напрямую.

Надеюсь, что это помогло, не стесняйтесь запрашивать дополнительную информацию; либо здесь, либо на официальном BaseX Mailing List.

+0

Спасибо за информацию, позвольте мне попробовать и реализовать с помощью информации, предоставленной Майклом, .. –