El propósito de:
<xsl:param name="pFun" select="/.."/>
es especificar (al menos en XPath 1.0 cuyo tipo de sistema es muy débil) que el tipo del parámetro $pFun
es un nodo (o más generalmente un node- conjunto). Entonces, el lector sabe que el valor pasado para este parámetro no debe ser una cadena o un número entero.
También especifica que el valor predeterminado, si este parámetro no se ha especificado explícitamente al llamar o aplicar la plantilla, es el conjunto de nodos vacío.
Esta notación tiene una importancia principalmente documental (pero consulte la actualización al final de esta respuesta) y solo es útil en XPath 1.0 donde el tipo de sistema es débil. En XPath 2.0 se recomienda especificar explícitamente el tipo, de modo que el procesador XPath pueda realizar una mejor comprobación de tipos y el código generado pueda ser más optimizado y eficiente.
Así, en XPath 2.0/XSLT 2.0 (en este caso particular) que sería mejor para refactorizar el anterior a:
<xsl:param name="pFun" as="element()">
Hay otras variaciones de tales notación.En los primeros libros de @ Michael Kay también se pueden encontrar expresiones como:
@comment()
actualización: la expresión /..
tiene usos más prácticos que servir meramente con fines de documentación.
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="/*">
<xsl:param name="pNode"/>
<xsl:copy-of select=".|$pNode"/>
</xsl:template>
</xsl:stylesheet>
Intente aplicar esta transformación a cualquier documento XML. En nuestro caso, el más simple posible:
<t/>
El resultado es el siguiente mensaje de error Saxon (un error similar con otra XSLT 1.0 procesadores):
Error at xsl:copy-of on line 8 of file:/(Untitled):
The value is not a node-set
Transformation failed: Run-time errors were reported
Ahora reemplace:
<xsl:param name="pNode"/>
con:
<xsl:param name="pNode" select="/.."/>
y ejecutar la transformación de nuevo.
Esta vez la transformación se realiza sin un error de tiempo de ejecución.
Conclusión: La capacidad de especificar un nodo-conjunto vacío es importante en la práctica y la expresión /..
es una manera de lograr esto.