Mundo
del Programador

Elementos y Atributos


Elementos

Para seleccionar elementos de un árbol indicamos:

  • /catalogo/libro/* - para seleccionar todos los elementos
  • /catalogo/libro/titulo – para sacar todos los titulos de los libros
  • <titulo>El Quijote</titulo>
  • /catalogo/libro/titulo/text() - sacamos todos los titulos sin las marcas de
    <
    titulo
    >
  • // titulo – saca solo determinados elementos de un nodo, este donde este (nos referimos a los descendientes del nodo actual, es decir selecciona los nodos hijos desde nodo actual que conincidan con la selección)

Atributos

  • @ - para seleccionar los atributos de los elementos
  • Ejemplo:

                            
                            /catalogo/producto/calidad/@valor
                          
  • @* - selecciona todos los atributos

Filtros o predicados

Es una expresión booleana que añade un nivel de verificación al paso de localización. A la hora de hacer la selección podemos incluir filtros que se escriben entre corchetes. Para esto podemos utilizar operadores como (, ), =, <, >, >=, <=, !=

                  
                  Ejemplo: /catalogo/producto[precio >= 90] (para seleccionar el elemento producto cuyo precio sea mayor o igual a 90) 
                  Ejemplo: /catalogo/producto/calidad[@valor>5] (selecciona los atributos valor que tengan asignado un número mayor que 5)
                

También se puede incluir en un predicado:

  • / (el eje child) se pone por defecto
  • attribute es el nombre de atributo
  • descendant // permite seleccionar todos los nodos que descienden del conjunto de nodos contextos
  • self . Se refiere al nodo contexto
  • parent .. selecciona el nodo padre
  • ancestor devuelve todos los nodos de los que el nodo contexto es decendiente

Para indicar el nacimiento que es un atributo del elemento fecha, tenemos que poner la expresión:

                  
                  /persona/fecha[@nacimiento=”XXXX”]/../nombre
                

Hay que indicar los dos puntos porque una vez que hemos llegado al nodo fecha y puesto el filtro para el nacimiento hay que volver al nodo padre para llegar al nombre

                  
                  Ejemplo: (obtener los titulos de los libros con más de 600 páginas)
                  /catalogo/libro[paginas > 600]/titulo
                

Si hay varios resultados se puede indicar el libro con:


                  //libro[1] – escoge el primer libro
                  //libro[last()] - escoge el ultimo
                

Si se necesita varios predicados se pueden escribir seguidos, pero teniendo en cuenta de que cada uno restringe los resultados del anterior como si estarían encadenados con el operador AND

                  
                  //libro[editorial = “Multimedia][paginas = 500]/titulo/text()
                

Para indicar los elementos que no tienen algunos atributos se utiliza not(@atributo)

                  
                  Ejemplo: //libro[not(@fechaPublicación)]
                

También podemos sacar información de dos nodos distintos, usando dos condiciones, utilizando el operador lógico or |

 
                  
                  Ejemplo: //pelicula[publico =”Gladiator”]/nombre | //pelicula[publica = “Forest Gump”]/nombre
                


Siguiente
Atras