Altova MapForce 2023 Enterprise Edition

Devuelve el número de elementos de la secuencia que se está procesando. Es importante recordar que la secuencia de los elementos la determina el contexto de asignación actual, como se describe en el ejemplo siguiente.

mf-func-xpath2-last

 

Lenguajes

XQuery, XSLT 2.0, XSLT 3.0.

 

Ejemplo

Imagine que tiene que trabajar con este archivo XML de origen:

 

<Articles>
<Article>
<Name>T-Shirt</Name>
<SinglePrice>25</SinglePrice>
</Article>
<Article>
<Name>Socks</Name>
<SinglePrice>2.30</SinglePrice>
</Article>
<Article>
<Name>Jacket</Name>
<SinglePrice>57.50</SinglePrice>
</Article>
</Articles>

 

El objetivo es copiar datos en un archivo XML que tiene un esquema distinto. El recuento de todos los elementos también se debe guardar en el archivo XML de destino. Para ello puede usar una asignación como esta:

mf-func-xpath2-last-example

En el ejemplo anterior la función last devuelve la posición del último nodo del contexto primario actual y rellena el atributo count con el valor 3.

 

<items count="3">
<item>T-Shirt</item>
<item>Pants</item>
<item>Jacket</item>
</items>

 

Tenga en cuenta que el valor 3 es la posición del último elemento (y el recuento del total de elementos) en el contexto de la asignación creado por la conexión entre los elementos Article y items. Los elementos se copian en el archivo de destino aunque no exista esa conexión, pero en ese caso la función last devuelve el valor incorrecto 1 porque no tiene un contexto primario que recorrer. (Más concretamente, usaría el contexto implícito predeterminado creado entre los elementos raíz de ambos componentes, que produce una secuencia de 1 elemento y no de 3, como se esperaba).

 

Se recomienda usar la función count de la biblioteca core en lugar de la función last porque la primera tiene un argumento parent-context que permite alterar el contexto de la asignación de forma explícita.

© 2017-2023 Altova GmbH