Funciones XPath/XQuery: de secuencia
Las funciones de extensión de Altova para trabajar con secuencias pueden utilizarse en expresiones XPath y XQuery y ofrecen funciones adicionales para el procesamiento de datos. Estas funciones se pueden usar con los motores XPath 3.0 y XQuery 3.0 de Altova. Están disponibles en contextos XPath/XQuery.
Nota sobre el nombre de las funciones y lenguajes
Puede utilizar todas las funciones de extensión de Altova en sus expresiones XPath/XQuery. Con ellas conseguirá funciones adicionales no disponibles en la biblioteca de funciones estándar de XPath, XQuery y XSLT. Las funciones de extensión de Altova están en el espacio de nombres https://www.altova.com/xslt-extensions y en esta sección se presentan con el prefijo, que se supone estará enlazado al espacio de nombres señalado. Tenga en cuenta que en futuras versiones del producto algunas funciones pueden dejar de ser compatibles o su comportamiento puede cambiar. Por tanto, consulte siempre la documentación del producto para conocer el funcionamiento de estas funciones en cada versión del producto.
|
altova:attributes(NombreAtributo as xs:string) como attribute()* XP3.1 XQ3.1 Devuelve todos los atributos cuyo nombre local coincida con el nombre dado como argumento de entrada (NombreAtributo). La búsqueda tiene en cuenta el uso de mayúsculas y minúsculas y se lleva a cabo en el eje attribute::.
altova:attributes(NombreAtributo as xs:string, OpcionesBúsqueda as xs:string) como attribute()* XP3.1 XQ3.1 Devuelve todos los atributos cuyo nombre local coincida con el nombre dado como argumento de entrada (NombreAtributo). La búsqueda tiene en cuenta el uso de mayúsculas y minúsculas y se lleva a cabo en el eje attribute::. El segundo argumento es una cadena con marcas de búsqueda. Estas son las marcas disponibles:
r = habilita la búsqueda de expresiones regulares. En este caso, NombreAtributo debe ser una cadena de búsqueda de expresión regular; p = incluye el prefijo de espacio de nombres en la búsqueda. En este caso, NombreAtributo debe contener el prefijo de espacio de nombres (p. ej.: MiAtributo).
Las marcas pueden escribirse en cualquier orden y no hace falta utilizar todas. Si usa marcas no válidas, se genera un error. También puede usar una cadena vacía para el segundo argumento. Esto tiene el mismo efecto que usar solo el primer argumento. Sin embargo, no está permitido usar una secuencia vacía.
|
altova:elements(NombreElemento as xs:string) como elemento()* XP3.1 XQ3.1 Devuelve todos los elementos cuyo nombre local coincida con el nombre dado como argumento de entrada (NombreElemento). La búsqueda tiene en cuenta el uso de mayúsculas y minúsculas y se lleva a cabo en el eje child::.
altova:elements(NombreElemento as xs:string, OpcionesBúsqueda as xs:string) como elemento()* XP3.1 XQ3.1 Devuelve todos los elementos cuyo nombre local coincida con el nombre dado como argumento de entrada (NombreElemento). La búsqueda tiene en cuenta el uso de mayúsculas y minúsculas y se lleva a cabo en el eje child::. El segundo argumento es una cadena con marcas de búsqueda. Estas son las marcas disponibles:
r = habilita la búsqueda de expresiones regulares. En este caso, NombreElemento debe ser una cadena de búsqueda de expresión regular; p = incluye el prefijo de espacio de nombres en la búsqueda. En este caso, NombreElemento debe contener el prefijo de espacio de nombres (p. ej.: MiElemento).
Las marcas pueden escribirse en cualquier orden y no hace falta utilizar todas. Si usa marcas no válidas, se genera un error. También puede usar una cadena vacía para el segundo argumento. Esto tiene el mismo efecto que usar solo el primer argumento. Sin embargo, no está permitido usar una secuencia vacía.
|
altova:find-first((Secuencia ()*), (Condición( Elemento-Secuencia como xs:boolean)) como item()? XP3.1 XQ3.1 Esta función toma dos argumentos. El primero es una secuencia de uno o varios elementos de cualquier tipo de datos. El segundo argumento, Condición, es una referencia a una función XPath que toma un argumento (es decir, su aridad es 1) y devuelve un valor binario. Cada elemento de Secuencia se envía a su vez a la función a la que se hace referencia en Condición. Nota: recuerde que esta función solo toma un argumento. El primer elemento de Secuencia que consiga que la función de Condición dé true() como resultado se devuelve como resultado de find-first y la iteración se detiene.
|
altova:find-first-combination((Sec-01 como item()*), (Sec-02 como item()*), (Condición( Elem-Sec-01, Elem-Sec-02 como xs:boolean)) como item()* XP3.1 XQ3.1 Esta función toma tres argumentos:
•Los dos primeros (Sec-01 y Sec-02) son secuencias de uno o más elementos de cualquier tipo de datos. •El tercero (Condición) es una referencia a una función XPath que toma dos argumentos (su aridad es 2) y devuelve un valor binario.
Los elementos de Sec-01 y Sec-02 se pasan en pares ordenados (cada par está formado por un elemento de cada secuencia) como argumentos de la función de Condición. Los pares se ordenan de la siguiente manera: Si Sec-01 = X1, X2, X3 ... Xn Y Sec-02 = Y1, Y2, Y3 ... Yn Entonces (X1 Y1), (X1 Y2), (X1 Y3) ... (X1 Yn), (X2 Y1), (X2 Y2) ... (Xn Yn)
El primer par ordenado que consiga que la función de Condición dé como resultado true() se devuelve como resultado de find-first-combination. Recuerde que (i) si la función de Condición recorre los pares de argumentos dados y no consigue dar true() como resultado ni una vez, entonces find-first-combination devuelve Sin resultados; (ii) el resultado de find-first-combination siempre será un par de elementos (de cualquier tipo de datos) o ningún elemento.
|
altova:find-first-pair((Sec-01 como item()*), (Sec-02 como item()*), (Condición( Elem-Sec-01, Elem-Sec-02 como xs:boolean)) como item()* XP3.1 XQ3.1 Esta función toma tres argumentos:
•Los dos primeros (Sec-01 y Sec-02) son secuencias de uno o más elementos de cualquier tipo de datos. •El tercero (Condición) es una referencia a una función XPath que toma dos argumentos (su aridad es 2) y devuelve un valor binario.
Los elementos de Sec-01 y Sec-02 se pasan en pares ordenados como argumentos de la función de Condición. Los pares se ordenan de la siguiente manera: Si Sec-01 = X1, X2, X3 ... Xn Y Sec-02 = Y1, Y2, Y3 ... Yn Entonces (X1 Y1), (X2 Y2), (X3 Y3) ... (Xn Yn)
El primer par ordenado que consiga que la función de Condición dé como resultado true() se devuelve como resultado de find-first-pair. Recuerde que (i) si la función de Condición recorre los pares de argumentos dados y no consigue dar true() como resultado ni una vez, entonces find-first-pair devuelve Sin resultados; (ii) el resultado de find-first-pair siempre será un par de elementos (de cualquier tipo de datos) o ningún elemento.
|
altova:find-first-pair-pos((Sec-01 como item()*), (Sec-02 como item()*), (Condición( Elem-Sec-01, Elem-Sec-02 como xs:boolean)) como xs:integer XP3.1 XQ3.1 Esta función toma tres argumentos:
•Los dos primeros (Sec-01 y Sec-02) son secuencias de uno o más elementos de cualquier tipo de datos. •El tercero (Condición) es una referencia a una función XPath que toma dos argumentos (su aridad es 2) y devuelve un valor binario.
Los elementos de Sec-01 y Sec-02 se pasan en pares ordenados como argumentos de la función de Condición. Los pares se ordenan de la siguiente manera: Si Sec-01 = X1, X2, X3 ... Xn Y Sec-02 = Y1, Y2, Y3 ... Yn Entonces (X1 Y1), (X2 Y2), (X3 Y3) ... (Xn Yn)
La posición de índice del primer par ordenado que consiga que la función de Condición dé como resultado true() se devuelve como resultado de find-first-pair-pos. Recuerde que si la función de Condición recorre los pares de argumentos dados y no da como resultado true() ni una sola vez, entonces find-first-pair-pos devuelve Sin resultados.
|
altova:find-first-pos((Secuencia como item()*), (Condición( Elem-Sec como xs:boolean)) como xs:integer XP3.1 XQ3.1 Esta función toma dos argumentos. El primer argumento es una secuencia de uno o varios elementos de cualquier tipo. El segundo argumento (Condición) es una referencia a una función XPath que toma un argumento (su aridad es 1) y devuelve un valor binario. Cada elemento de Secuencia se envía a su vez a la función a la que se hace referencia en Condición. (Recuerde que esta función toma un solo argumento.) El primer elemento de Secuencia que consiga que la función de Condición dé como resultado true() devuelve la posición de índice que tiene en Secuencia como resultado de find-first-pos y la iteración se detiene.
|
altova:for-each-attribute-pair(Seq1 como element()?, Seq2 como element()?, Function como function()) como item()* XP3.1 XQ3.1 Los primeros dos argumentos identifican dos elementos cuyos atributos se usan para construir pares de atributos donde uno de los atributos del par se obtiene del primer elemento y el otro atributo del segundo elemento. Los pares de atributos se seleccionan basándose en que tienen el mismo nombre y se ordenan alfabéticamente por grupos. Si un atributo no tiene un atributo correspondiente en el otro elemento, entonces el par está "desarticulado", lo que significa que tiene un solo miembro. El elemento de la función (tercer argumento Function) se aplica por separado a cada par de la secuencia de pares (articulados y desarticulados) y el resultado es una secuencia de elementos.
|
altova:for-each-combination(PrimeraSecuencia como item()*, SegundaSecuencia como item()*, función(\$i,\$j){\$i || \$j} ) como item()* XP3.1 XQ3.1 Los elementos de las dos secuencias en los primeros dos argumentos se combinan de forma que el primer elemento de la primera secuencia se combina, en orden, una vez con cada elemento de la segunda secuencia. La función dada como tercer argumento se aplica a cada una de las combinaciones de la secuencia resultante y da como resultado una secuencia de elementos (véase ejemplo).
|
altova:for-each-matching-attribute-pair(Seq1 como element()?, Seq2 como element()?, Function como function()) como item()* XP3.1 XQ3.1 Los primeros dos argumentos identifican dos elementos cuyos atributos se usan para construir pares de atributos donde un atributo de cada par se obtiene del primer elemento y el otro atributo del par se obtiene del segundo elemento. Los pares de elementos se seleccionan basándose en que tienen el mismo nombre y se ordenan alfabéticamente por grupos. Si un atributo no tiene un atributo correspondiente en el otro elemento, entonces no se construye ningún par. El elemento de la función (tercer argumento Function) se aplica por separado a cada par de la secuencia de pares (articulados y desarticulados) y el resultado es una secuencia de elementos.
|
altova:substitute-empty(PrimeraSecuencia as item()*, SegundaSecuencia as item()) como item()* XP3.1 XQ3.1 Si PrimeraSecuencia está vacío, la función devuelve SegundaSecuencia. Si PrimeraSecuencia no está vacío, la función devuelve PrimeraSecuencia.
|