XML Schema
XML Schema (voluit: W3C XML Schema Definition Language (XSD)) is een taal voor het beschrijven van de structuur van XML-documenten, vastgelegd in standaarden …
XML Schema (voluit: W3C XML Schema Definition Language (XSD)) is een taal voor het beschrijven van de structuur van XML-documenten, vastgelegd in standaarden[1] van het W3C (World Wide Web Consortium). Tot nu toe zijn er twee versies gepubliceerd: 1.0 (uit 2004) en 1.1 (uit 2012). De taal is ontwikkeld als een opvolger van de DTD.
In XML-Schema kan men schema's maken voor bijvoorbeeld XML-documenten, waarmee deze documenten formeel worden gespecificeerd, en op grond waarvan zij kunnen worden gevalideerd, bijvoorbeeld door XML-validatoren. Een XML-Schema geeft hiervoor onder meer aan wat de elementen zijn van een XML-document, waar zij voorkomen, wat de kenmerken zijn waaraan ze moeten voldoen, enzovoorts. Zeer simplistisch uitgedrukt kan een XML-Schema onder meer aangeven wat voor soort tags in een XML-document mogen voorkomen.
Een XML-document kan correct (welgevormd) zijn ten aanzien van de algemene XML-standaard, maar desondanks niet valide ten aanzien van een gegeven XML-schema.
Voordeel van XSD boven DTD is dat XSD krachtiger en flexibeler is, en minder cryptisch. Verder kan een XSD zelf ook in XML worden weergegeven, in tegenstelling tot DTD. Veel specificaties zijn echter al in DTD weergegeven, en wat dat betreft heeft XSD als het ware voor een deel een inhaalslag te maken, ook wat betreft software die de standaard ondersteunt.
XML-schema's worden standaard opgeslagen in bestandsnamen met de bestandsextensie .xsd.
Schema's en Schemadocumenten
Een schema is in feite een verzameling van metadata bestaande uit een verzameling van schemacomponenten. Dit zijn voornamelijk element- en attribuutdeclaraties en complexe en eenvoudige typedefinities. Deze componenten worden meestal gemaakt door het verwerken van een verzameling van schemadocumenten waarin de brontaal van deze componenten gedefinieerd staat. Normaal gesproken worden schema documenten aangeduid als schema's.
Schemadocumenten zijn ingedeeld door een naamruimte: Alle benoemde schemacomponenten behoren tot een target namespace. Deze is een eigenschap (property) van het volledige schemadocument. Een schemadocument mag andere schemadocumenten met dezelfde naamruimte in zich opnemen en mag schemadocumenten uit een andere naamruimte importeren.
Als een XML-document wordt gevalideerd tegen een schema (beoordelen) kan het gebruikte schema als parameter opgegeven worden aan de validatie engine of er kan direct naar het juiste schema verwezen worden vanuit het betreffende XML-document door middel van twee speciale attributen: xsi:schemaLocation en xsi:noNamespaceSchemaLocation
Bij het laatste attribuut wordt ervan uitgegaan dat het te valideren document gevalideerd wordt tegen het juiste schema. Omdat er geen gebruik wordt gemaakt van een naamruimte is daar geen garantie voor.
"xsi" is bij conventie het voorvoegsel (prefix) voor een naamruimte. ("https://web.archive.org/web/20081013084129/http://www.w3.org/2001/XMLSchema-instance")
XML-Schemadocumenten hebben normaal gesproken de extensie ".xsd". Een uniek Internet Media Type (MIME type) is nog niet vastgesteld. dus "application/xml" of "text/xml" zou gebruikt moeten worden zoals omschreven in RFC 3023.[2]
Datatypen
In tegenstelling tot DTD's staat een XML-schema toe dat de inhoud van een element of attribuut gevalideerd wordt tegen een datatype. Een attribuut mag bijvoorbeeld enkel een valide datum of decimaal getal bevatten.
XSD voorziet in het gebruik van 19 primitieve datatypen (boolean, string, decimal, double, float, anyURI, QName, Notation, hexBinary, base64Binary, duration, date, time, dateTime, gYear, gYearMonth, gMonth, gMonthDay, gDay; alle in Engelse notatie). Met behulp van deze primitieve datatypen kunnen nieuwe datatypen geconstrueerd worden op drie manieren: beperking (restriction) (beperk de verzameling van toegestane waarden), lijst (list) (reeks van primitieve waarden), en vereniging (union) (Een vereniging van verschillende primitieve waarden). Binnen de specificatie zijn vijfentwintig afgeleide datatypen gedefinieerd. Andere typen kunnen door de gebruikers in hun eigen schema's gedefinieerd worden. Een overzicht van de afgeleide datatypes vind je hier: http://msdn.microsoft.com/en-us/library/ms256052(v=vs.110).aspx.
Voorbeeld van XML-Schema
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="huisdier">
<xs:complexType>
<xs:sequence>
<xs:element name="soort" type="xs:string"/>
<xs:element name="naam" type="xs:string"/>
<xs:element name="geboortedatum" type="xs:date"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Voorbeeld van een valide XML-document ten aanzien van het bovenstaande XML-Schema (huisdier.xsd):
<?xml version="1.0" encoding="UTF-8"?>
<huisdier xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="huisdier.xsd">
<soort>Kanarie</soort>
<naam>Geeltje</naam>
<geboortedatum>2000-02-15</geboortedatum>
</huisdier>
- ↑ W3C, XML Schema Current Status. W3C. Geraadpleegd op 2 mei 2013.
- ↑ RFC 3023
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.