Altova StyleVision 2023 Enterprise Edition

La definición de una función XPath exige: (i) un nombre (una cadena de texto) y (ii) una definición (una expresión XPath).

 

Además puede definir parámetros para la función. Una función XPath definida por el usuario también puede tener un tipo devuelto opcional, que se especifica seleccionando un tipo de la lista desplegable del cuadro combinado Tipo de valor devuelto en el cuadro de diálogo "Funciones XPath"(imagen siguiente). Un tipo devuelto sirve para comprobar si el tipo de datos del valor devuelto coincide  con del tipo de datos seleccionado. Recuerde que el valor devuelto no se convierte en el tipo de datos seleccionado. Si hay un conflicto entre los tipos de datos, se devuelve un error. Elegir el tipo devuelto es opcional y, por tanto, si no especifica el tipo devuelto, no se realiza ninguna comprobación de tipos.

 

Una vez creada, la función XPath definida por el usuario se puede usar en cualquier parte del diseño. En la hoja de estilos XSLT, la función se crea como elemento xsl:function, que es un elemento secundario del elemento xsl:stylesheet (ver ejemplo siguiente).

 

<xsl:stylesheet>

  ...

  <xsl:function name="sps:Stock">

 <xsl:sequence select="\$XML/Trades/Stock[@name=\$XML/Trades/Selection/Stock]"/>

  </xsl:function>

  <xsl:function name="sps:Average" as="xs:decimal">

 <xsl:param name="a" as="xs:integer"/>

 <xsl:param name="b" as="xs:integer"/>

 <xsl:param name="c" as="xs:integer"/>

 <xsl:sequence select="avg( (\$a, \$b, \$c) )"/>

 </xsl:function>

</xsl:stylesheet>

 

La función sps:Stock de la imagen siguiente y del fragmento de código anterior devuelve el elemento /Trades/Stock que tiene un atributo name cuyo valor coincide con el contenido del elemento /Trades/Selection/Stock. La función sps:Average del fragmento de código anterior devuelve la media de los tres valores de parámetro de entrada. La definición de la función usa la función XPath 2.0/3.0 avg(). El tipo de datos devuelto debe ser del tipo xs:decimal, que es el tipo de datos devuelto por la función avg() cuando se evalúan valores de entrada de tipo xs:integer. Si se especifica el tipo devuelto al definir la función, entonces se comprueba el tipo de datos del valor devuelto para ver si coincide con el tipo especificado. Si no coincide, se devuelve un error.

 

XPFxDlg01

 

Definir la función

Para definir una función haga clic en el icono Plus de la lista Funciones XPath de la Estructura del esquema o de la Estructura del diseño. Esto abre el cuadro de diálogo "Funciones XPath" (imagen anterior). Si desea editar una función ya existente, haga doble clic en el nombre de la función en la lista Funciones XPath. Después escriba un nombre y una definición para la función en el panel Cuerpo de la función del cuadro de diálogo "Funciones XPath" (imagen anterior). Si quiere, también puede introducir definiciones de parámetros (ver los dos apartados siguientes Parámetros y secuencias yParámetros y nodos para más información). Además puede especificar el tipo devuelto de la función (ver más arriba).

 

Lo más importante que debe tener en cuenta cuando escriba la expresión XPath que define la función XPath es que no hay nodo de contexto para la expresión XPath. Si la expresión XPath debe encontrar un nodo, entonces puede indicar el nodo de contexto de la expresión de dos maneras distintas:

 

1.La expresión XPath comienza con la raíz de documento. La raíz de documento se especifica en el primer paso de la expresión XPath como \$XML. Por ejemplo, la expresión XPath \$XML/Trades/Stock[1] encuentra el primer elemento secundario Stock del elemento /Trades. StyleVision define la variable \$XML (que encuentra la raíz de documento del esquema principal) a nivel global en todos los diseños SPS.

2.El nodo de contexto se puede pasar como parámetro. Para más información consulte el apartado Parámetros y nodos.

 

En algunos casos se devuelve un error:

 

Cuando se define un parámetro pero no se utiliza en el cuerpo de la definición.

Cuando el tipo de datos del valor devuelto por la función no coincide con el tipo devuelto definido por el usuario para la función.

Cuando una función del SPS contiene un error, se genera un error XSLT para todo el diseño, aunque no se llame a la función que contiene el error. Sin embargo, no olvide que puede deshabilitar una función con solo desactivar su casilla en la lista Funciones XPath. Al deshabilitarla, la función no se incluye en el documento XSLT generado a partir del diseño. De este modo puede excluir expresiones XPath con errores de la hoja de estilos XSLT y evitar que se generen errores XSLT.

 

© 2017-2023 Altova GmbH