PDF de programación - Xpath Apuntes de guerrilla

Imágen de pdf Xpath Apuntes de guerrilla

Xpath Apuntes de guerrillagráfica de visualizaciones

Actualizado el 21 de Marzo del 2018 (Publicado el 11 de Diciembre del 2017)
1.093 visualizaciones desde el 11 de Diciembre del 2017
103,8 KB
12 paginas
Creado hace 11a (09/06/2012)
Xpath

Apuntes de guerrilla

Index

Rutas___________________________________________________3

Ejes____________________________________________________3-4

Nodos de comprobación___________________________________4

Predicados______________________________________________4

Expresiones y operadores__________________________________5

Funciones_______________________________________________5-6

Códigos de ejemplo_______________________________________7-9

Referencias_____________________________________________10

2

Rutas

Ruta absoluta
Para seleccionar un elemento del xml podemos usar una ruta absoluta
introduciendo todo el camino hacia el elemento que queramos.

/nodo_padre/nodo_hijo/nodo_deseado

Ruta relativa
Cuando nos encontremos dentro de una ruta podemos usar la ruta relativa a nuestra
posición actual dentro del xml.

./nodo_deseado

Varias rutas
Si queremos usar dos rutas posibles las juntaremos con “|”.

/nodo_padre/nodo_hijo/nodo_deseado | /nodo_padre/nodo_deseado

Ejes

Donde apunta

Eje
child::
Al contenido actual. No se usa.
descendant:: A cualquier descendiente dentro

self::

de ese nodo. Abrv= //
Al nodo actual. Abrv= .

attribute::
parent::

Atributo del nodo. Abrv= @
Padre del nodo actual. Abvr= ..

ancestor::

Todos sus antecesores.

Ejemplo
/child:: = /nodo
//dato_deseado =
/nodo_padre/nodo_deseado
./nodo_hijo =
nodo_padre/nodo_hijo
nodo@atributo_nodo
../nodo_hijo =
/nodo_padre/nodo_hijo
ancestor::nodo_hijo =
/nodo_abuelo/nodo_padre/
nodo_hijo

following-
sibling::
following::

Selecciona a los nodos hermanos following-sibling::nodo

Selecciona los nodos a partir del
nodo marcado hacia abajo.

/nodo_padre/nodo/following::*

3

preceding::
*-or-self::

Al contrario de following::
Acompañando al eje principal
con self obtenemos el eje
principal y el propio nodo.

/nodo_padre/nodo/proceding::*
ancestos-or-self::nodo_hijo

Nodos de comprobación

Nodo
*

text()

node()

Que selecciona
Selecciona teniendo en cuenta el nivel
del nodo.
También para seleccionar todos los nodos
hijos del nivel deseado.
El contenido del nodo seleccionado en
formato texto.
Todos los nodos de cualquier tipo.

Ejemplo
/*/*/nodo_deseado =
/nodo_padre/nodo_hijo/nodo
/*/*/* =
/nodo_padre/nodo_hijo/*
/nodo_padre/nodo_deaseado/
text()

Predicados
Por contenido
Nos extraerá los nodos que seleccionemos a partir de su contenido que sean hijos
del del mismo.

/nodo_padre/nodo_hijo[nodo_deseado=”Contenido_elegido”]
Por atributo
Esto mismo también sirve para seleccionar los nodos hijos del nodo con el atributo
que queramos.

/nodo_padre/nodo_hijo[nodo_deseado@Contenido_elegido]

Varios predicados
Se pueden añadir varios predicados para que se cumplan los dos dentro del mismo
elemento padre, se cumplirá como una condición lógica AND.
/nodo_padre/nodo_hijo[nodo_deseado=”Contenido_elegido”]
[nodo_deseado2=”Contenido_elegido2”]

4

Expresiones y operadores

Tipo
Numérico

Comparación =
!=
<,>,>=,<=
or
and
not

Booleano

Funciones

Funciones de nodo

Operador Función
+
-
*
div
mod

Suma
Resta
Multiplicación
División
Resto
Igualdad
Desigualdad
Comparaciones
Lógico or
Lógico and
Lógico not

Ejemplo
/nodo/nodo[numero+5]
/*/nodo[numero1]-[numero2]
/nodo[@numero*5]
/nodo/nodo[@numero Div 5]
/nodo/*[@numero mod]
/*/*/nodo[num=1000]
../nodo[num!=1000]
//nodo[num<= 1000 or num2 >= 0]
./nodo[num<= 1000 or num2 >= 0]
/nodo[num<= 10 and num2 >= 0]

Función
last()
count()
position()

Descripción
Devuelve el úlimo nodo y su contenido.
Cuenta la cantidad del nodo/atributo deseado.
Devuelve la posición del nodo. El nodo raiz
empieza en la posición 1.
Devuelve el contenido del nodo.

text()
local-name() Devuelve el nombre local en modo texto del
nodo actual, el nombre de : hacia la derecha.
Devuelve el nombre completo del nodo.
Devuelve el nombre del archivo xsl.

name()
name-space-
uri()

Ejemplo
*/nodo[last()]
count(*/nodo)
//nodo[position()]

/*/*/nodo/text()
.local-name()

/nodo[name()]
Name-space-uri()

5

Funciones de cadenas

Función
string()
string-length()

Descripción
Convierte un objeto en una cadena.
Devuelve el número de la cadena

concat()
contains()

Concatena lo que desees
Devuelve un “true” si la primera cadena
contiene a la segunda.

normalice-space() Quita los espacios, tabulaciones y saltos

starts-with()

substring()

string-after()

de linea y deja un solo espacio entre
cadenas.
Devuelve un “true” si la primera cadena
empieza con la segunda.
Devuelve el trozo de cadena del nodo
especificado en el primer parámetro, el
segundo parámetro es donde empieza a
buscar en la cadena y el tercer parámetro
la longitud de caracteres a coger.
Devuelve el trozo de cadena contigua al
trozo de cadena que le digamos

string-before()

Al contrario de string-after()

Funciones de booleanas

Ejemplo
/*/string(.)
//nodo/string-
length(name()>6)
concat(name(),../name())
contains(.name(),'nodo')

./normalice-space()

/nodo_padre/starts-
with(nodo_hijo,'nod')
substring(“12345”,2,3)

Resultado: 234

substring-after("04/01","/")

Resultado: 01
string-before(“04/01”,”/”)

resultado:04

Función
boolean()

false()
lang()

not()

true()

Descripción
Convierte un objeto en un valor
booleano..
Devuelve el valor “false”
Devuelve un valor “true” si el argumento
introduce coincide con el contenido o
nodo.
Devuelve un valor falso si el resultado es
verdadero
Devuelve el valor true.

Ejemplo
boolean(.)

false()
./nodo[@lang=”atributo1”]

./nodo[not(contenido=0)]

true()

6

Códigos de ejemplo

Rutas

Código de XML

Código de XPATH:

<AAA>
<BBB/>
<CCC/>
<BBB/>
<BBB/>
<DDD>
<BBB/>
</DDD>
<CCC/>
</AAA>

/AAA/DDD/BBB

Código de XPATH:

//BBB

Código de XPATH:

*/BBB

Código de XPATH:

*/*/BBB

Código de XPATH:

/AAA/DDD/*

Resultado:

<BBB/>

Resultado:

<BBB/>

Combinar caminos
Código de XML

Código de XPATH:

//CCC | //BBB

<AAA>
<BBB/>
<CCC/>
<BBB/>
<BBB/>
<DDD>
<BBB/>
</DDD>
<CCC/>
</AAA>

Resultado:

<BBB/>

Resultado:

<BBB/>
<BBB/>
<BBB/>
<BBB/>

Resultado:

<BBB/>
<BBB/>
<BBB/>

Resultado:

<BBB/>
<CCC/>
<BBB/>
<BBB/>
<BBB/>
<CCC/>

7

Atributos

Código de XML

Código de XPATH:

<AAA>
<BBB id=”1”/>
<CCC/>
<BBB id=”2”/>
<BBB atrib=”3”/>
<DDD>
<BBB/>
</DDD>
<CCC/>
</AAA>

//@id

Código de XPATH:

//BBB[@id]

Código de XPATH:

//BBB[@*]

Código de XPATH:

//BBB[@id='1']

Resultado:

<BBB/>

Resultado:

1
2

Resultado:

<BBB id=”1”/>
<BBB id=”2”/>
Resultado:

<BBB id=”b1”/>
<BBB id=”b2”/>
<BBB name=”3”/>

Ejes
Código de XML

<AAA>
<BBB/>
<CCC/>
<BBB/>
<BBB/>
<DDD>
<BBB/>
</DDD>
<CCC/>
</AAA>

Código de XPATH:

Resultado:

//DDD/parent::*

<AAA>

Código de XPATH:

//BBB/ancestor::*

Código de XPATH:

Resultado:

<AAA>
<DDD>

/AAA/BBB/following-sibling::*

Código de XPATH:

Resultado:

/AAA/DDD/preceding::*

Código de XPATH:

/AAA/DDD/preceding-or-self::*

<BBB/>
<CCC/>
<BBB/>
<BBB/>

Resultado:

<BBB/>
<CCC/>
<BBB/>
<BBB/>
<DDD/>

Resultado:

<CCC/>
<DDD/>
<CCC/>

8

Funciones
Código de XML

<AAA>
<BBB/>
<CCC/>
<BBB>

<EEE/>
<EEEE/>
<EEE/>

<BBB/>
<DDD>
<BBB/>

<BBB/>
</DDD>
<CCC/>
</AAA>

Código de XPATH:

/AAA/BBB[1]

Código de XPATH:

/AAA/BBB[last()]

Código de XPATH:

//*[count(BBB)=2]

Código de XPATH:

//*[count(*)=3]

Resultado:

<BBB/>

Resultado:

<BBB/>

Resultado:

<DDD>

Resultado:

<BBB>

Código de XPATH:

Resultado:

//*[name()='DDD']

<DDD>

Código de XPATH:

//*[starts-with(name(),'D')]

Resultado:

<DDD>

Código de XPATH:

//*[string-length(name()) = 4]

Código de XPATH:

//BBB[position() mod 2 = 0 ]

Resultado:

<EEEE>

Resultado:

<BBB/>

9

Referencias

Código gratis

http://www.codigogratis.com.ar/lista-de-funciones-xpath-para-usar-en-xsl/

Msdn Microsoft

http://msdn.microsoft.com/es-es/library/ms256138%28v=vs.80%29

Caucho

http://www.caucho.com/resin-3.0/xml/xpath-fun.xtp#last

10

11

Al igual que el mapa en el bolsillo, la cantimplora en el
cinturón y el machete cruzado en la espalda son esenciales
para la vida de un guerrillero estos manuales facilitan la lucha
constante contra los trabajos de programación.

Los informáticos tenemos la suerte de tener internet cerca de
nosotros, pero cuando esa suerte no existe entonces tenemos
que recurrir al papel o pdf. Estos pequeños manuales no
atienden a explicaciones para principiantes ni avanzados,
simplemente sacian las consultas de las dudas que pueden
surgir programando en cualquier sitio, en el día a día.

Cuando estas lejos de tu puesto de trabajo, internet no está
ahí o simplemente la red no funciona el guerrillero
informático tiene el manual en el bolsillo, la botella de agua
en la mochila y el portátil cruzado en la espalda.

Autor: Jesús Benages Sales

Contacto:[email protected]
  • Links de descarga
http://lwp-l.com/pdf7829

Comentarios de: Xpath Apuntes de guerrilla (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad