2012-02-23 35 views
5

Estoy almacenando dos documentos XML, a saber, hospital y oficina, en BaseX.Inserción de datos en un XML con Basex

El siguiente es el XML de Office:

<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> 

En este XML Quiero añadir uno o más empleados. ¿Cómo puedo agregar elementos usando BaseX?

Respuesta

9

XQuery tiene una función de actualización, official W3C recommendation, llamada XQuery Update para cambiar la estructura del documento.

Puede utilizar las actualizaciones de este modo:

dado han creado un empleados de base de datos, con el commmand:

CREATE DB office /path/to/office.xml

Ahora usted puede utilizar la función de XQuery Actualizar y ejecutar la siguiente consulta:

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 

Este anuncio será el nodo referenciado por $up en la última posición en su Databa SE staff

El BaseX Documentation Wiki contiene más información sobre las actualizaciones:

Hay un buen tutorial, XQuery Update for the impatient proporcionada por xmlmind.com.

Efectivamente, puede utilizar las API para emitir estas consultas, para empezar, le sugiero que se quede con la GUI, para que pueda ver los resultados directamente.

Espero que esto haya sido de ayuda, siéntase libre de pedir más información; aquí o en el teléfono oficial BaseX Mailing List.

+0

Gracias por la información, permítanme intentar implementarlo con la ayuda de la información provista por Michael, .. –

Cuestiones relacionadas