[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: [OT] ¿Es esto un bug de libxslt?



El Mon, 10 Nov 2014 19:36:22 +0100, José Miguel (sio2) escribió:

> Hola, listeros:

Súper-OT pero me encanta XSLT :-P

(...)

> En cambio, esto no funciona:
> 
> <xsl:number count="/fonoteca/disco[@tipo=current()/@tipo]" />
> 
> La salida que se me muestra es la misma que si hubiera escrito:
> 
> <xsl:number count="/fonoteca/disco[@tipo=./@tipo]" />
> 
> o sea, que me cuenta todos los discos. Si he entendido bien, current()
> se refiere siempre al nodo que está procesando el XSLT y no al nodo de
> referencia en la expresión XPath.

(...)

Tomemos lo que dice la normativa (v.2):

http://www.w3.org/TR/xslt20/#current-function

Creo ("creo" ojo, porque tengo el lenguaje bien oxidado) que lo que te 
falla es efectivamente el contexto el que estás procesando la regla y el 
nivel al que están los dos atributos que usas como filtro de conteo. Es 
decir, estás usando el mismo valor del atributo (tipo) en el mismo nivel 
de ahí que el resultado de las dos expresiones sea idéntico.

Fíjate en el ejemplo de la documentación:

<xsl:apply-templates select="//glossary/entry[@name=current()/@ref]"/>
                                              ^^^^^           ^^^^

@name ! @ref (distintos atributos)

Y tu expresión:

<xsl:number count="/fonoteca/disco[@tipo=current()/@tipo]" />
                                   ^^^^^           ^^^^^

@tipo = @tipo (mismo atributo)

Saludos,

-- 
Camaleón


Reply to: