Gustavo's profileGustavo BonanseaBlogLists Tools Help
    August 01

    Tutorial de XPath 2.0 - Parte 3

    TUTORIAL DE XPATH 2.0  -  Parte 3

     En esta parte del tutorial, la mayoría de las características descriptas corresponden solo a la versión 2.0, por lo tanto es necesario contar con un parser que la soporte para poder probar los ejemplos.

    8.    Expresiones de secuencia

    Para construir una secuencia se utiliza el operador “,” que evalúa las expresiones y concatena sus resultados. Para representar una secuencia vacía se deben utilizar paréntesis vacíos. Pueden expresarse rangos de datos utilizando el operador to. En el ejemplo 19 puede verse la secuencia de números 10, 11, 12, 13, 14 y 15, representada como la secuencia “10 to 15”.

    10 to 15

    Ejemplo 19: Secuencia de números desde el 10 al 15 incluidos.

    Libros/Libro[2]/Titulo, Libros/Libro[3]/Titulo

    Ejemplo 20: Conjunto del Titulo del segundo y tercer libro.

    (10 to 15)[2]

    Ejemplo 21: Devuelve el valor “11”

    9.           Combinaciones

    Se provee de tres operadores especiales para combinar secuencias de nodos, éstos se enumeran en la tabla 5. 

    Operaciones de combinación

    Operación

    Resultado

    union

    También se puede usar el símbolo “|”. Combina dos secuencias en una tercera que contiene todos los elementos de ellas.

    intersect

    Combina dos secuencias y retorna solo los elementos que se encuentran en ambas.

    except

    Combina dos secuencias y devuelve todos los elementos que se encuentran en la primera y no en la segunda

    Tabla 5.

    Estas operaciones se corresponden con las operaciones de la lógica de conjuntos clásica de las matemáticas.

    Libros/Libro/Titulo union (Libros/Libro/Autores/Autor/Nombre , Libros/Libro/Autores/Autor/Apellido)

    Ejemplo 22: Devuelve el título, nombre y apellido de cada uno de los libros

    10.           Expresiones Repetitivas 

    XPath posee dos construcciones para el control de flujo dentro de una expresión: una estructura repetitiva for y una estructura condicional if. La única forma iterativa contemplada en XPath es el for.

     Sintaxis

    for

    for $variable in expresion1 return expresion2

     

    sum(for $libro in Libros/Libro return ($libro/Paginas div 2))

    Ejemplo 23: Devuelve cantidad de hojas de todos los libros

    11.           Expresiones Condicionales

    Se pueden especificar instrucciones condicionales a través de las palabras claves if, then y else.

    Sintaxis

    if

    if (expresiontest) then expresionentonces sino expresionsino

     Si el valor de expresiontest es verdadero entonces retorna expresionentonces, en caso contrario retorna expresionsino.

     for $libro in Libros/Libro return concat(concat($libro/Titulo,  " "),  if ($libro/Precio/text() > 50) then "es caro" else "es barato" )

    Ejemplo 24: Expresión que devuelve el nombre del libro concatenado con “es caro” o “es barato” dependiendo si el valor del libro es superior a 50  o no.

    12.           Expresiones Cuantificadas

    Existen dos operadores especiales que sirven para cuantificar universal o existencialmente: every y some respectivamente. Los dos devuelven un resultado booleano.

     Sintaxis

    every

    every $variable in expresion1 satisfies expresion2

    some

    some $variable in expresion1 satisfies expresion2

     El primero retorna verdadero si todos los elementos de la expresion1satisfacen la expresion2, en caso contrario el resultado es falso

    El segundo retorna verdadero si algún elemento de la expresion1satisface la expresion2, en caso contrario el resultado es falso

     

    every $libro in /Libros/Libro satisfies $libro/count(Autores/Autor) > 1

    Ejemplo 25: Retorna falso, debido a que no todos los libros tienen más de un autor

     

    some $libro in /Libros/Libro satisfies $libro/count(Autores/Autor) > 1

    Ejemplo 26: Retorna verdadero, debido a que por lo menos un libro tiene más de un autor

     

    GB

    Comments

    Please wait...
    Sorry, the comment you entered is too long. Please shorten it.
    You didn't enter anything. Please try again.
    Sorry, we can't add your comment right now. Please try again later.
    To add a comment, you need permission from your parent. Ask for permission
    Your parent has turned off comments.
    Sorry, we can't delete your comment right now. Please try again later.
    You've exceeded the maximum number of comments that can be left in one day. Please try again in 24 hours.
    Your account has had the ability to leave comments disabled because our systems indicate that you may be spamming other users. If you believe that your account has been disabled in error please contact Windows Live support.
    Complete the security check below to finish leaving your comment.
    The characters you type in the security check must match the characters in the picture or audio.

    To add a comment, sign in with your Windows Live ID (if you use Hotmail, Messenger, or Xbox LIVE, you have a Windows Live ID). Sign in


    Don't have a Windows Live ID? Sign up

    Trackbacks

    The trackback URL for this entry is:
    http://misopiniones.spaces.live.com/blog/cns!2737DC89A4AAB26B!280.trak
    Weblogs that reference this entry
    • None