Altova StyleVision 2025 Professional Edition

Cuando use parámetros en funciones XPath que encuentran nodos, debe tener en cuenta que la función no tiene nodo de contexto, independientemente de la posición desde la que se llame a la función en el diseño. El nodo de contexto se puede suministrar bien en la expresión XPath que se usa para definir la función (en el panel Cuerpo de la función) o bien en la expresión XPath que se usa para llamar a la función. En este último caso, el contexto se puede aportar mediante argumentos en la llamada a función.

 

Por ejemplo, imagine la función XPath definida por el usuario Stock(), que tiene definidos los tres parámetros que aparecen en la imagen siguiente.

 

XPFxParams

 

La definición del cuerpo de la función es $ContextStock[@name=$Selection]/$StockInfo, que usa los tres parámetros pero no incluye información sobre el nodo de contexto. La información sobre el nodo de contexto se puede dar en la expresión XPath que llama a la función. Por ejemplo:

 

 sps:Stock( $XML/Trades/Stock, $XML/Trades/Selection/Stock, @name )

 

La llamada a función tiene tres argumentos, cuyos valores aportan la información de contexto o el localizador de nodos. También podría usar estas expresiones XPath como llamada a función, que dan el mismo resultado:

 

 sps:Stock( /Trades/Stock, /Trades/Selection/Stock, @name )

 sps:Stock( /Trades/Stock, //Selection/Stock, @name )

 

La variable $XML, que devuelve la raíz de documento, puede omitirse de las llamadas a función desde componentes de diseño porque el nodo de contexto se conoce en las expresiones XPath de los componentes de diseño.

 

Observe que en la llamada a función del ejemplo anterior hay tres argumentos de entrada que equivalen respectivamente a los tres parámetros definidos para la función XPath definida por el usuario:

 

$ContextStock = $XML/Trades/Stock (el elemento /Trades/Stock)

$Selection = $XML/Trades/Selection/Stock (el elemento /Trades/Selection/Stock)

$StockInfo = @name

 

La expresión XPath de la definición de función es:

 

 $ContextStock[@name=$Selection]/$StockInfo

 

Cuando se reemplazan los argumentos de entrada, la expresión XPath de la definición de la función se convierte en:

 

 $XML/Trades/Stock[@name=$XML/Trades/Selection/Stock]/@name

 

Es importante tener en cuenta que lo que se pasa a la función son los conjuntos de nodos y no las cadenas de texto.

 

De este modo se pasa el nodo de contexto y los pasos de búsqueda a la función. A partir de ese momento la función se puede evaluar para encontrar y devolver los nodos necesarios.

 

© 2018-2024 Altova GmbH