Parámetros en funciones XPath
A las funciones XPath definidas por el usuario se les pueden asignar parámetros. Los parámetros de la función se definen en el panel Parámetros del cuadro de diálogo "Funciones XPath" (imagen siguiente). Estos parámetros se pueden usar en la definición de la función XPath (en el panel Cuerpo de la función).
Funcionamiento de funciones XPath definidas por el usuario
Así funciona una función XPath:
1.En una llamada a función (por ejemplo, en un cálculo automático), el número de argumentos de la llamada a función debe coincidir con el número de parámetros definidos en la función (en el panel Parámetros del cuadro de diálogo "Funciones XPath", imagen siguiente). Además, el número de componentes suministrados por cada argumento (en la llamada a función) debe coincidir con el número dado en la columna Repeticiones del parámetro (imagen siguiente). Por último, si indicó una restricción de tipo de datos para el parámetro (en la columna Tipo del panel Parámetros), los valores dados por el argumento deben se de este tipo.
2.Los argumentos enviados a los parámetros de la función se utilizan en la función XPath (tal y como se defina en el panel Cuerpo de la función). El resultado obtenido al evaluar la expresión XPath se compara con la definición opcional de Tipo devuelto (imagen siguiente). Si el tipo de datos es el esperado, el resultado se usa en la expresión XPath desde la que se llamó a la función.
Orden de los parámetros
El orden de los parámetros de la función XPath definida por el usuario es importante porque cuando se llama a la función, los argumentos enviados en la llamada a función se asignan a los parámetros en el orden en el que se definieron en el panel Parámetros del cuadro de diálogo "Funciones XPath" (imagen siguiente).
De modo que si llamamos a la función XPath sps:Stock de la imagen anterior con esta expresión XPath:
sps:Stock($XML, Node1, Node2)
estos tres argumentos ($XML, Node1, Node2) se asignan en ese orden a los parámetros $ContextStock, $Selection y $StockInfo respectivamente.
Observe que los argumentos de la llamada a función están separados por comas. De esta forma, cada argumento se pasa al parámetro pertinente (de la lista del panel Parámetros).
Si quiere, puede cambiar el orden de los parámetros del panel Parámetros haciendo clic en los iconos Anexar, Insertar y Eliminar.
Tipo de datos de los parámetros
Si quiere, también puede definir el tipo de datos de los parámetros de la función XPath definida por el usuario. Si especifica un tipo de datos, el tipo de datos del argumento de entrada se compara con el tipo de datos del parámetro y, si los tipos no coinciden, se devuelve un error. Esta característica permite revisar los datos de entrada (de los argumentos de la llamada a función).
Repeticiones
Los parámetros de la función XPath definida por el usuario se pueden entender como secuencias. La propiedad Repeticiones de un parámetro especifica cuántos elementos debe suministrar el argumento correspondiente de la llamada a función para dicho parámetro.
Tanto en las definiciones de función como en las llamadas a función se utilizan comas para separar los parámetros o los argumentos, así como para separar los componentes de una secuencia. Por tanto, es importante tener en cuenta en qué contexto se usan las comas: para separar parámetros/argumentos o para separar los componentes de una secuencia.
•Con los parámetros/argumentos, puede usar paréntesis para delimitar secuencias en la definición de función (parámetros) o en la llamada a función (argumentos).
•En las secuencias los paréntesis se pasan por alto.
A este respecto debe tener en cuenta estas reglas de uso:
•Uso de paréntesis en parámetros/argumentos: Varias funciones XPath toman como argumento una sola secuencia (p. ej. las funciones avg() y count()). Si esta secuencia está enumerada por medio de comas o de operadores de intervalo, la secuencia debe ir entre paréntesis para confirmar inequívocamente que se trata de una secuencia (y no de varias secuencias separadas por comas). Por ejemplo, en la función avg((count($a), $b, $c)), la función XPath 2.0 avg() toma la secuencia (count($a),$b,$c) como argumento. Como los componentes de la secuencia están enumerados, la secuencia debe ir entre paréntesis: avg((count($a),$b,$c)). Sin los paréntesis de la secuencia, la definición de la función avg() tendría tres parámetros y eso no sería válido porque la función avg() solo toma un argumento, compuesto por una sola secuencia.
•Ningún paréntesis en parámetros/argumentos: Igualmente, la función count() toma una sola secuencia como argumento. No obstante, en el ejemplo anterior la función count($a) toma una secuencia que no es una lista de componentes separados por comas, sino que la secuencia la recupera la variable/el parámetro $a. Por tanto, no es necesario poner el argumento entre paréntesis. Es decir, la expresión count($a) es correcta.
•Uso de paréntesis y comas en llamadas a función: En una llamada a función los paréntesis deben utilizarse correctamente para que cada argumento corresponda al parámetro correcto (del panel Parámetros del cuadro de diálogo "Funciones XPath"). Por ejemplo, si una función XPath definida por el usuario llamada MyAverage() se define con la expresión XPath 2.0: avg((count($a),$b,$c)), entonces esta llamada a función sería válida: MyAverage((1,2,3),4,5). Los valores correspondientes a los tres parámetros $a, $b y $c serían la secuencia (1,2,3), la secuencia única 4, y la secuencia única 5. Si quiere puede poner las secuencias únicas entre paréntesis. El valor devuelto por la función MyAverage() es 4.