You are on page 1of 32

Xupdate

David Velzquez Portilla

2
15/10/2008

Xupdate. Misin
La misin del grupo de trabajo Xupdate es la proveer una abierta y flexible actualizacin para modificar datos en documentos XML. Pueden ser documentos reales o documentos virtuales recuperados de bases de datos XML.

3
15/10/2008

Xupdate. Definicin
Es un lenguaje enfocado a la actualizacin de bases de datos XML. Analiza los archivos XML y generas las tablas para el manejo de los documentos. A pesar de un comienzo entusiasta, este se encuentra virtualmente paralizado desde fines del ao 2000.

4
15/10/2008

Xupdate. Select
Toda actualizacin, al igual que en cualquier base de datos, requiere una seleccin de datos sobre los cuales aplicar dichos cambios; XUpdate continua con el estndar de utilizar XPath para dicho propsito.

5
15/10/2008

Xupdate. Modification
Toda modificacin debe estar contenida en un elemento xupdate:modifications el cual debe contener un atributo indicando la versin de XUpdate necesaria

6
15/10/2008

Xupdate. Modification
A su vez, el elemento modifications debe contener alguno de los siguientes elementos, dependiendo del tipo de cambio a realizar:
xupdate:insert-before xupdate:insert-after xupdate:append xupdate:update xupdate:remove xupdate:rename xupdate:variable xupdate:value-of xupdate:if

7
15/10/2008

Xupdate.
Se puede modificar el contenido de un XML, simplemente declarando que cambio debe de hacerse en la sintaxis del XML. Veremos diferentes Casos de Uso (actualizaciones) aplicadas a un XML sencillo.

8
15/10/2008

Xupdate. Documento XML


<addresses> <address id=1> <!-Este es el nombre del usuario --> <name> <first>John</first> <last>Smith</last> </name> <city>Houston</city> <state>Texas</state> <country>United States</country> <phone type=home>333-300-0300</phone> <phone type=work>333-500-9080</phone> <note><!-[CDATA[Este es un nuevo usuario]]></note> </address> </addresses>

9
15/10/2008

Xupdate. Casos de Uso


Insert Element Before Insert Element After Append Element Insert attribute Insert Text Content Insert XML Block Insert a Processing Instruction Insert a Comment Insert CDATA Content Update Element Update Attribute Update Comment Update CDATA Content Rename Element Rename Attribute Delete Element Delete Attribute Delete Text Content of an Element Delete Comment Delete CDATA Content Copying a Node Moving a Node

10
15/10/2008

Xupdate. Casos de Uso. Insert Element Before (Insertar elemento antes)


Adicionar un elemento medio name antes del elemento last name
<xupdate:modifications version="1.0" xmlns:xupdate="http://www.xmldb.org/xupdate">
<xupdate:insert-before select="/addresses/address[@id = 1]/name/last" >

<xupdate:element name="middle">Lennox</xupdate:element> </xupdate:insert-before> </xupdate:modifications>

11
15/10/2008

Xupdate. Casos de Uso. Insert Element After (Insertar elemento despus)


Adicionar un elemento cell phone despus del elemento home phone .
<xupdate:modifications version="1.0" xmlns:xupdate="http://www.xmldb.org/xupdate">
<xupdate:insert-after select="/addresses/address[@id = 1]/phone[@type='home']" >

<xupdate:element name="phone"><xupdate:attribute name="type">cell</xupdate:attribute>490-494-4904</xupdate:element> </xupdate:insert-after> </xupdate:modifications>

12
15/10/2008

Xupdate. Casos de Uso. Append Element (Aadir elemento)


Aadir elemento zip code al registro de address.
<xupdate:modifications version="1.0" xmlns:xupdate="http://www.xmldb.org/xupdate"> <xupdate:append select="/addresses/address[@id = 1]" > <xupdate:element name="zip">90200</xupdate:element> </xupdate:append> </xupdate:modifications>

13
15/10/2008

Xupdate. Casos de Uso. Insert Attribute (Insertar atributo)


Insertar un atributo extension a elemento phone work.
<xupdate:modifications version="1.0" xmlns:xupdate="http://www.xmldb.org/xupdate"> <xupdate:append select="/addresses/address[@id = 1]/phone[@type='work']" > <xupdate:attribute name="extension">223</xupdate:attribute> </xupdate:append> </xupdate:modifications>

14
15/10/2008

Xupdate. Casos de Uso. Insert Text Content (Insertar contenido de texto)


Inserta la clausula of America al elemento country.
<xupdate:modifications version="1.0" xmlns:xupdate="http://www.xmldb.org/xupdate"> <xupdate:append select="/addresses/address[@id = 1]/country" > <xupdate:text> of America</xupdate:text> </xupdate:append> </xupdate:modifications>

15
15/10/2008

Xupdate. Casos de Uso. Insert XML Block (Insertar bloque XML)


Adicionar un nuevo registro de address a el nivel mas alto del elemento addresses.
<xupdate:modifications

version="1.0" xmlns:xupdate="http://www.xmldb.org/xupdate">

<xupdate:append select="/addresses" > <xupdate:element name="address"> <xupdate:attribute name="id">2</xupdate:attribute> <name> <first>Susan</first> <last>Long</last> </name> <city>Tucson</city> <state>Arizona</state> <country>United States</country> <phone type="home">430-304-3040</phone> </xupdate:element> </xupdate:append> </xupdate:modifications>

16

Xupdate. Casos de Uso. Insert a Processing Instruction (Insertar una instruccin de procesamiento)
Adicionar un simple XML, instruccin de procesamiento a nivel de raz del documento.
<xupdate:modifications

15/10/2008

version="1.0" xmlns:xupdate="http://www.xmldb.org/xupdate">

<xupdate:insert-before select="/addresses"> <xupdate:processing-instruction name="cocoonprocess">type="xsp"</xupdate:processing-instruction> </xupdate:insert-before> </xupdate:modifications>

17
15/10/2008

Xupdate. Casos de Uso. Insert a Comment (Insertar comentario)


Adicionar otro comentario en el elemento name.
<xupdate:modifications version="1.0" xmlns:xupdate="http://www.xmldb.org/xupdate"> <xupdate:insert-before select="/addresses/address[@id = 1]/name"> <xupdate:comment>Another comment about the name</xupdate:comment> </xupdate:insert-before> </xupdate:modifications>

18
15/10/2008

Xupdate. Casos de Uso. Insert CDATA Content (Insertar contenido CDATA)


Aadir un elemento note con contenido CDATA, con lagunas etiquetas HTML.
<xupdate:modifications

version="1.0" xmlns:xupdate="http://www.xmldb.org/xupdate">

<xupdate:append select="/addresses/address[@id = 1]" > <xupdate:element name="note"><xupdate:cdata><![CDATA[A simple <b>note</b>]]></xupdate:cdata></xupdate:element> </xupdate:append> </xupdate:modifications>

19
15/10/2008

Xupdate. Casos de Uso. Update Element (Actualiza un elemento)


Cambiar el primer nombre de la direccin con id=1, ser Johnathan.
<xupdate:modifications version="1.0" xmlns:xupdate="http://www.xmldb.org/xupdate"> <xupdate:update select="/addresses/address[@id = 1]/name/first">Johnathan</xupdate:update> </xupdate:modifications>

20
15/10/2008

Xupdate. Casos de Uso. Update Attribute (Actualiza un atributo)


Cambiar el tipo de numero telefnico 333-3000300 para ser celular.
<xupdate:modifications version="1.0" xmlns:xupdate="http://www.xmldb.org/xupdate"> <xupdate:update select="/addresses/address[@id = 1]/phone[.='333300-0300']/@type" >cell</xupdate:update> </xupdate:modifications>

21
15/10/2008

Xupdate. Casos de Uso. Update Comment (Actualiza comentario)


Cambiar el comentario justo antes del elemento name que empieza con This.
<xupdate:modifications version="1.0" xmlns:xupdate="http://www.xmldb.org/xupdate"> <xupdate:update select="/addresses/address[@id = 1]/comment()[startswith(., 'This')]" >This user has a name.</xupdate:update> </xupdate:modifications>

22
15/10/2008

Xupdate. Casos de Uso. Update CDATA Content (Actualiza contenido CDATA)


Cambiar el CDATA, del elemento note.
<xupdate:modifications version="1.0" xmlns:xupdate="http://www.xmldb.org/xupdate"> <xupdate:update select="/addresses/address[@id = 1]/note/text()" ><![CDATA[Just some <i>modified</i> content]]></xupdate:update> </xupdate:modifications>

23
15/10/2008

Xupdate. Casos de Uso. Rename Attribute (Renombra atributo)


Renombrar el elemento note a comment.
<xupdate:modifications version="1.0" xmlns:xupdate="http://www.xmldb.org/xupdate"> <xupdate:rename select="/addresses/address[@id = 1]/note" >comment</xupdate:rename> </xupdate:modifications>

24
15/10/2008

Xupdate. Casos de Uso. Delete Element (Borra elemento)


Borrar todos los elementos phone.
<xupdate:modifications version="1.0" xmlns:xupdate="http://www.xmldb.org/xupdate"> <xupdate:remove select="/addresses/address[@id = 1]/phone"/> </xupdate:modifications>

25
15/10/2008

Xupdate. Casos de Uso. Delete Attribute (Borra atributo)


Borrar todos los atributos, del elemento phone.
<xupdate:modifications version="1.0" xmlns:xupdate="http://www.xmldb.org/xupdate"> <xupdate:remove select="/addresses/address[@id = 1]/phone/@type" /> </xupdate:modifications>

26

Xupdate. Casos de Uso. Delete Text Content of an Element (Borra el contenido de texto de una elemento)
Borrar el contenido del elemento country.
<xupdate:modifications

15/10/2008

version="1.0" xmlns:xupdate="http://www.xmldb.org/xupdate">

<xupdate:remove select="/addresses/address[@id = 1]/country/text()" /> </xupdate:modifications>

27
15/10/2008

Xupdate. Casos de Uso. Delete Comment(Borra comentario)


Borrar el primer comentario antes del elemento name.
<xupdate:modifications version="1.0" xmlns:xupdate="http://www.xmldb.org/xupdate"> <xupdate:remove select="/addresses/address[@id = 1]/comment()[1]" /> </xupdate:modifications>

28
15/10/2008

Xupdate. Casos de Uso. Delete CDATA Content (Borra contenido CDATA)


Borrar el contenido CDATA del elemento note.
<xupdate:modifications version="1.0"

xmlns:xupdate="http://www.xmldb.org/xupdate"> <xupdate:remove select="/addresses/address[@id = 1]/note/text()" /> </xupdate:modifications>

29
15/10/2008

Xupdate. Casos de Uso. Copying a Node (Copia un nodo)


Copia el nodo state y el lugar de la copia despus de que el nodo country.
<xupdate:modifications version="1.0" xmlns:xupdate="http://www.xmldb.org/xupdate"> <xupdate:variable name="state" select="/addresses/address[@id = 1]/state"/> <xupdate:insert-after select="/addresses/address[@id = 1]/country"> <xupdate:value-of select="$state"/> </xupdate:insert-after> </xupdate:modifications>

30
15/10/2008

Xupdate. Casos de Uso. Moving a Node (Moviendo un nodo)


Mover el nodo country antes del nodo state.
<xupdate:modifications version="1.0" xmlns:xupdate="http://www.xmldb.org/xupdate"> <xupdate:variable name="country" select="/addresses/address[@id = 1]/country"/> <xupdate:remove select="/addresses/address[@id = 1]/country"/> <xupdate:insert-before select="/addresses/address[@id = 1]/state"> <xupdate:value-of select="$country"/> </xupdate:insert-before> </xupdate:modifications>

31
15/10/2008

Xupdate. Casos de Uso. Contribuciones


Contribuciones de nuevos casos de uso para Xupdate:
kstaken@xmldatabases.org

32
15/10/2008

Xupdate. Referencias
www.xmldatabases.org http://ict.udlap.mx/people/carlos/is346/admond 07.html http://xmldb-org.sourceforge.net

You might also like