XML-nimitila on kokoelma URI-viitteen mukaan yksilöidyistä nimistä, jotka ovat käytössä XML-asiakirjoissa elementtilajeina ja määritteiden niminä.
Xmlns-määritteen syntaksi on seuraava:
xmlns:etuliite=nimitila
Nimitila on yksilöllinen URI-osoite (esimerkiksi www.ibm.com) ja etuliite on nimitilan vastinmääritys ja osoitin.
Seuraavassa asiakaselementtimäärityksessä on kirjanpito-osaston nimitilan (acct) määritys, jotta elementin tunnisteet erottuvat muiden yrityssovellusten luomista elementtitunnisteista:
<acct:customer xmlns:acct="http://www.my.com/acct-REV10"> <acct:name>Corporation</acct:name> <acct:order acct:ref="5566"/> <acct:status>invoice</acct:status> </acct:customer>
Ensimmäisen rivin nimitilamäärityksessä etuliitteen arvoksi on määritetty nimitila http://www.my.com/acct-REV10. Tätä etuliitettä on käytetty elementtien nimissä, kuten asiakkaan nimessä, elementtien liittämiseen nimitilaan. Toinen sovellus, kuten toimitusjärjestelmä (ful), voi liittää asiakaselementteihinsä toisen nimitilan:
<ful:customer xmlns:ful="http://www.your.com/ful"> <ful:name>Corporation</ful:name> <ful:order ful:ref="A98756"/> <ful:status>shipped</ful:status> </ful:customer>
Näitä molempia tietorakenteita käsittelevä sovellus pystyy nyt käsittelemään kirjanpito- ja toimitusosaston tietoja eri tavalla. Järjestelmässä on oletusnimitila. Se otetaan käyttöön, jos nimitilamäärityksessä ei ole paikallista nimeä:
<acct:customer xmlns="http://www.my.com/acct-REV10" xmlns:acct="http://www.my.com/acct-REV10 "> <name>Corporation</name> <order acct:ref="5566"/> <status>invoice</status> </customer>
Tässä esimerkissä kaikki asiakastietueen tunnisteet on tarkennettu sijaitseviksi nimitilassa http://www.my.com/acct-REV10. Erillisiä etuliitteitä ei tarvita, koska käytössä on oletusnimitila. Huomaa, että oletusnimitila voi olla käytössä minkä tahansa määritteen määrityksessä.
Seuraavassa XML-skeemassa skeeman oletusnimitilaksi on määritetty XML-skeeman vakionimitila http://www.w3.org/2001/XMLSchema ja käytössä on lisäksi skeemakohtainen nimitila http://www.ibm.com.
<?xml version="1.0"?> <schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.ibm.com" xmlns:TestSchema="http://www.ibm.com"> <simpleType name="ZipCodeType"> <restriction base="integer"> <minInclusive value="10000"/> <maxInclusive value="99999"/> </restriction> </simpleType> <!--elementtimääritykset ohitettu--> </schema>
Jos oletetaan, että tämä XML-skeema tallennetaan nimellä C:\temp\TestSchema.xsd, sen mukaan tarkistettava XML-mallitiedosto olisi seuraava:
<?xml version="1.0"?> <x:addressList xmlns:x="http://www.ibm.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.ibm.com file:///C:/temp/TestSchema.xsd"> xsi:schemaLocation="http://www.ibm.com file:///C:/temp/TestSchema.xsd"> <x:address> <x:street>x:Vangerowstrasse</x:street> <x:zipCode>69115</x:zipCode> <x:city>x:Heidelberg</x:city> </x:address> <x:address> <x:street>x:Bernal Road</x:street> <x:zipCode>90375</x:zipCode> <x:city>x:San Jose</x:city> </x:address> </x:addressList>
Kohdenimitila määrittää nimitilan, johon elementin ja sen nimen välinen liitos on määritetty. Esittelyissä tämä liitos määrittää skeeman mukaisten XML-tiedostojen sisältämien elementtien nimitilan. Skeeman tuontiin käytettävässä XML-tiedostossa on oltava viite skeeman kohdenimitilaan schemaLocation-määritteen arvona. Mikäli kohdenimitila ja varsinainen nimitila eivät ole sama, siitä aiheutuu skeeman tarkistusvirhe. Esimerkissä kohdenimitila on http://www.ibm.com, joka on määritetty XML-skeematiedostoon ja johon on kaksi viitettä XML-tiedostossa. Jos näiden kolmen esiintymän välillä on ristiriitoja, siitä aiheutuu tarkistusvirhe.
Seuraavissa esimerkeissä on kuvattu, miten kohdenimitilat ja nimitilojen etuliitteet toimivat XML-skeemoissa ja niitä vastaavissa XML-ilmentymäasiakirjoissa.
XML-skeema:
<?xml version="1.0"?> <schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.ibm.com" xmlns:x="http://www.ibm.com"> <complexType name="AddressType"> <sequence> <element name="name" type="string"></element> </sequence> </complexType> <element name="MyAddress" type="x:AddressType"></element> </schema>
Tämän skeeman perusteella luotu kelvollinen XML-ilmentymäasiakirja on seuraavanlainen. Paikalliset elementit ja määritteet ovat tarkentamattomia.
<?xml version="1.0"?> <x:MyAddress xmlns:x="http://www.ibm.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.ibm.com x.xsd "> <name>Peter Smith</name> </x:MyAddress>
Kun paikalliset elementit (kuten name) ja määritteet ovat tarkentamattomia XML-tiedostossa, vain juurielementti on tarkennettu. Tämän takia esimerkissä on määritetty juurielementille MyAddress nimitilan etuliite x, joka on liitetty nimitilaan http://www.ibm.com, mutta x-etuliitettä ei ole liitetty paikalliseen elementtiin name.
<?xml version="1.0"?> <schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.ibm.com" xmlns:x="http://www.ibm.com" elementFormDefault="qualified"> <complexType name="AddressType"> <sequence> <element name="name" type="string"></element> </sequence> </complexType> <element name="MyAddress" type="x:AddressType"></element> </schema>
Tämän skeeman perusteella luotu kelvollinen XML-ilmentymäasiakirja on seuraavanlainen. Paikalliset elementit ja määritteet ovat tarkennettuja, koska elementFormDefault-määrite on määritetty XML-skeemaan tarkennetuksi.
<?xml version="1.0"?> <x:MyAddress xmlns:x="http://www.ibm.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.ibm.com x.xsd "> <x:name>Peter Smith</x:name> </x:MyAddress>
Tässä esimerkissä nimitilan etuliite x on liitetty sekä juurielementtiin MyAddress että paikalliseen elementtiin name, joten ne on liitetty nimitilaan http://www.ibm.com.
Tämä XML-skeema lisää seuraavan määritteen:
xmlns:xsd="http://www.w3.org/2001/XMLSchemaSen seurauksena kaikkien XML-skeemakielen avulla määritettyjen rakenteiden tarkenteena on oltava etuliite xsd. Esimerkiksi xsd:complexType ja xsd:string.
. Huomaa, että voit käyttää esittelyssä myös muita etuliitteitä, joita ovat xs ja foobar.
Voit määrittää tämän etuliitteen XML-skeeman oletusasetussivulla. Lisätietoja on aiheeseen liittyvissä tehtävissä.
Kaikki käyttäjän määrittämät lajit kuuluvat nimitilaan http://www.ibm.com määritteen targetNamespace mukaisesti ja niiden etuliite on x määritteen xmlns:x mukaisesti.
<?xml version="1.0"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.ibm.com" xmlns:x="http://www.ibm.com"> <xsd:complexType name="AddressType"> <xsd:sequence> <xsd:element name="name" type="xsd:string"></xsd:element> </xsd:sequence> </xsd:complexType> <xsd:element name="MyAddress" type="x:AddressType"></xsd:element> </xsd:schema>
Tämän skeeman perusteella luotu kelvollinen XML-ilmentymäasiakirja on seuraavanlainen. Paikalliset elementit ja määritteet ovat tarkentamattomia. Tarkennemääritykset ovat rakenteellisesti samanlaisia kuin esimerkissä 1.
<?xml version="1.0"?> <x:MyAddress xmlns:x="http://www.ibm.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.ibm.com x.xsd "> <name>Peter Smith</name> </x:MyAddress>
Tässä XML-skeemassa ei ole varsinaista kohdenimitilan määritystä. Tällaisessa tapauksessa on suositeltavaa lisätä kaikkiin XML-skeemarakenteisiin tarkenteeksi erillinen etuliite, kuten xsd. Tämän skeeman määritysten ja esittelyiden (esimerkiksi AddressType) viitteissä ei ole nimitilatarkennetta, koska nimitilan etuliitettä ei ole.
<?xml version="1.0"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:complexType name="AddressType"> <xsd:sequence> <xsd:element name="name" type="xsd:string"></xsd:element> <xsd:element name="name" type="xsd:string"></xsd:element> <xsd:element name="name" type="xsd:string"></xsd:element> </xsd:sequence> </xsd:complexType> <xsd:element name="MyAddress" type="AddressType"></xsd:element> </xsd:schema>
Skeeman perusteella luotu kelvollinen XML-ilmentymäasiakirja on seuraavanlainen. Kaikki elementit ovat tarkentamattomia.
<?xml version="1.0"?> <MyAddress xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="x.xsd"> <name>name</name> </MyAddress>
Tässä XML-skeemassa kohdenimitila on oletusnimitila. Lisäksi nimitilalle ei ole määritetty etuliitettä.
<?xml version="1.0"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.ibm.com" xmlns="http://www.ibm.com"> <xsd:complexType name="AddressType"> <xsd:sequence> <xsd:element name="name" type="xsd:string"></xsd:element> </xsd:sequence> </xsd:complexType> <xsd:element name="MyAddress" type="AddressType"></xsd:element> </xsd:schema>
Skeeman perusteella luotu kelvollinen XML-ilmentymäasiakirja on seuraavanlainen:
<?xml version="1.0" encoding="UTF-8"?> <MyAddress xmlns="http://www.ibm.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.ibm.com NewXMLSchema.xsd"> <name>name</name> </MyAddress>