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 tag este element de tip bloc?
<div> <img> <span>
<div>Web Programming and Development</div>
Care cod CSS afiseaza textul subliniat?
font-style: italic; text-decoration: underline; font-weight: 500;
h2 {
  text-decoration: underline;
}
Clic pe functia JavaScript care apeleaza o alta functie dupa un anumit timp.
insertBefore() setTimeout() querySelector()
function someFunction() { alert("CoursesWeb.net"); }
setTimeout("someFunction()", 2000);
Clic pe instructiunea care returneaza numarul total de elemente dintr-un array asociativ.
count($array) count($array, 1) strlen()
$food =["fruits" =>["banana", "mar"), "veggie" =>["ceapa", "rosie"));
$nr_food = count($food, 1);
echo $nr_food;       // 6
Indicati Viitorul Perfect la negativ al verbului din paranteze, in propozitia: "The child (to not play) by Sunday".
has't played haven't been playing will haven't played
The child will haven't played by Sunday.
- Copilul nu s-ar fi jucat pana duminica.
Indicati Viitorul Perfect pentru verbul "contar" (a povesti) la forma "Él".
habrá contado va a contar contaba
Él no habrá contado el cuento.
- El nu ar fi spus povestea.
Namespace XML - E4X

Last accessed pages

  1. Programe pentru invatare limba Spaniola (6053)
  2. Verbe neregulate din limba Engleza (15159)
  3. Obiectul Array (1216)
  4. Array - Lucru cu functii (626)
  5. Node.js Lucru cu Fisiere (808)

Popular pages this month

  1. Cursuri si Tutoriale: Engleza, Spaniola, HTML, CSS, Php-Mysql, JavaScript, Ajax (5615)
  2. Curs HTML gratuit Tutoriale HTML5 (4899)
  3. Curs PHP MySQL, Tutoriale si Scripturi PHP (4041)
  4. Curs si Tutoriale JavaScript (3930)
  5. Curs CSS Online Tutoriale CSS3 (3763)