Sunteți pe pagina 1din 6

XML namespace

• XML Namespace furnizeaza o metoda de a evita conflictele de nume in documentele


XML.
• In XML, numele elementelor sunt definite de programator.
• Acest lucru poate duce la conflicte de nume atunci cand se lucreaza cu mai mute
documente XML in aceeasi aplicatie.
• Sa consideram documentul XML doc1.xml:
<table>
<tr>
<td>Apples</td>
<td>Bananas</td>
</tr>
</table>
• Si documentul XML doc2.xml:
<table>
<name>African Coffee Table</name>
<width>80</width>
<length>120</length>
</table>
• Daca aceste documete sunt utilizate impreuna in cadrul unui document mai mare, va fi
generat un conflict de nume.
• Ambele contin elementul <table>, dar aceste elemente au semnificatii si continuturi diferite
in cele doua documente.
• Un utilizator sau o aplicatie XML nu va sti cum sa gestioneze aceste diferente.
• Conflictele de nume pot fi evitate utilizand un prefix.
• Primul document contine o tabela html si al doilea contine informatii despre mobile
(furniture):
<h:table>
<h:tr>
<h:td>Apples</h:td>
<h:td>Bananas</h:td>
</h:tr>
</h:table>
<f:table>
<f:name>African Coffee Table</f:name>
<f:width>80</f:width>
<f:length>120</f:length>
</f:table>
• In acest exemplu nu vor fi conflicte deoarece cele doua elemente <table> au nume diferite.
Atributul xmlns
Atunci cand se utilizeaza prefixe in XML, trebuie definit un namespace pentru prefix.
Namespace-ul este definit de atributul xmlns in eticheta de start a unui element.
Declaratia unui namespace are urmatoarea sintaxa: xmlns:prefix="URI".

<root>
<h:table xmlns:h="http://www.w3.org/TR/html4/">
<h:tr>
<h:td>Apples</h:td>
<h:td>Bananas</h:td>
</h:tr>
</h:table>

<f:table xmlns:f="http://www.w3schools.com/furniture">
<f:name>African Coffee Table</f:name>
<f:width>80</f:width>
<f:length>120</f:length>
</f:table>
</root>

In acest exemplu, atributul xmlns al elementului table asociaza prefixelor h: si f: namespace-uri calificate.
• Atunci cand este definit un namespace pentru un element, toate elementele copil cu acelasi prefix
sunt asociate cu acelasi namespace.
• Namespace-urile pot fi declarate in elementele in care sunt utilizate au in eleemntul root al
documentului:
<root xmlns:h="http://www.w3.org/TR/html4/"
xmlns:f="http://www.w3schools.com/furniture">
<h:table>
<h:tr>
<h:td>Apples</h:td>
<h:td>Bananas</h:td>
</h:tr>
</h:table>
<f:table>
<f:name>African Coffee Table</f:name>
<f:width>80</f:width>
<f:length>120</f:length>
</f:table>
</root>

• Parserul nu cauta informatii la adresa data in declaratia namespace-ului. Scopul acesteia este de a da
namespace-ului un nume unic.
• De regula adresa contine informatii despre namespace.
Uniform Resource Identifier (URI)
• Un Uniform Resource Identifier (URI) este un sir de caractere care identifica o resursa in internet.
• Cea mai comuna URI este Uniform Resource Locator (URL) care identifica adresa unui domeniu de
internet.

Namespace-uri implicite
• Definirea unui namespace implicit permite omiterea utilizarii prefixelor in toate elementele copil.
Acesta are sintaxa:
xmlns="namespaceURI"
• Acest document XML contine informatii despre table:
<table xmlns="http://www.w3.org/TR/html4/">
<tr>
<td>Apples</td>
<td>Bananas</td>
</tr>
</table>
• iar acesta contine informatii despre mobila:
<table xmlns="http://www.w3schools.com/furniture">
<name>African Coffee Table</name>
<width>80</width>
<length>120</length>
</table>

S-ar putea să vă placă și