XSD

Az XML Schema egy a sok XML-sémanyelv közül. A W3C ajánlásával publikálták, 2001 májusában. Ez volt az első olyan sémanyelv az XML-hez, amely "Ajánlás" státuszba került a W3C által. Az XML Schema mint W3C-specifikáció és az általános XML-séma-fogalmak összekeverését elkerülendő, a specifikáció 1.1-es verziójától kezdve a W3C XSD-ként hivatkozik a nyelvre. Az XSD az "XML Schema Document" rövidítésből származik, amely egy XML Schema nyelven írt dokumentum, amely általában az "xsd" XML névtér előtagot tartalmazza.

Az XSD segítségével felírhatók olyan szabályrendszerek, melynek meg kell feleljen egy XML-dokumentum ahhoz, hogy „érvényes” legyen az adott sémában.

Az XSD története

Az XSD-re hatással volt a DTD és más korai XML-sémarendszerek, mint a DDML, SOX, XML-Data és XDR. Ezen rendszerekből vett át jellemzőket, ugyanakkor egy kompromisszum ezen rendszerek között. Az XSD publikálása és bevezetése után az XDR-t és az SOX-et használták és támogatták egy ideig. A Microsoft termékei az XDR-t használták 2006 decemberéig, az MSXML 6.0-s verziójáig, amelyben lecserélték az XDR-t az XSD-re. A Commerce One Inc. a saját maga által kifejlesztett SOX sémanyelvét használta, amíg be nem csődölt 2004-ben.

A legszembetűnőbb újdonságok az XSD-ben, melyek nem találhatók meg a DTD-ben, az a névterek használata, valamint adattípusok, melyek segítségével az attribútumok típusát megadhatjuk dátumnak vagy egész számnak az egyszerű szöveg helyett.

Az XSD 1.0-s specifikációját 2001-ben publikálták, majd 2004-ben adták ki a második kiadást, amely sok hibát javított. Az XSD 1.1-es verziója 2012 áprilisában lett W3C ajánlás.

Sémák és Sémadokumentumok

Definíció szerint a séma metaadatok egy absztrakt gyűjteménye, amely sémakomponensekből áll, amelyek főként elem- és attribútumdeklarációk valamint egyszerű és összetett típusdefiníciók. Ezeket sémadokumentumok feldolgozása közben kapjuk, amelyek ezen komponensek definícióit tartalmazza. A nyelvben viszont a sémadokumentumot is gyakran sémának nevezik.

A sémadokumentumok névterek által vannak rendszerezve: adott megnevezett sémakomponensek egy adott névtérhez tartoznak, valamint a névtér az egész sémadokumentum egy része. Egy sémadokumentum hivatkozhat más dokumentumokra ugyanabban a névtérben, és importálhat más sémadokumentumokat más névterek eléréséhez.

XML Schema dokumentumok kiterjesztése általában ".xsd". Nincs még egyedi MIME-típus az XSD-hez, tehát az RCF 3023 szerint az "application/xml" vagy "text/xml" használata szükséges hozzájuk.

Adattípusok

A DTD-kkel ellentétben XSD használata esetén egy elem vagy attribútum tartalmát egy adattípushoz lehet egyeztetni. Például egy attribútumra kiadhatunk olyan megkötést, hogy csak dátumot vagy egész számot tartalmazhat.

Az XSD 19 primitív adattípust támogat: anyURI, base64Binary, boolean, date, dateTime, decimal, double, duration, float, hexBinary, gDay, gMonth, gMonthDay, gYear, gYearMonth, NOTATION, QName, string, és time. Új adattípusokat ezen primitív adattípusok és a következő módszerek segítségével készíthetünk:

A specifikáción belül huszonöt ilyen származtatott típust találhatunk, valamint a felhasználók is hozhatnak létre saját típusokat a sémáikban.

Példa

Az alábbi egy egyszerű sémadokumentum példa arra, hogyan adhatunk meg egy címet.

<?xml version="1.0" encoding="utf-8"?> <xs:schema elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="Address"> <xs:complexType> <xs:sequence> <xs:element name="Recipient" type="xs:string" /> <xs:element name="House" type="xs:string" /> <xs:element name="Street" type="xs:string" /> <xs:element name="Town" type="xs:string" /> <xs:element name="County" type="xs:string" minOccurs="0" /> <xs:element name="PostCode" type="xs:string" /> <xs:element name="Country"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:enumeration value="IN" /> <xs:enumeration value="DE" /> <xs:enumeration value="ES" /> <xs:enumeration value="UK" /> <xs:enumeration value="US" /> </xs:restriction> </xs:simpleType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>

Itt pedig egy XML, amely megfelel ennek a sémának:

<?xml version="1.0" encoding="utf-8"?> <Address xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="SimpleAddress.xsd"> <Recipient>Mr. Walter C. Brown</Recipient> <House>49</House> <Street>Featherstone Street</Street> <Town>LONDON</Town> <PostCode>EC1Y 8SY</PostCode> <Country>UK</Country> </Address>

XML-sémák egyéb felhasználásai

Az XML-sémák elkészítésének elsődleges célja, hogy formálisan leírjunk egy XML-dokumentumot, viszont az így létrehozott sémának lehetnek egyéb felhasználásai is a validáláson kívül.

Forráskód-generálás

A séma segítségével forráskód készíthető, ennek neve XML Adatkötés. Az így generált forráskód segítségével XML-dokumentumokat objektumokként kezelhetünk a fejlesztői környezetekben.

XML-struktúra-dokumentáció készítése

A sémákat felhasználhatjuk arra, hogy egy XML-dokumentumból ember számára is jól olvasható kimenetet hozzunk létre. Ez akkor hasznos, ha a szerzők rengeteg annotációs elemet használtak fel. Az ilyen dokumentáció készítésére nincs norma, de több felhasználói eszköz is a rendelkezésünkre áll, például az Xs3p stylesheet, melynek segítségével minőségi HTML- és nyomtatott oldalakat tudunk készíteni.

Kritikák

Habár az XML-sémát nagyon sok helyen használják és elérte azokat a célokat, melyeket maga elé tűzött, mégis rengeteg kritikát kapott.

A kritikák egy jó összefoglalását James H. Clark fogalmazta meg, aki mellesleg a saját RELAX NG formátumát támogatja:

XSD 1.1

Az XSD 1.1 egy W3C-ajánlássá vált 2012 áprilisában. Ez azt jelenti, hogy a W3C által elfogadott specifikáció lett.

Az XSD 1.1 főbb új funkciói:

Kapcsolódó szócikkek

Szakirodalom

Jegyzetek

  1. XML and Semantic Web W3C Standards Timeline, 2012. február 4. . (Hozzáférés: 2012. május 19.)
  2. Removal of XDR Schema Support in MSXML 6.0. (Hozzáférés: 2010. szeptember 19.)
  3. Archivált másolat. . (Hozzáférés: 2012. május 19.)