Definiowanie typów dokumentówCzęść 2. Przestrzenie nazw, XML Schema
2005-10-13 Definiowanie typów dokumentów – część 2: Przestrzenie nazw, XML Schema 2
Przestrzenie nazw
• Problem:– ta sama nazwa oznacza dwa różne byty w różnych dokumentach,
– dokumenty te są powiązane (np. wspólnie przetwarzane, jeden zanurzony w drugim, itp.)
• Rozwiązanie: przestrzeń nazw (ang. namespace):– grupa nazw oddzielona (składniowo i semantycznie) od innych nazw.
• Status:– rekomendacja W3C z 14 stycznia 1999 r,
– XML 1.0 (w tym DTD) nie wspierają przestrzeni nazw,
– nowsze standardy (XML Schema, XSL, XLink, ...) wspierają przestrzenie nazw.
2005-10-13 Definiowanie typów dokumentów – część 2: Przestrzenie nazw, XML Schema 3
Nazwy przestrzeni nazw
• Identyfikatory URI, np:– http://www.w3.org/XSLT/Transform/1.0– http://szz.mimuw.edu.pl/osoby– urn:szz:mimuw
• Nazwy przestrzeni nazw:– nie muszą wskazywać konkretnych zasobów,
– pełnią funkcję unikatowych identyfikatorów,
– są porównywane jako napisy (istotna jest wielkość liter).
• Wykorzystanie w dokumentach XML:– odwzorowanie na kilkuznakowy prefiks,
– poprzedzanie nazw prefiksem.
2005-10-13 Definiowanie typów dokumentów – część 2: Przestrzenie nazw, XML Schema 4
Użycie przestrzeni nazw w XML-u
<os:osoba xmlns:os="http://szz.mimuw.edu.pl/osoby" xmlns:inst="http://szz.mimuw.edu.pl/instytucje" xmlns:xhtml="http://www.w3.org/1999/xhtml"> <os:imie>Jan</os:imie> <os:nazwisko>Kowalski</os:nazwisko> <os:NIP>123-456-78-90</os:NIP> <os:opis>To jest <xhtml:b>bardzo</xhtml:b> fajny facet!</os:opis> <os:pracuje-w> <inst:firma> <inst:nazwa>Business Consulting</inst:nazwa> <inst:NIP>987-654-32-10</inst:NIP> </inst:firma> </os:pracuje-w></os:osoba>
2005-10-13 Definiowanie typów dokumentów – część 2: Przestrzenie nazw, XML Schema 5
Domyślna przestrzeń nazw
<osoba xmlns="http://szz.mimuw.edu.pl/osoby" xmlns:inst="http://szz.mimuw.edu.pl/instytucje" xmlns:xhtml="http://www.w3.org/1999/xhtml"> <imie>Jan</imie> <nazwisko>Kowalski</nazwisko> <NIP>123-456-78-90</NIP> <opis>To jest <xhtml:b>bardzo</xhtml:b> fajny facet!</opis> <pracuje-w> <inst:firma> <inst:nazwa>Business Consulting</inst:nazwa> <inst:NIP>987-654-32-10</inst:NIP> </inst:firma> </pracuje-w></osoba>
2005-10-13 Definiowanie typów dokumentów – część 2: Przestrzenie nazw, XML Schema 6
Widoczność przestrzeni nazw
<os:osoba xmlns:os="http://szz.mimuw.edu.pl/osoby"> <os:imie>Jan</os:imie> <os:nazwisko>Kowalski</os:nazwisko> <os:NIP>123-456-78-90</os:NIP> <os:pracuje-w> <os:firma xmlns:os="http://szz.mimuw.edu.pl/instytucje"> <os:nazwa>Business Consulting</os:nazwa> <os:NIP>987-654-32-10</os:NIP> </os:firma> </os:pracuje-w></os:osoba>
2005-10-13 Definiowanie typów dokumentów – część 2: Przestrzenie nazw, XML Schema 7
Nazwy z prefiksem i bez
• Nazwy elementów:– kwalifikowane – należą do pewnej przestrzeni nazw:
• poprzedzone prefiksem,
• nie poprzedzone prefiksem, jeśli są w zasięgu deklaracji domyślnej przestrzeni nazw;
– niekwalifikowane – nie należą do żadnej przestrzeni nazw:• nie poprzedzone prefiksem, poza zasięgiem deklaracji domyślnej przestrzeni
nazw.
• Nazwy atrybutów:– poprzedzone prefiksem (globalne) – należą do pewnej przestrzeni nazw,
– nie poprzedzone prefiksem – nie należą do żadnej przestrzeni nazw.
2005-10-13 Definiowanie typów dokumentów – część 2: Przestrzenie nazw, XML Schema 8
Nazwy elementów bez prefiksów
<osoba xmlns="http://szz.mimuw.edu.pl/osoby"> <imie>Jan</imie> <nazwisko>Kowalski</nazwisko> <NIP>123-456-78-90</NIP> <pracuje-w> <firma xmlns=""> <nazwa>Business Consulting</nazwa> <NIP>987-654-32-10</NIP> </firma> </pracuje-w></osoba>
2005-10-13 Definiowanie typów dokumentów – część 2: Przestrzenie nazw, XML Schema 9
Nazwy atrybutów
<osoba xmlns="http://szz.mimuw.edu.pl/osoby" xmlns:xlink="http://www.w3.org/1999/xlink"> <imie>Jan</imie> <nazwisko>Kowalski</nazwisko> <NIP>123-456-78-90</NIP> <pracuje-w xlink:type="simple" xlink:href="..." rodzaj="etat">Business Consulting</pracuje-w></osoba>
2005-10-13 Definiowanie typów dokumentów – część 2: Przestrzenie nazw, XML Schema 10
Atrybuty: ta sama nazwa czy nie?
• Poprawne:<x xmlns:n1="http://szz.mimuw.edu.pl/n1" xmlns:n2="http://szz.mimuw.edu.pl/n2"> <good n1:a="1" n2:a="2"/></x>
• Niepoprawne:<x xmlns:n1="http://szz.mimuw.edu.pl/n1" xmlns:n2="http://szz.mimuw.edu.pl/n1"> <bad n1:a="1" n2:a="2"/></x>
• Poprawne:<x xmlns:n1="http://szz.mimuw.edu.pl/n1" xmlns="http://szz.mimuw.edu.pl/n1"> <bad n1:a="1" a="2"/></x>
2005-10-13 Definiowanie typów dokumentów – część 2: Przestrzenie nazw, XML Schema 11
Przestrzenie nazw i schematy
• Schemat zapisuje się przy pomocy jednego lub więcej dokumentów schematów.
• Schemat deklaruje nazwy należące do zero lub więcej przestrzeni nazw.
• Dokument schematu deklaruje nazwy należące do zero lub jednej przestrzeni nazw.
• Przestrzeń nazw zawiera nazwy zadeklarowane w zero lub więcej schematach.
osoba imię
nazwisko NIP
http://szz.mimuw.edu.pl/osobyfirma
nazwaNIP
http://szz.mimuw.edu.pl/instytucje
osoby.xsd
inst.xsd
import
2005-10-13 Definiowanie typów dokumentów – część 2: Przestrzenie nazw, XML Schema 12
Dokument schematu (1)
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://szz.mimuw.edu.pl/osoby" targetNamespace="http://szz.mimuw.edu.pl/osoby">
<xsd:complexType name="OsobaTyp"> ... </xsd:complexType>
<xsd:element name="osoba" type="OsobaTyp"/> <xsd:element name="numer" type="xsd:integer"/>
...
</xsd:schema>
2005-10-13 Definiowanie typów dokumentów – część 2: Przestrzenie nazw, XML Schema 13
Dokument schematu (2)
<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:os="http://szz.mimuw.edu.pl/osoby" targetNamespace="http://szz.mimuw.edu.pl/osoby">
<complexType name="OsobaTyp"> ... </complexType>
<element name="osoba" type="os:OsobaTyp"/> <element name="numer" type="integer"/>
...
</schema>
2005-10-13 Definiowanie typów dokumentów – część 2: Przestrzenie nazw, XML Schema 14
Łączenie dokumentów schematów
• Schemat zapisuje się przy pomocy jednego lub więcej dokumentów schematów.
• Metody budowania schematu z dokumentów schematów:– instrukcje include, import i redefine,
– lokalizacje dokumentów schematów są określone w instancji,
– procesor łączy dokumenty schematów znajdujące się w predefiniowanych (skonfigurowanych) lokalizacjach,
– lokalizacje dokumentów schematu są przekazywane jako parametry wiersza poleceń.
2005-10-13 Definiowanie typów dokumentów – część 2: Przestrzenie nazw, XML Schema 15
include
• Dołączanie dokumentu schematu do docelowej przestrzeni nazw głównego dokumentu schematu.<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://szz.mimuw.edu.pl/osoby" targetNamespace="http://szz.mimuw.edu.pl/osoby"> <xsd:include schemaLocation="inst.xsd"/> ...</xsd:schema>
• Dołączany dokument musi:– mieć taką samą docelową
przestrzeń nazw jakdokument główny, lub
– nie mieć docelowejprzestrzeni nazw.
http://szz.mimuw.edu.pl/osoby
osobaimięnazwiskoNIP
osoby.xsd
firmanazwaREGON
inst.xsd
2005-10-13 Definiowanie typów dokumentów – część 2: Przestrzenie nazw, XML Schema 16
redefine
• Dołączanie dokumentu schematu do docelowej przestrzeni nazw głównego dokumentu schematu z możliwością przedefiniowania:– typów prostych i złożonych,
– nazwanych grup modeli,
– grup atrybutów.
<xsd:redefine schemaLocation="inst.xsd"/>
http://szz.mimuw.edu.pl/osoby
osobaimięnazwiskoNIPNIPTyp
osoby.xsd
firmanazwaREGONNIPTyp
inst.xsd
2005-10-13 Definiowanie typów dokumentów – część 2: Przestrzenie nazw, XML Schema 17
import
• Odwołanie do komponentów w innej przestrzeni nazw.<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://szz.mimuw.edu.pl/osoby" xmlns:inst="http://szz.mimuw.edu.pl/instytucje" targetNamespace="http://szz.mimuw.edu.pl/osoby">
<xsd:import schemaLocation="inst.xsd" namespace="http://szz.mimuw.edu.pl/instytucje"/> ...</xsd:schema>
http://szz.mimuw.edu.pl/osoby
osobaimięnazwiskoNIP
osoby.xsd
firmanazwaNIP
inst.xsd
http://szz.mimuw.edu.pl/instytucje
2005-10-13 Definiowanie typów dokumentów – część 2: Przestrzenie nazw, XML Schema 18
Instancja
• Przestrzeń nazw instancji XML Schema:http://www.w3.org/2001/XMLSchema-instance zawiera atrybuty:– nil,– type,– schemaLocation,– noNamespaceSchemaLocation.
2005-10-13 Definiowanie typów dokumentów – część 2: Przestrzenie nazw, XML Schema 19
schemaLocation
<?xml version="1.0"?><osoba xmlns="http://szz.mimuw.edu.pl/osoby" xmlns:inst="http://szz.mimuw.edu.pl/instytucje" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://szz.mimuw.edu.pl/osoby osoby.xsd http://szz.mimuw.edu.pl/instytucje inst.xsd"> <imie>Jan</imie><nazwisko>Kowalski</nazwisko> <pracuje-w> <inst:firma> <inst:nazwa>Business Consulting</inst:nazwa> <inst:NIP>987-654-32-10</inst:NIP> </inst:firma> </pracuje-w></osoba>
2005-10-13 Definiowanie typów dokumentów – część 2: Przestrzenie nazw, XML Schema 20
noNamespaceSchemaLocation
<?xml version="1.0"?><osoba xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation= "osoby.xsd"> <imie>Jan</imie> <nazwisko>Kowalski</nazwisko></osoba>
2005-10-13 Definiowanie typów dokumentów – część 2: Przestrzenie nazw, XML Schema 21
Wartości puste w instancjach
• Sposoby oznaczenia braku wartości:– brak elementu/atrybutu,
– element/atrybut występuje, ale jest pusty,
– element/atrybut występuje i zawiera specjalną wartość, np. N/A,
– element ma wartość nil.
<?xml version="1.0"?><osoba xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <imie>Jan</imie> <drugie-imie xsi:nil="true"/> <nazwisko>Kowalski</nazwisko></osoba>
• Dopuszczenie wartości nil w deklaracji elementu:<xsd:element name="drugie-imie" type="xsd:string" nillable="true"/>
2005-10-13 Definiowanie typów dokumentów – część 2: Przestrzenie nazw, XML Schema 22
Wartości domyślne i ustalone
<xsd:element name="ilość" type="xsd:positiveInteger" default="1"/><xsd:element name="cena" type="xsd:positiveInteger" fixed="5"/><xsd:attribute name="waluta" type="xsd:string" default="PLN"/><xsd:attribute name="VAT" type="xsd:string" fixed="22%"/>
Przed przetworzeniem Po przetworzeniu
<towar><cena/></towar> <towar><cena>5</cena></towar>
<towar><ilość>3</ilość></towar> <towar><ilość>3</ilość></towar>
<kwota>20</kwota> <kwota waluta="PLN" VAT="22%"> 20</kwota>
<kwota waluta="EUR">20</kwota> <kwota waluta="EUR" VAT="22%"> 20</kwota>
2005-10-13 Definiowanie typów dokumentów – część 2: Przestrzenie nazw, XML Schema 23
Typy
• Typy wg zasięgu definicji:– typy nazwane,– typy anonimowe.
• Typy wg zawartości:– typy proste,– typy złożone o zawartości:
• prostej,• elementowej,• mieszanej,• pustej.
• Typy wg pochodzenia:– typy wbudowane,– typy zdefiniowane w schemacie:
• rozszerzenia innych typów,• ograniczenia innych typów,• listy i unie.
2005-10-13 Definiowanie typów dokumentów – część 2: Przestrzenie nazw, XML Schema 24
Typy nazwane i anonimowe
• Typy nazwane:<xsd:complexType name="OsobaTyp"> <xsd:sequence> <xsd:element name="imie" type="xsd:string"/> <xsd:element name="nazwisko" type="xsd:string"/> </xsd:sequence></xsd:complexType><xsd:element name="osoba" type="OsobaTyp"/>
• Typy anonimowe:<xsd:element name="osoba"> <xsd:complexType> <xsd:sequence> <xsd:element name="imie" type="xsd:string"/> <xsd:element name="nazwisko" type="xsd:string"/> </xsd:sequence> </xsd:complexType></xsd:element>
2005-10-13 Definiowanie typów dokumentów – część 2: Przestrzenie nazw, XML Schema 25
Typy proste i złożone
• Typy proste:<xsd:simpleType name="NIPTyp"> <xsd:restriction base="xsd:string"> <xsd:pattern value="\d{3}-\d{3}-\d{2}-\d{2}"/> </xsd:restriction></xsd:simpleType>
• Typy złożone:<xsd:complexType name="OsobaTyp"> <xsd:sequence> <xsd:element name="imie" type="xsd:string"/> <xsd:element name="nazwisko" type="xsd:string"/> </xsd:sequence></xsd:complexType>
• Element może mieć typ prosty lub złożony.
• Atrybut może mieć wyłącznie typ prosty.
2005-10-13 Definiowanie typów dokumentów – część 2: Przestrzenie nazw, XML Schema 26
Typy złożone – typy zawartości
• Zawartość elementowa:<osoba PESEL="12345678901"> <imie>Jan</imie> <nazwisko>Kowalski</nazwisko></osoba>
• Zawartość prosta:<masa jm="kg">10.55</masa>
• Zawartość mieszana: <treść>Wypadek dnia <data>13.10.2001 r.</data>o godzinie <godzina>13:13</godzina>(<dzien-tygodnia>piątek</dzien-tygodnia>) miał miejsce nie z mojej winy. <poszkodowany>Alojzy M.</poszkodowany> nie miał żadnego pomysłu w którą stronę uciekać, więc go przejechałem.</treść>
• Zawartość pusta: <osoba PESEL="12345678901"/>
2005-10-13 Definiowanie typów dokumentów – część 2: Przestrzenie nazw, XML Schema 27
Definiowanie zawartości elementowej
• Grupy deklaracji elementów:– sequence,– choice,– all.
• Zagnieżdżanie grup:<xsd:complexType name="OsobaTyp"> <xsd:sequence> <xsd:element name="imie" type="xsd:string"/> <xsd:element ref="nazwisko"/> <xsd:choice> <xsd:element name="nr-dowodu" type="DowódTyp"/> <xsd:element name="nr-paszportu" type="PaszportTyp"/> </xsd:choice> </xsd:sequence></xsd:complexType>
2005-10-13 Definiowanie typów dokumentów – część 2: Przestrzenie nazw, XML Schema 28
Grupa all – ograniczenia
• Nie może zawierać innych grup (tylko deklaracje elementów i odwołania do elementów).
• Każdy element może wystąpić co najwyżej raz.• Grupa all nie może być zagnieżdżona w innej grupie.
• Zagnieżdżanie grup:<xsd:complexType name="OsobaTyp"> <xsd:all> <xsd:element name="imie" type="xsd:string"/> <xsd:element name="drugie-imie" type="xsd:string" minOccurs="0"/> <xsd:element ref="nazwisko"/> </xsd:all></xsd:complexType>
2005-10-13 Definiowanie typów dokumentów – część 2: Przestrzenie nazw, XML Schema 29
Definiowanie zawartości prostej
<xsd:complexType name="MasaTyp"> <xsd:simpleContent> <xsd:extension base="xsd:decimal"> <xsd:attribute name="jm" type="xsd:string"/> </xsd:extension> </xsd:simpleContent></xsd:complexType>
2005-10-13 Definiowanie typów dokumentów – część 2: Przestrzenie nazw, XML Schema 30
Definiowanie zawartości mieszanej
<xsd:complexType name="ZeznanieTyp" mixed="true"> <xsd:sequence> <xsd:element name="data" type="xsd:string"/> <xsd:element name="godzina" type="xsd:string"/> <xsd:element name="dzien-tygodnia" type="xsd:string"/> <xsd:element name="poszkodowany" type="xsd:string"/> </xsd:sequence></xsd:complexType>
2005-10-13 Definiowanie typów dokumentów – część 2: Przestrzenie nazw, XML Schema 31
Definiowanie zawartości pustej
<xsd:complexType name="OsobaTyp"> <xsd:attribute name="PESEL" type="PESELTyp"/></xsd:complexType>
Top Related