1. Namespaces -Att kunna blanda XML-vokabul辰rer i samma instansdokument
2. Vad 辰r namespaces? Ett s辰tt att kunna blanda olika XML-vokabul辰rer i samma dokument. Bra f旦r att kunna till奪ta lokala utbyggnader av vokabul辰rer, t.ex. om ett f旦retag i stort kan anv辰nda en viss vokabul辰r f旦r n奪got syfte, men saknar n奪got. ven bra i webbsammanhang, d辰r man t.ex. kan b辰dda in svg-kod i html-kod, eller kan g旦ra l辰nkar med xlink (b奪da fungerar i Firefox)
3. Hur g旦r man? Man binder ett visst prefix till en viss vokabul辰r (DTD). Elementnamn som f旦reg奪s av detta prefix f旦ljt av ett kolon tillh旦r just den vokabul辰ren. Elementnamn som f旦reg奪s av annat (eller inget) prefix tillh旦r n奪gon annan vokabul辰r.
4. Exempel 1. Enkel anv辰ndning av namespace <imf:some-element xmlns:imf=http://ifra.com/imf/> <title> default namespace </title> <imf:title> Fr奪n namespacen imf </imf:title> </imf:some-element>
5. Vilket prefix? Man v辰ljer sj辰lv i XML-instansen (=XML-dokument) vilket prefix man vill v辰lja f旦r en viss vokabul辰r. Dock finns m奪nga vokabul辰rer d辰r man brukar anv辰nda vissa prefix. svg: f旦r Scalable Vector Graphics xsd: f旦r XML Schema Definition fo: f旦r XSL Formatting Objects
6. Exempel 2. Prefixval Nedanst奪ende 辰r identiskt som exempel 1, men med annat valt prefix <banan:some-element xmlns:bananhttp://ifra.com/imf/> <title> default namespace </title> <banan:title> Fr奪n namespacen imf </banan:title> </banan:some-element>
7. Default namespace Det g奪r 辰ven att ange en namespace som ska g辰lla utan att elementen beh旦ver f旦reg奪s av prefix. Detta g旦rs genom att anv辰nda attributet xmlns utan n奪got postfix.
8. Exempel 3: Default Namespace <imf xmlns=http://foo.com/bar> <title> Fr奪n namespacen http://foo.bar </title> </imf> Namespacen g辰ller alla icke-prefixade 辰ttlingar till elementet d辰r namespacen deklareras.
9. Prefix och bindning Prefixet binds genom attributet xmlns f旦ljt av :prefixnamn. Prefixet kan vara ett XML name (se boken). I instansdokument kallas str辰ngen f旦re kolon f旦r prefix , str辰ngen efter kolon f旦r local part och hela str辰ngen f旦r qualified name . Prefix Local part Qualified name <imf:title>
10. Vad 辰r namespacen En namespace 辰r en URI (http://, ftp:// etc) Det viktiga 辰r att URIn 辰r unik, dvs att ingen annan anv辰nder just den URIn. D辰rf旦r brukar man v辰lja en namespace-URI i en dom辰n man har kontroll 旦ver. URIn beh旦ver inte peka p奪 n奪got faktiskt dokument, men det skadar inte. M奪nga parsers letar efter en DTD/Schema p奪 URIn om inget annat anges.
11. Binda en namespace till en verklig URI-resurs Det g奪r 辰ven att binda en namespace till en URI som 辰r en annan 辰n namespace-URIn. Detta kan g旦ras med attributet schemaLocation som finns definierad i namespacen XMLSchema-instance, som brukar bindas till prefixet xsi Syntaxen 辰r ganska gr旦tig, se f旦ljande exempel.
12. Exempel 4. Binda namespaces till en URI <imf xmlns="http://ifra.com/imf xmlns:demo=http://demo.com/imf xmlns:xsi= http://www.w3.org/2001/XMLSchema-instance xsi:schemaLocation= "http://demo.com/imf http://foo.se/demo.xsd http://ifra.com/imf http://foo.se/imf.xsd"> Default namespace 辰r http://ifra.com/imf som binds till adressen http://foo.se/imf.xsd . Namespacen http://demo.com/imf binds till adressen http://foo.se/demo.xsd
13. Scope Ett prefix/namespace 辰r giltigt i elementet det deklareras i samt dess 辰ttlingar (dvs barn, barnbarn osv).
14. Exempel 5: Scope html head body title root p svg:svg svg:title svg: image p H辰r deklareras namespacen Giltighets- omr奪de
15. Validering med DTD Att validera ett dokument som anv辰nder olika namespaces 辰r inte helt trivialt. DTD-definitionerna m奪ste till奪ta att element fr奪n andra namespaces f奪r f旦rekomma p奪 vissa best辰mda eller obest辰mda platser. I en DTD m奪ste ett qualified name anv辰ndas i sj辰lva deklarationen. Detta betyder att sj辰lva valet av prefix har betydelse. Detta 辰r en klumpig l旦sning.
16. Exempel 6: Validering med DTD <!ELEMENT foo (svg:svg | head) > <!ATTLIST foo xlink:type CDATA #IMPLIED>
17. Validering med XML Schemas XML Schemas har b辰ttre m旦jligheter att blanda olika namespaces och fortfarande kunna validera instansdokument. Mer om detta senare.