In general, Namespace e folosit in XML pentru a grupa intr-un set cu acelasi nume mai multe elemente sau atribute cu rol asemanator; e utilizat mai ales la RSS.
In fisierele XML, Namespace se defineste cu un atribut xmlns la care se atribuie cu doua-puncte (:) un prefix (sau nume) pt. Namespace si ca valoare se adauga un sir, care de obicei e o adresa URI (Uniform Resource Identifier). Sintaxa este:
                xmlns:prefix="uri"
De exemplu:

<poze xmlns:ns="https://marplo.net">
  <ns:image>img1.jpg</ns:image>
  <image>img2.png</image>
</poze>
- "ns" reprezinta numele Namespace-ului (prefixul), poate fi orice cuvant.
- "https://marplo.net" este o valoare de identificare pt. acest Namespace, poate fi orice sir de cuvinte, dar de obicei se folosesc adrese URI care pot fi si ne-valide, fara legatura cu site-ul (de ce se obisnuiesc adrese? - ei stiu).
Elementele si atributele cu acelasi nume de Namespace sunt considerate ca facand parte dintr-un acelasi grup.
Namespace poate fi declarat in elementul care-l foloseste sau in radacina, se pot defini mai multe namespace in acelasi tag.

1. Lucru cu namespace in E4X

Pentru lucru cu namespace folosind sintaxa E4X, in ActionScript exista mai multe metode a clasei XML.


De exemplu:
// Variabila cu datele XML
var galery:XML = <poze xmlns:ns="https://marplo.net">
  <ns:image>img1.jpg</ns:image>
  <image>img2.png</image>
</poze>;

trace(galery.image[0].namespace('ns'));       // https://marplo.net
trace(galery.image[1].namespace('ns'));      // Error #1010: A term is undefined

• Pentru a crea namespace in ActionScript se foloseste clasa Namespace. Iar cu proprietatile ei: prefix si uri pot fi accesate si editate numele si valoare namespace din acea instanta.
                var nume_var:Namespace = new Namespace();
- La declararea ei pot fi adaugate prefixul (numele) si valoarea pt. namespace ( new Namespace("prefix", "valoare_uri" ) ) sau pot fi setate ulterior cu proprietatile "prefix" si "uri".
Dupa ce instanta de obiect Namespace e definita, poate fi adaugata in obiectul XML cu metoda addNamespace().
In urmatorul exemplu se creaza un obiect cu date XML, simplu, cu 2 taguri in radacina si un atribut la al adoile. Se defineste un namespace care va fi adaugat in primul tag si la atributul din al doilea.
// Variabila cu datele XML
var test:XML = <root>
    <tag>Text elm1</tag>
    <tag atr="val">Elm 2</tag>
  </root>;

// Se defineste instanta cu namespace-ul
var ns1:Namespace = new Namespace('ns', 'marplo.net/flash');

// Adauga namespace-ul in obiectul XML (in tag-ul radacina)
test.addNamespace(ns1);

test.tag[0].setNamespace(ns1);         // Seteaza "ns" la primul <tag>

// Seteaza "ns" la atributul "atr" din al doilea <tag>
test.tag[0].@atr.setNamespace(ns1);
// Sau:        test.children()[1].@atr.setNamespace(ns1);

trace(test);
/* Afiseaza:
  <root xmlns:ns="marplo.net/flash">
    <ns:tag>Text elm1</ns:tag>
    <tag ns:atr="val">Elm 2</tag>
  </root>
*/
- Din rezultatul returnat de "trace()" se vede ca a fost adaugat namespace-ul in XML, la primul <tag> si la "atr".
- De observat modul in care "ns1" e adaugat la atributul din al doilea <tag>. Desi ca ordine este al doilea element, s-a folosit index [0]. Asta deoarece inainte de aceasta instructiune, primul <tag> a primit un namespace, iar "tag[index]" acceseaza elementele <tag> fara namespace, ceea ce face ca index 0 sa fie la primul tag fara namespace. Pentru a evita confuzia ce poate sa apara in astfel de cazuri, ca sa se foloseasca ordine in care sunt elementele in continutul XML, se foloseste metoda "children()".
De ex.:         test.children()[1].@atr.setNamespace(ns1);

2. Utilizare operator doua-puncte (::)

E4X contine si un operator special pentru lucrul cu nodurile (nodes) care contin namespace, operatorul doua-puncte (::).
Cu acesta se pot accesa nodurile (elemente, atribute) care folosesc acelasi namespace. Se adauga intr-o instanta de tip Namespace acele noduri, cu metoda "namespace('prefix')", dupa care pot fi accesate cu sintaxa:
                ObiectXML.instantaNamespace::nod
Se intelege mai bine din urmatorul exemplu:

// Variabila cu datele XML
var galery:XML = <poze xmlns:ns="https://marplo.net">
    <ns:image>img1.jpg</ns:image>
    <ns:image ns:title="Img 2">img2.png</image>
  </poze>

// Adauga intr-o instanta Namespace toate elementele (si atribute) cu "ns"
var name_s:Namespace = galery.namespace('ns');

trace(galery.name_s::image[0]);                     // img1.jpg
trace(galery.name_s::image[1].@name_s::title);      // Img 2
- Observati in datele XML cum se aplica instanta Namespace la elemente si atribute (ns:tag , ns:atribut), apoi, instanta "name_s" le stocheaza in ordine (ca un Array), iar accesarea lor se face cu operatorul (::), conform sintaxei de mai sus.

Folosind acest operator, elementele stocate in instanta de obiect Namespace pot fi de asemenea editate si sterse.
De exemplu:
        galery.name_s::image[1].@name_s::title = 'Alt titlu';
- Modifica valoarea atributului "title" din al doilea element <image>.
Iar instructiunea:
        delete galery.name_s::image[0];
- Sterge primul element <image>.

• Elementele cu namespace pot fie accesate fi prin metode ierarhice ( child((), children() ), fie prin instanta de obiect cu acel namespace si operatorul doua-puncte (::). Simplu, cu "element[index]" se acceseaza doar elementele fara namespace, dupa cum e aratat in urmatorul exemplu.
// Variabila cu datele XML
var test:XML = <root xmlns:ns="marplo.net/flash">
    <ns:tag>Text elm1</ns:tag>
    <tag ns:atr="val">Elm 2</tag>
  </root>

// Returneaza valoarea din primul element, folosind tag[0]
trace(test.tag[0]);          // Elm 2   (e al doilea, dar primul fara namespace)

// Returneaza valoarea din primul element, folosind children()[0]
trace(test.children()[0]);         // Text elm1

Fisierul FLA cu exemple din aceasta lectie poate fi descarcat de la: XML - E4X - Namespace.

Un Test simplu in fiecare zi

HTML
CSS
JavaScript
PHP-MySQL
Engleza
Spaniola
Care tag e folosit pentru a adauga liste cu definitii in element <dl>?
<dt> <dd> <li>
<dl>
 <dt>HTML</dt>
  <dd> - Hyper Text Markup Language</dd>
  <dd> - Limbaj de cod pentru pagini web</dd>
</dl>
Care proprietate CSS poate sa ascunda un element in pagina, lasand spatiu gol in locul lui?
display position visibility
#id {
  visibility: hidden;
}
Indicati evenimentul declansat cand se apasa clic pe un obiect in pagina.
onclick onmouseover onfocus
document.getElementById("id").onclick = function(){
  alert("http://www.MarPlo.net/");
}
Indicati variabila PHP ce contine datele din $_GET, $_POST si $_COOKIE.
$_SESSION $_GET $_REQUEST
if(isset($_REQUEST["id"])) {
  echo $_REQUEST["id"];
}
Care din urmatoarele cuvinte reprezinta un Verb?
lighting believe path
I believe in my path.
- Eu cred in calea mea.
Care din urmatoarele cuvinte reprezinta un Verb?
creer camino iluminaciĆ³n
creer = a crede; camino = cale /drum; iluminaciĆ³n = iluminare
Namespace XML - E4X

Last accessed pages

  1. Cursuri si Tutoriale: Engleza, Spaniola, HTML, CSS, Php-Mysql, JavaScript, Ajax (56118)
  2. Verbe modale - Modal verbs - CAN, COULD, MAY, MIGHT, MUST (27406)
  3. Prezentul simplu si continuu - Present Tense Simple and Continuous (52768)
  4. Exercitii engleza - English Tests and exercises - Grammar (27667)
  5. Verbele in limba engleza - Verbs (16976)

Popular pages this month

  1. Prezentul simplu si continuu - Present Tense Simple and Continuous (3734)
  2. Cursuri si Tutoriale: Engleza, Spaniola, HTML, CSS, Php-Mysql, JavaScript, Ajax (3473)
  3. Gramatica limbii engleze - Prezentare Generala (2830)
  4. Prezent perfect si Prezent perfect continuu - Present perfect and Continuous (2411)
  5. Trecutul simplu si continuu - Past Tense Simple and Continuous (2027)