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.
Pentru lucru cu namespace folosind sintaxa E4X, in ActionScript exista mai multe metode a clasei XML.
// 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
// 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".
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.
// 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
<ul> <li>http://coursesweb.net/html/</li> <li>http://www.marplo.net/html/</li> </ul>
.some_class { display: list-item; }
var obj = { "courses": ["php", "javascript", "ajax"] }; var jsonstr = JSON.stringify(obj); alert(jsonstr); // {"courses":["php","javascript","ajax"]}
$strhtml = '<body><div id="dv1">CoursesWeb.net</div></body>'; $dochtml = new DOMDocument(); $dochtml->loadHTML($strhtml); $elm = $dochtml->getElementById("dv1"); echo $elm->nodeValue; // CoursesWeb.net
I`m living here. - Traiesc /Locuiesc aici.
Estoy viviendo aquĆ. - Traiesc /Locuiesc aici.