130 likes | 289 Views
Пространства на имената. Namespaces ( Пространства на имената). XML Namespaces (пространства на имената) осигуряват начин за избягване на конфликта на имената на елементите . Конфликт на имена
E N D
Namespaces (Пространства на имената) • XML Namespaces (пространства на имената)осигуряват начин за избягване на конфликта на имената на елементите. • Конфликт на имена • Много често има конфликт на имена тогава, когато два документа използват едни и същи имена, които описват два различни по тип елемента. Какво има върху масата <table> <tr> <td>Apples</td> <td>Bananas</td> </tr> </table>
Namespaces (области на имената) Масата като мебел • Ако тези 2 XML документа се съберат заедно, то ще има конфликт на имената поради факта, че и двата документа съдържат елемента <table> с различно съдържание и дефиниция. <table> <name>African Coffee Table</name> <width>80</width> <length>120</length> </table>
Namespaces (пространства на имената) • Разрешаване на конфликта на имената с използване наPrefix Какво има върху масата, но с prefix <h:table> <h:tr> <h:td>Apples</h:td> <h:td>Bananas</h:td> </h:tr> </h:table> Масата като мебел, но сprefix <f:table> <f:name>African Coffee Table</f:name> <f:width>80</f:width> <f:length>120</f:length> </f:table>
Namespaces (пространства на имената) • В този случай няма конфликт на имената защото двата документа използват различни имена за техните елементи <table> (<h:table> и <f:table>). • С използването на prefix, се създават два различни типа елементи <table>. • Пространството от имена е група имена, принадлежащи си едно на друго.
Namespaces (пространства на имената) • Типична е ситуацията и при обединяване на два документа – XML документ ще носи дефиниран собствен префикс, а XHTML документ – ще има друг префикс. Два вида елементи: тип persи тип xhtml– те принадлежат на 2 категории (пространства на имената) <?xml version=“1.0”?> <pers:person> <pers:name> <pers:first>Ivan</pers:first> <pers:last>Ivanov</pers:last> </pers:name> <pers:position>President</pers:position> <pers:info> <xhtml:html> <xhtml:head><xhtml:title>info for Ivan Ivanov</xhtml:title> </xhtml:head> . . . </xhtml:html> </pers:info> </pers:person>
Namespaces (пространства на имената) • Префиксният подход е неудобен. Администрирането на префиксите е както администрирането на домейн имената в Интернет. • За решаване на проблема – използване на уникални Интернет домейн имена, като укажем, че URI ще се използват за префикси. <?xml version=“1.0”?> <pers:personxmlns:pers=“http://firma_x.com/pers”> xmlns:html=“http://www.w3.org/1999/xhtml”> <pers:name> <pers:first>Ivan</pers:first> <pers:last>Ivanov</pers:last> </pers:name> <pers:position>President</pers:position> <pers:info> <html:html> <html:head><html:title>info for Ivan Ivanov</html:title> </html:head> . . . </html:html> </pers:info> </pers:person> Дефинирано пространство от имена
Namespaces (пространства на имената) • Използване на Namespaces <h:tablexmlns:h="http://www.w3.org/TR/html4/"> <h:tr> <h:td>Apples</h:td> <h:td>Bananas</h:td> </h:tr> </h:table> Какво има върху масата, но сатрибут <f:tablexmlns: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> Масата като мебел, но сатрибут
Namespaces (пространства на имената) • Вместо използването само на префикси,се добавя xmlnsатрибуткъм<table> tagза да се даде на префикса на елемента специално име, което да е свързано с пространство на имена(namespace). • Атрибут на namespace • Атрибутът на namespace се разполага в началото на тага на елемента и има следния синтаксис: • В примерапространството на имената е дефинирана с Internet адрес: • xmlns:f="http://www.w3schools.com/furniture" xmlns:namespace-prefix="namespace"
Namespaces (пространства на имената) • Атрибут на namespace • W3Cnamespaceспецификациятаозначава, че областта на имената (namespace)трябва да бъдеUniform Resource Identifier (URI). • Когато областта на имената се дефинира в стартовия таг на елемента, всички елементи на по-долни нива (дъщерни) със същияпрефикс са свързани със същото пространство на имената. • Много често се използват пространства на имена като указатели към реални Web страници, съдържащи информация за областите на имената. • Опитайте да отидете на адрес: http://www.w3.org/TR/html4/.
Namespaces (пространства на имената) • Обобщени идентификатори на ресурси (Uniform Resource Identifiers) • Идентификаторът на ресурс (URI) е символен низ, който идентифицира един Internet Resource. • Най-често използваният URI еUniform Resource Locator (URL), който идентифицира Internet домейн адрес. • Друг, не така типичен URI еUniversal Resource Name (URN). URN е ресурс и при преместване на документа адресът става невалиден. Обикновено се използват URL-и. • Тъй като примерът за масата – мебел използва Internet адрес за определяне на областта на имената,можем да сме сигурни, че областта на имената е уникална.
Namespaces (пространства на имената) • Области на имената по подразбиране • Дефиниране на области на имената по подразбиране за един елемент спестява използването на префикси във всички дъщерни елементи. • Има следния синтаксис: • Областта на данни се определя от URI, а не от префикса. <element xmlns:префикс="URI"> Декларацията свързва префикса с URI <element xmlns="URI">
Namespaces (пространства на имената) • Пространства на имената по подразбиране <table xmlns="http://www.w3.org/TR/html4/"> <tr> <td>Apples</td> <td>Bananas</td> </tr> </table> Област на имената по подразбиране <table xmlns="http://www.w3schools.com/furniture"> <name>African Coffee Table</name> <width>80</width> <length>120</length> </table> Област на имената по подразбиране