Namespaces   -Att kunna blanda XML-vokabulärer i samma instansdokument
Vad är namespaces? <ul><li>Ett sätt att kunna blanda olika XML-vokabulärer i samma dokument. </li></ul><ul><li>Bra för att...
Hur gör man? <ul><li>Man ”binder” ett visst prefix till en viss vokabulär (≈DTD).  </li></ul><ul><li>Elementnamn som föreg...
Exempel 1. Enkel användning av namespace <ul><li><imf:some-element xmlns:imf=”http://ifra.com/imf/”> </li></ul><ul><li><ti...
Vilket prefix? <ul><li>Man väljer själv i XML-instansen (=XML-dokument) vilket prefix man vill välja för en viss vokabulär...
Exempel 2. Prefixval <ul><li>Nedanstående är identiskt som exempel 1, men med annat valt prefix </li></ul><ul><li><banan:s...
Default namespace <ul><li>Det går även att ange en namespace som ska gälla utan att elementen behöver föregås av prefix.  ...
Exempel 3: Default Namespace <ul><li><imf xmlns=”http://foo.com/bar”> </li></ul><ul><li><title> </li></ul><ul><li>Från nam...
Prefix och bindning <ul><li>Prefixet binds genom attributet  xmlns  följt av :prefixnamn.  </li></ul><ul><li>Prefixet kan ...
Vad är ”namespacen” <ul><li>En namespace är en URI (http://…, ftp://… etc) </li></ul><ul><li>Det viktiga är att URIn är un...
Binda en namespace till en verklig URI-resurs <ul><li>Det går även att binda en namespace till en URI som är en annan än n...
Exempel 4.  Binda namespaces till en URI <ul><li><imf xmlns=&quot;http://ifra.com/imf”  xmlns:demo=”http://demo.com/imf” x...
Scope <ul><li>Ett prefix/namespace är giltigt i elementet det deklareras i samt dess ättlingar (dvs barn, barnbarn osv). <...
Exempel 5: Scope html head body title root p svg:svg svg:title svg: image p Här deklareras namespacen Giltighets- område
Validering med DTD <ul><li>Att validera ett dokument som använder olika namespaces är inte helt trivialt. </li></ul><ul><l...
Exempel 6: Validering med DTD <ul><li><!ELEMENT foo (svg:svg | head) > </li></ul><ul><li><!ATTLIST foo xlink:type CDATA #I...
Validering med XML Schemas <ul><li>XML Schemas har bättre möjligheter att blanda olika namespaces och fortfarande kunna va...
Riktigt exempel (ganska) <ul><li><imf  xmlns=&quot;http://www.ifra.com/imf” </li></ul><ul><li>xmlns:demo=&quot;http://www....
Upcoming SlideShare
Loading in...5
×

Namespaces

1,474

Published on

namespaces

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,474
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
11
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Namespaces

  1. 1. Namespaces -Att kunna blanda XML-vokabulärer i samma instansdokument
  2. 2. Vad är namespaces? <ul><li>Ett sätt att kunna blanda olika XML-vokabulärer i samma dokument. </li></ul><ul><li>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. </li></ul><ul><li>Ä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) </li></ul>
  3. 3. Hur gör man? <ul><li>Man ”binder” ett visst prefix till en viss vokabulär (≈DTD). </li></ul><ul><li>Elementnamn som föregås av detta prefix följt av ett kolon tillhör just den vokabulären. </li></ul><ul><li>Elementnamn som föregås av annat (eller inget) prefix tillhör någon annan vokabulär. </li></ul>
  4. 4. Exempel 1. Enkel användning av namespace <ul><li><imf:some-element xmlns:imf=”http://ifra.com/imf/”> </li></ul><ul><li><title> </li></ul><ul><li>default namespace </li></ul><ul><li></title> </li></ul><ul><li><imf:title> </li></ul><ul><li>Från namespacen imf </li></ul><ul><li></imf:title> </li></ul><ul><li></imf:some-element> </li></ul>
  5. 5. Vilket prefix? <ul><li>Man väljer själv i XML-instansen (=XML-dokument) vilket prefix man vill välja för en viss vokabulär. </li></ul><ul><li>Dock finns många vokabulärer där man brukar använda vissa prefix. </li></ul><ul><ul><li>svg: för Scalable Vector Graphics </li></ul></ul><ul><ul><li>xsd: för XML Schema Definition </li></ul></ul><ul><ul><li>fo: för XSL Formatting Objects </li></ul></ul>
  6. 6. Exempel 2. Prefixval <ul><li>Nedanstående är identiskt som exempel 1, men med annat valt prefix </li></ul><ul><li><banan:some-element xmlns:banan”http://ifra.com/imf/”> </li></ul><ul><li><title> </li></ul><ul><li>default namespace </li></ul><ul><li></title> </li></ul><ul><li><banan:title> </li></ul><ul><li>Från namespacen imf </li></ul><ul><li></banan:title> </li></ul><ul><li></banan:some-element> </li></ul>
  7. 7. Default namespace <ul><li>Det går även att ange en namespace som ska gälla utan att elementen behöver föregås av prefix. </li></ul><ul><li>Detta görs genom att använda attributet xmlns utan något postfix. </li></ul>
  8. 8. Exempel 3: Default Namespace <ul><li><imf xmlns=”http://foo.com/bar”> </li></ul><ul><li><title> </li></ul><ul><li>Från namespacen http://foo.bar </li></ul><ul><li></title> </li></ul><ul><li></imf> </li></ul><ul><li>Namespacen gäller alla icke-prefixade ättlingar till elementet där namespacen deklareras. </li></ul>
  9. 9. Prefix och bindning <ul><li>Prefixet binds genom attributet xmlns följt av :prefixnamn. </li></ul><ul><li>Prefixet kan vara ett ”XML name” (se boken). </li></ul><ul><li>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 . </li></ul>Prefix Local part Qualified name <imf:title>
  10. 10. Vad är ”namespacen” <ul><li>En namespace är en URI (http://…, ftp://… etc) </li></ul><ul><li>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. </li></ul><ul><li>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. </li></ul>
  11. 11. Binda en namespace till en verklig URI-resurs <ul><li>Det går även att binda en namespace till en URI som är en annan än namespace-URIn. </li></ul><ul><li>Detta kan göras med attributet schemaLocation som finns definierad i namespacen XMLSchema-instance, som brukar bindas till prefixet xsi </li></ul><ul><li>Syntaxen är ganska grötig, se följande exempel. </li></ul>
  12. 12. Exempel 4. Binda namespaces till en URI <ul><li><imf xmlns=&quot;http://ifra.com/imf” xmlns:demo=”http://demo.com/imf” xmlns:xsi= ”http://www.w3.org/2001/XMLSchema-instance” </li></ul><ul><li>xsi:schemaLocation= &quot;http://demo.com/imf http://foo.se/demo.xsd http://ifra.com/imf http://foo.se/imf.xsd&quot;> </li></ul><ul><li>Default namespace är http://ifra.com/imf som binds till adressen http://foo.se/imf.xsd . </li></ul><ul><li>Namespacen http://demo.com/imf binds till adressen http://foo.se/demo.xsd </li></ul>
  13. 13. Scope <ul><li>Ett prefix/namespace är giltigt i elementet det deklareras i samt dess ättlingar (dvs barn, barnbarn osv). </li></ul>
  14. 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. 15. Validering med DTD <ul><li>Att validera ett dokument som använder olika namespaces är inte helt trivialt. </li></ul><ul><li>DTD-definitionerna måste tillåta att element från andra namespaces får förekomma på vissa bestämda eller obestämda platser. </li></ul><ul><li>I en DTD måste ett qualified name användas i själva deklarationen. </li></ul><ul><li>Detta betyder att själva valet av prefix har betydelse. </li></ul><ul><li>Detta är en klumpig lösning. </li></ul>
  16. 16. Exempel 6: Validering med DTD <ul><li><!ELEMENT foo (svg:svg | head) > </li></ul><ul><li><!ATTLIST foo xlink:type CDATA #IMPLIED> </li></ul>
  17. 17. Validering med XML Schemas <ul><li>XML Schemas har bättre möjligheter att blanda olika namespaces och fortfarande kunna validera instansdokument. </li></ul><ul><li>Mer om detta senare. </li></ul>
  18. 18. Riktigt exempel (ganska) <ul><li><imf xmlns=&quot;http://www.ifra.com/imf” </li></ul><ul><li>xmlns:demo=&quot;http://www.demo.com/imf&quot;> </li></ul><ul><li><object action=&quot;modify&quot;> </li></ul><ul><li><PrintingJob/> </li></ul><ul><li><object_uid>17</object_uid> </li></ul><ul><li><activities> </li></ul><ul><li><activity> </li></ul><ul><li><demo:Printing>on_hold</demo:Printing> </li></ul><ul><li><reason>web break</reason> </li></ul><ul><li></activity> </li></ul><ul><li></activities> </li></ul><ul><li></object> </li></ul><ul><li></imf> </li></ul>
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×