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 specifica metoda HTTP de trimitere (GET, POST) a datelor din formular?
action method value
<form action="script.php" method="post"> ... </form>
Ce proprietate CSS adauga umbra la chenar?
background-image box-shadow border-radius
#id {
  background-color: #bbfeda;
  box-shadow: 11px 11px 5px #7878da;
}
Clic pe functia care elimina primul element dintr-un array?
pop() push() shift()
var fruits = ["mar", "cireasa", "banana"];
fruits.shift();
alert(fruits.length);           // 2
Indicati functia cu care se poate verifica daca un anumit modul e instalat in PHP.
function() filetype() extension_loaded()
if(extension_loaded("PDO") === true) echo "PDO este valabil."
Alegeti verbul auxiliar corect care trebuie in propozitia: " ... I listen to music?".
has have Can
 Can I listen to music?
- Pot asculta muzica?
Alegeti verbul corect care trebuie in propozitia: "Me ... las frutas dulces"
están gustan gusta
Me gustan las frutas dulces.
- Imi plac fructele dulci.
Namespace XML - E4X

Last accessed pages

  1. Subjunctiv vs indicativ-prezent - substantive 2 (184)
  2. Teste spaniola - Tests y ejercicios de Español - Gramática (21141)
  3. Prepozitii - Prepositions (27987)
  4. Conditional IF - Exercitii si teste engleza incepatori (17476)
  5. Subjunctiv imperfect vs Conditional 2 (106)

Popular pages this month

  1. Exercitii engleza - English Tests and exercises - Grammar (314)
  2. Conditional IF in Limba Engleza - Fraze Conditionale (297)
  3. Cursuri si Tutoriale: Engleza, Spaniola, HTML, CSS, Php-Mysql, JavaScript, Ajax (256)
  4. Prezentul simplu si continuu - Present Tense Simple and Continuous (198)
  5. Gramatica limbii engleze - Prezentare Generala (168)