Unul din avantajele majore ale utilizarii schemelor XML il reprezinta numarul mare de tipuri de date disponibile. Schemele XML permit utilizarea a nu mai putin de 44 de tipuri de date predefinite, din care 19 primitive.
In schemele XML sunt disponibile urmatoarele tipuri de date predefinite primitive:
Tip date | Observatii |
---|---|
string | sir de caractere |
boolean | true, false, 1, 0 |
decimal | −1.23, 0, 123.4, 78.0 |
float | numere reale in virgula mobila pe 32 biti; -1E4, 1267.43233E12, 12.78e-2, 12 , -0, 0 |
double | numere reale in virgula mobila pe 64 biti; -1E4, 1267.43233E12, 12.78e-2, 12 , -0, 0 |
duration | PnYnMnDTnHnMnS; P20Y5M2DT01H15M5S |
dateTime | YYYY-MM-DDThh:mm:ss; 2002-10-10T12:00:00-05:00 |
time | hh:mm:ss; 23:01:45 |
date | YYYY-MM-DD; 2009-03-11 |
gYearMonth | YYYY-MM; 1999-05 |
gYear | YYYY; 2007 |
gMonthDay | MM-DD; 03-30 |
gDay | DD; 02 |
gMonth | MM; 12 |
hexBinary | date binare in format hexazecimal; 0FB7 |
base64Binary | date binare in baza 64; |
anyURI | https://uncoded.ro |
QName | nume calificat (qualified name); prefix:nume_element |
NOTATION | tip atribut XML; unul sau mai multe denumiri de notatii |
De asemenea, la nivelul schemelor XML mai sunt disponibile si o serie de tipuri de date predefinite derivate.
Tip date | Observatii |
---|---|
integer | -126789, 0, 126789 |
nonPositiveInteger | 0, -1, -126789 |
negativeInteger | 0, -1, -126789 |
long | -9223372036854775808 .. 9223372036854775807 |
int | -2147483648 .. 2147483647 |
short | -32768 .. 32767 |
byte | -128 .. 127 |
positiveInteger | 0, 1, 126789 |
unsignedLong | 0 .. 18446744073709551615 |
unsignedInt | 0 .. 4294967295 |
unsignedShort | 0 .. 65535 |
unsignedByte | 0 .. 255 |
normalizedString | caracterele tab, return si newline sunt convertite la spatii |
token | sir de caractere normalizat fara spatii |
language | identificator limba |
Name | nume XML |
NCName | nume calificat fara prefix |
ID | tip atribut XML; valoarea atributului identifica in mod unic o locatie din document |
IDREF | tip atribut XML; valoarea atributului contine ID-ul unui alt element din document |
IDREFS | tip atribut XML; valoarea atributului contine o lista de ID-uri ale unor elemente din document, separate prin spatiu |
ENTITY | tip atribut XML; valoarea atributului este o referinta la o entitate |
ENTITIES | tip atribut XML; valoarea atributului este o lista de referinte la entitati |
NMTOKENS | tip atribut XML; valoarea poate contine multiple valori NMTOKEN, separate prin spatiu |
Pe langa tipurile de date predefinite, orice utilizator de scheme XML are posibilitate de a defini tipuri de date simple utilizand elementul xsd:simpleType. In general, aceste tipuri de date simple sunt obtinute (derivate) prin impunerea de restrictii asupra unor tipuri de date predefinite sau chiar asupra altor tipuri simple definite de utilizatori (xsd:restriction).
De exemplu, pornind de la tipul predefinit integer pot fi create urmatoarele tipuri de date simple: cifre, respectiv CNP.
<xsd:simpleType name="cifre"> | |
<xsd:restriction base="xsd:integer"> | |
<xsd:pattern value="[0-9]" /> | |
</xsd:restriction> | |
</xsd:simpleType> |
Elementul xsd:restriction specifica un tip de baza si poate include elemente specifice schemelor XML, denumite fatete (fatete de constrangere), pentru a indica modul in care este restrans tipul de baza. O fateta defineste mai precis domeniul de valori posibile pentru un tip de date.
Pentru derivarea unor noi tipuri de date, din tipuri predefinite, utilizatorii pot apela la urmatoarele fatete:
• length: indica numarul de caractere sau numarul de elemente dintr-o lista;
• minLength: specifica numarul minim de caractere sau numarul minim de elemente dintr-o lista;
• maxLength: specifica numarul maxim de caractere sau numarul maxim de elemente dintr-o lista;
<xsd:element name="parola"> | |
<xsd:simpleType> | |
<xsd:restriction base="xsd:string"> | |
<xsd:minLength value="6" /> | |
<xsd:maxLength value="12" /> | |
</xsd:restriction> | |
</xsd:simpleType> | |
</xsd:element> |
• pattern: indica un model pe care trebuie sa il respecte datele;
<ISBN>978-973-560-1</ISBN> |
• enumeration: defineste o lista de valori posibile;
<xsd:element name="presedinte"> | |
<xsd:simpleType> | |
<xsd:restriction base="xsd:string"> | |
<xsd:enumeration value="Ion Iliescu" /> | |
<xsd:enumeration value="Gheorghe Gheorghiu Dej" /> | |
<xsd:enumeration value="Emil Constantinescu" /> | |
</xsd:restriction> | |
</xsd:simpleType> | |
</xsd:element> |
• whiteSpace: indica modul in care vor fi tratate spatiile (space, tab, newline, return); prin intermediul atributului value pot fi stabilite urmatoarele optiuni: preserve (nu este realizata o normalizare; spatiile sunt pastrate in forma lor initiala); replace (caracterele tab, newline sau return sunt inlocuite cu caracterul spatiu); collapse (secventele de caractere spatiu sunt inlocuite cu un singur caracter spatiu);
• maxInclusive: specifica limita superioara pentru valori numerice; valoarea trebuie sa fie mai mica sau egala cu maxInclusive;
• maxExclusive: specifica limita superioara pentru valori numerice; valoarea trebuie sa fie mai mica decat maxExclusive;
• minExclusive: specifica limita inferioara pentru valori numerice; valoarea trebuie sa fie mai mare decat minExclusive;
• minInclusive: specifica limita inferioara pentru valori numerice; valoarea trebuie sa fie mai mare sau egala cu minInclusive;
• totalDigits: indica numarul de cifre permise; valoarea trebuie sa fie un numar intreg, pozitiv;
• fractionDigits: indica numarul de zecimale permise; valoarea trebuie sa fie un numar intreg, pozitiv.
<?xml version="1.0" encoding="UTF-8"?> | |
<persoana xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | |
xsi:noNamespaceSchemaLocation="inaltime.xsd"> | |
<nume>Ion Popescu</nume> | |
<inaltime>1.75</inaltime> | |
</persoana> |
Fateta pattern specifica o expresie regulata (secventa de caractere cu rol de sablon) care stabileste modelul pentru continutul unui element. In tabelul urmator sunt precizate expresiile regulate de baza utilizate in limbajul XML Schema.
Expresie | Exemplu | Observatii |
---|---|---|
\d | 1, 3, 5 | indica o cifra |
\D | \D char, text | text nu poate include cifre |
\s | Marian\sBucos | indica un caracter spatiu |
\w | \w{3} ron, usd, hi5 | caractere alfanumerice (o litera sau o cifra) |
\W | \W\d{4} @2000 | nu poate include caractere alfanumerice |
* | a*b ab, aab, b | caracterul anterior poate sa nu apara sau sa apara de mai multe ori |
? | a?b b, ab | caracterul anterior poate sa nu apara sau sa apara o singura data |
+ | a+b ab, aab, aaab | caracterul anterior apare cel putin odata |
| | a|b a sau b | separa valori optionale |
[ ] | [abc] | indica un set de caractere; indica un caracter dintre cele din lista |
[ – ] | [a-c] a, b, c | intervale de valori |
[^ ] | neaga sensul unei expresii; indica orice caracter cu exceptia celor din lista | |
. | indica orice caracter | |
{, } | \d{2,4} 66, 3451 | repetarea unui caracter de un numar precizat de ori |
Pentru a deriva un nou tip de date, in interiorul elementului xsd:simpleType mai pot fi utilizate si urmatoarele elemente:
• xsd:list: elementul (sau atributul) contine o secventa de valori delimitate prin spatiu; valorile din secventa trebuie sa corespunda tipului de baza;
• xsd:union: elementul (sau atributul) contine o valoare care se conformeaza unuia din tipurile de date specificate.
<?xml version="1.0" encoding="UTF-8"?> | |
<exchange xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | |
xsi:noNamespaceSchemaLocation="currency.xsd"> | |
<currencyFrom>RON</currencyFrom> | |
<valueFrom>47</valueFrom> | |
<currencyTo>EUR</currencyTo> | |
<valueTo>10</valueTo> | |
<currencyFav>RON EUR USD</currencyFav> | |
</exchange> |