aboutsummaryrefslogtreecommitdiff
path: root/files/pt-br/archive/mozilla/xul/namespaces/index.html
diff options
context:
space:
mode:
Diffstat (limited to 'files/pt-br/archive/mozilla/xul/namespaces/index.html')
-rw-r--r--files/pt-br/archive/mozilla/xul/namespaces/index.html74
1 files changed, 74 insertions, 0 deletions
diff --git a/files/pt-br/archive/mozilla/xul/namespaces/index.html b/files/pt-br/archive/mozilla/xul/namespaces/index.html
new file mode 100644
index 0000000000..ff8d74461d
--- /dev/null
+++ b/files/pt-br/archive/mozilla/xul/namespaces/index.html
@@ -0,0 +1,74 @@
+---
+title: Namespaces
+slug: Archive/Mozilla/XUL/Namespaces
+tags:
+ - Add-ons
+ - Extensions
+translation_of: Archive/Mozilla/XUL/Namespaces
+---
+<p> </p>
+
+<p>Em adição a este documento, veja <a href="/pt-BR/docs/Web/SVG/Intensivo_de_Namespaces">Intensivo de Namespaces</a>.</p>
+
+<p><strong>Namespaces em XML</strong> fornecem uma forma de distinguir elementos duplicados e nomes de atributos. Elementos duplicados e nomes de atributos podem ocorrer quando um documento XML contêm elementos de dois ou mais esquemas XML (ou DTDs, Definição de Tipo de Documento). Citando a <a href="https://pt.wikipedia.org/wiki/Espa%C3%A7o_de_nomes">Wikipedia</a>:  "Em geral, um namespace é um recipiente abstrato fornecendo contexto para os itens ... detém e permite desambiguação de itens que tem o mesmo nome."</p>
+
+<p>Se você se sente familiar com namespaces em C++, pacotes Java, pacotes Perl, ou módulo de importação em Python, você já é familiar com o conceito de namespace.</p>
+
+<p>Um namespace é identificado por um nome únco (chamado de URI, não uma URL, apesar de poder parecer com uma URL). Um URI é qualquer string, apesar de que a maioria das pessoas escolhem um URI baseado em uma URL pois URLs são uma forma fácil de esperar por singularidade. Apesarde que não há nada prevenindo alguém de usar o namespace <code>http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul</code>, é bastante improvável que alguém iria escolhê-lo acidentalmente. Mesmo se alguém acidentalmente o escolhe, pode talvez não definir os mesmos elementos como XUL de qualquer forma (e.g., <code>&lt;textbox/&gt;</code>) em seu esquema/DTD.</p>
+
+<p>Qualquer tipo de elemento ou nome de elemento em um namespace XML pode ser identificado por seu namespace XML e seu "nome local". Juntos, estes dois definem um <em>nome qualificado</em>, ou <a class="external" href="http://www.w3.org/TR/REC-xml-names/#dt-qualname">QName</a>.</p>
+
+<p>Por exemplo, <code>&lt;xul:textbox/&gt;</code> usa um namespace chamado "xul" e um nome local "textbox". Isto o distingue de, por exemplo, <code>&lt;foobar:textbox/&gt;</code> que pode ocorrer no mesmo documento. Os namespaces <strong>xul</strong> e <strong>foobar</strong> devem ser definidos no topo do documento XML em que estão sendo usados, como:</p>
+
+<pre> &lt;foobar:algum-elemento
+ xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+ xmlns:foobar="o-namespace-foobar"&gt;
+ &lt;xul:textbox id="foo" value="bar"/&gt;
+ &lt;foobar:textbox comida-favorita="pizza"/&gt;
+ &lt;/foobar:algum-elemento&gt;
+</pre>
+
+<p>Note que misturei dois <code>&lt;textbox/&gt;</code> no mesmo documento. A única forma de distinguir que eles tem significados diferentes é com namespaces.</p>
+
+<p>Há mais uma outra coisa a saber: "namespace padrão", e é usado com elementos XUL por todo o tempo. Em documentos XUL, você normalmente vê isto:</p>
+
+<pre> &lt;window
+ id="foo"
+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"&gt;
+ ...
+ ...
+ &lt;/window&gt;
+</pre>
+
+<p>e documentos XHTML você vê isto:</p>
+
+<pre> &lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;
+ ...
+ ...
+ &lt;/html&gt;
+</pre>
+
+<p>Há uma diferença muito sutil aqui em comparação com o anterior. Antes eu escrevi <code>xmlns<strong>:xul</strong>="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"</code> mas aqui a peça <strong>:xul</strong> é omitida. Isto mostra ao analisador XML que <code>http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul</code>é o <strong>namespace padrão</strong> para o elemento e seus elementos descendentes (até que seja substituído posteriormente por um namespace padrão em um elemento descendente), e que qualquer elemento sem um namespace (ex.: sem prefixo e vírgula) pertence ao namespace padrão. Por isto que podemos escrever de forma abreviada <code>&lt;textbox/&gt;</code> ao invés de <code>&lt;xul:textbox/&gt;</code> em XUL (embora o último é tão correcto quando não usamos <code>http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul</code> como namespace padrão) -- o namespace XUL é definido como o padrão no elemento mais elevado. Em outras palavras, um namespace padrão permite um tipo de forma abreviada a ser usada por todos os descendentes de um elemento.</p>
+
+<p>Aqui vai uma pergunta: qual namespace contêm o elemento <code>foo</code> no documento XML abaixo?</p>
+
+<pre> &lt;foo/&gt;
+</pre>
+
+<p>A resposta é que é em <strong>nenhum</strong> namespace, ou alternadamente, está no namespace denotado pela string vazia:</p>
+
+<pre> &lt;foo xmlns=""/&gt;
+</pre>
+
+<p>Este segundo exemplo é semanticamente equivalente ao primeiro. This second example is semantically equivalent to the first.</p>
+
+<p>Agora, uma segunda pergunta: em quais namespaces estão os atributos <code>bar</code>, <code>baz</code> e <code>quux</code>?</p>
+
+<pre> &lt;foo bar="value"&gt;
+ &lt;element xmlns="namespace!" baz="value"&gt;
+ &lt;element quux="value"/&gt;
+ &lt;/element&gt;
+ &lt;/foo&gt;
+</pre>
+
+<p><code>bar</code> não é, obviamente, um namespace. E <code>baz</code> e <code>quux</code>? A resposta é que eles não são um namespace também. Na verdade nenhum atributo não pré-fixado é um namespace, principalmente porque XML originalmente não tinha namespaces, e todos os XML's do tempo tinham que ficar sem namespace. Isto é uma fonte de confusão geral em volta de namespaces em XML.</p>