Funciones XSLT

www.altova.com Expandir/Contraer todos Imprimir este apartado Página anterior Subir un nivel Página siguiente

Inicio >  Anexos > Funciones XSTL y XPath/XQuery > Funciones de extensión de Altova >

Funciones XSLT

Las funciones de extensión XSLT pueden utilizarse en expresiones XPath en contextos XSLT y no funcionan en contextos que no sean XSLT (por ejemplo, en contextos 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 http://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.

 

Funciones XPath

(en expresiones XPath en XSLT):

XP1 XP2 XP3.1

Funciones XSLT

(en expresiones XPath en XSLT):

Xslt1 XSLT2 XSLT3

Funciones XQuery

(en expresiones XQuery en XQuery):

XQ1 XQ3.1

 

 

 

Funciones estándar

Haga clic para expandir/contraerdistinct-nodes [altova:]

altova:distinct-nodes(node()*) como node()*     Xslt1 XSLT2 XSLT3

Toma un conjunto de nodos como entrada y devuelve el mismo conjunto menos los nodos que tengan el mismo valor (es decir, devuelve los nodos que son únicos). La comparación se hace con la función XPath/XQuery fn:deep-equal.

 

altova:distinct-nodes(country) devuelve todos los nodos secundarios country excepto los que tengan el mismo valor.

 

 

Haga clic para expandir/contraerevaluate [altova:]

altova:evaluate(ExpresiónXPath como xs:string[, ValorDe$p1, ... ValorDe$pN])     Xslt1 XSLT2 XSLT3

Toma una expresión XPath, pasada como cadena, como argumento obligatorio. Devuelve el resultado de la expresión evaluada. Por ejemplo, evaluate('//Name[1]') devuelve el contenido del primer elemento Name del documento. Observe que para pasar la expresión //Name[1] como cadena basta con ponerla entre comillas simples.

 

La función altova:evaluate puede tomar más argumentos, que son los valores de las variables del ámbito que se llaman p1, p2, p3... pN. Recuerde que (i) las variables deben definirse con nombres de tipo pX, siendo X un entero; (ii) los argumentos de la función altova:evaluate (ver firma más abajo), a partir del segundo argumento, ofrecen los valores de las variables, correspondiendo la secuencia de argumentos a la secuencia numérica de variables: p1 corresponde a pN y el segundo argumento será el valor de la variable p1, el tercer argumento al de la variable p2, y así sucesivamente; (iii) los valores de las variables deben ser de tipo item*.

 

<xsl:variable name="xpath" select="'$p3, $p2, $p1'" />

<xsl:value-of select="altova:evaluate($xpath, 10, 20, 'hi')" />

da el resultado "hi 20 10"

 

En el ejemplo anterior puede observar que:

 

El segundo argumento de la expresión altova:evaluate es el valor asignado a la variable $p1, el tercer argumento es el valor asignado a la variable $p2 y así sucesivamente.
Observe que el cuarto argumento de la función es un valor de cadena porque va entre comillas simples.
El atributo select del elemento xs:variable suministra la expresión XPath. Como esta expresión debe ser de tipo xs:string, se pone entre comillas simples.

 

 

<xsl:variable name="xpath" select="'$p1'" />
<xsl:value-of select="altova:evaluate($xpath, //Name[1])" />
El resultado es el valor del primer elemento Name.
 
<xsl:variable name="xpath" select="'$p1'" />
<xsl:value-of select="altova:evaluate($xpath, '//Name[1]')" />
El resultado es "//Name[1]"

 

 

La función de extensión altova:evaluate() es muy práctica cuando una expresión XPath de la hoja de estilos XSLT contiene partes que se deben evaluar de forma dinámica. Por ejemplo, imagine que el usuario selecciona un criterio de ordenación y este criterio se almacena en el atributo UserReq/@sortkey. En la hoja de estilos podría tener esta expresión:

 

 <xsl:sort select="altova:evaluate(../UserReq/@sortkey)" order="ascending"/>

 

La función altova:evaluate() lee el atributo sortkey del elemento secundario UserReq del primario del nodo de contexto. Imagine que el valor del atributo sortkey es Price. En ese caso, la función altova:evaluate() devuelve Price, que se convierte en el valor del atributo select:

 

 <xsl:sort select="Price" order="ascending"/>

 

Si esta instrucción sort aparece dentro del contexto de un elemento llamado Order, entonces los elementos Order se ordenan según el valor de los secundarios Price. Otra opción es que, si el valor de @sortkey fuera Date, por ejemplo, entonces los elementos Order se ordenarían según el valor de los secundarios Date. Es decir, el criterio de ordenación para Order se selecciona del atributo sortkey en tiempo de ejecución. Esto no sería posible con una expresión como:

 

 <xsl:sort select="../UserReq/@sortkey" order="ascending"/>

 

En este caso, el criterio de ordenación sería el propio atributo sortkey, no Price ni Date (ni otro contenido actual de sortkey).

 

Nota: el contexto estático incluye espacios de nombres, tipos y funciones (pero no variables) del entorno de llamada. El URI base y el espacio de nombres predeterminado se heredan.

 

Variables estáticas: <xsl:value-of select="$i3, $i2, $i1" />
El resultado es los valores de las tres variables.

 

Expresión XPath dinámica con variables dinámicas:
<xsl:variable name="xpath" select="'$p3, $p2, $p1'" />
<xsl:value-of select="altova:evaluate($xpath, 10, 20, 30)" />
El resultado es "30 20 10"

 

Expresión XPath dinámica sin variables dinámicas:
<xsl:variable name="xpath" select="'$p3, $p2, $p1'" />
<xsl:value-of select="altova:evaluate($xpath)" />
Error: no se definió la variable para $p3.

 

Haga clic para expandir/contraerencode-for-rtf [altova:]

altova:encode-for-rtf(entrada como xs:stringconservarEspaciosEnBlanco como xs:booleanconservarLíneasNuevas como xs:boolean) como xs:string     XSLT2 XSLT3

Convierte la cadena de entrada en código para RTF. Los espacios en blanco y las líneas nuevas se conservan o no dependiendo del valor booleano especificado para los correspondientes parámetros.

 

 

 

[ Subir ]

 

 

Funciones XBRL

Las funciones XBRL de Altova solo funcionan en las ediciones de los productos de Altova que son compatibles con XBRL.

 

Haga clic para expandir/contraerxbrl-footnotes [altova:]

altova:xbrl-footnotes(node()) como node()*     XSLT2 XSLT3

Toma un nodo como argumento de entrada y devuelve el conjunto de nodos de nota al pie XBRL al que hace referencia el nodo de entrada.

 

 

Haga clic para expandir/contraerxbrl-labels [altova:]

altova:xbrl-labels(xs:QNamexs:string) como node()*     XSLT2 XSLT3

Toma dos argumentos de entrada: un nombre de nodo y la ubicación del archivo de taxonomía en el que está el nodo. La función devuelve los nodos de etiqueta XBRL asociados al nodo de entrada.

 

 

[ Subir ]

 


© 2019 Altova GmbH