mirror of
https://github.com/alexandrev/xslt-lab.git
synced 2026-09-18 19:43:16 +00:00
Gate de autorun: un atributo presente pero vacío pasa el filtro y genera errores fantasma al teclear #5
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Pedido por el usuario el 18-sep-2026 (punto 4 de la revisión de situación).
Qué pasa. En
frontend/src/lib/autoRunGate.js, el mapaREQUIREDsolo comprueba que el atributo falte (!el.hasAttribute(required)), nunca que esté vacío, y no cubrename. Así que<xsl:variable name="" select="Gran"/>—un usuario a media escritura— pasa el gate, se manda al backend y produceXTSE0020: Invalid QName {}.Es el error nº1 de XSLT 3.0, la versión que pasó del 6% al 47,4% de tasa de error. Verificado decodificando el
xslt_b64de los eventos reales de Loki.Misma familia que el trabajo ya hecho en los commits
4e1f3ffye1e3b81, un nivel más abajo: un QName vacío no puede compilar nunca, así que es un hecho y no una heurística — encaja con la filosofía del gate.Arreglo previsto: detectar atributo requerido presente pero vacío, y cubrir
nameenxsl:variable,xsl:param,xsl:template,xsl:function,xsl:key,xsl:attributeyxsl:element.Implementado en
086d984y desplegado.autoRunGate.jscomprobaba si un atributo requerido faltaba, nunca si estaba vacío, y no mirabaname. Ahora un@namevacío enxsl:variable,param,with-param,template,call-template,function,key,attribute,element,attribute-setoaccumulatorfrena la ejecución automática. Solo se comprueba el caso vacío: cualquier valor no vacío puede ser un attribute value template que aquí no se puede evaluar.Tests nuevos, incluido el caso literal sacado del log de producción (
<xsl:variable name="" select="Gran"/>), y cuatro que deben seguir pasando —nombre terminado, AVT,@nameausente donde es opcional, y un elemento que no vigilamos—. 187 tests de frontend en verde.Verificado: el bundle desplegado contiene la regla nueva. Queda pendiente de comprobar el efecto: si la tasa de error de XSLT 3.0 baja del 47,4%, era tecleo; si no, hay otra cosa y conviene reabrir.