Curs Flash

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 atribut face ca optiunea din <select> sa fie selectata?
checked="checked" selected="selected" disabled="disabled"
<select name="a_name">
 <option value="val1">Optiune 1</option>
 <option value="val2" selected="selected">Optiune 2</option>
</select>
Care din aceste valori CSS creaza culoare gradient pentru fundal?
contain repeat-x linear-gradient
#id {
  background: linear-gradient(top left, #1f1, #fff, #11f);
}
Care cod creaza un array in JavaScript?
[] {} new Object()
var arr = [1, "CoursesWeb.net", "MarPlo.net"];
alert(arr[2]);
Indicati functia PHP folosita pentru redirect la alta pagina.
function() header() switch()
header("Location: http://coursesweb.net/");
exit;
Indicati articolul corect la cuvantul "garden" in propozitia: "... garden is a place with flowers".
An The A
The garden is a place with flowers.
- Gradina este un loc cu flori.
Indicati articolul corect pentru cuvantul: "jardín" (gradina)
la los el
El jardín es un lugar de flores.
- Gradina e un loc cu flori.
Namespace XML - E4X

Last accessed pages

  1. Jokes - Glume, Bancuri, Humor (2) (17325)
  2. Creare Meniu Dublu (2843)
  3. PHP Functii Anonime - Closures (925)
  4. Curs si Tutoriale JavaScript (134779)
  5. Lectia 89, Recapitulare 77-78 (81)

Popular pages this month

  1. Coduri pt culori (122)
  2. Cursuri si Tutoriale: Engleza, Spaniola, HTML, CSS, Php-Mysql, JavaScript, Ajax (88)
  3. Curs HTML gratuit Tutoriale HTML5 (73)
  4. Elemente principale HTML (40)
  5. Exercitii engleza - English Tests and exercises - Grammar (39)