Definiowanie typów dokumentów Część 2. Przestrzenie nazw, XML Schema

31
Definiowanie typów dokumentów Część 2. Przestrzenie nazw, XML Schema

description

Definiowanie typów dokumentów Część 2. Przestrzenie nazw, XML Schema. 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 ): - PowerPoint PPT Presentation

Transcript of Definiowanie typów dokumentów Część 2. Przestrzenie nazw, XML Schema

Page 1: Definiowanie typów dokumentów Część 2. Przestrzenie nazw, XML Schema

Definiowanie typów dokumentówCzęść 2. Przestrzenie nazw, XML Schema

Page 2: Definiowanie typów dokumentów Część 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.

Page 3: Definiowanie typów dokumentów Część 2. Przestrzenie nazw, XML Schema

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.

Page 4: Definiowanie typów dokumentów Część 2. Przestrzenie nazw, XML Schema

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>

Page 5: Definiowanie typów dokumentów Część 2. Przestrzenie nazw, XML Schema

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>

Page 6: Definiowanie typów dokumentów Część 2. Przestrzenie nazw, XML Schema

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>

Page 7: Definiowanie typów dokumentów Część 2. Przestrzenie nazw, XML Schema

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.

Page 8: Definiowanie typów dokumentów Część 2. Przestrzenie nazw, XML Schema

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>

Page 9: Definiowanie typów dokumentów Część 2. Przestrzenie nazw, XML Schema

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>

Page 10: Definiowanie typów dokumentów Część 2. Przestrzenie nazw, XML Schema

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>

Page 11: Definiowanie typów dokumentów Część 2. Przestrzenie nazw, XML Schema

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

Page 12: Definiowanie typów dokumentów Część 2. Przestrzenie nazw, XML Schema

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>

Page 13: Definiowanie typów dokumentów Część 2. Przestrzenie nazw, XML 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>

Page 14: Definiowanie typów dokumentów Część 2. Przestrzenie nazw, XML 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ń.

Page 15: Definiowanie typów dokumentów Część 2. Przestrzenie nazw, XML Schema

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

Page 16: Definiowanie typów dokumentów Część 2. Przestrzenie nazw, XML Schema

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

Page 17: Definiowanie typów dokumentów Część 2. Przestrzenie nazw, XML Schema

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

Page 18: Definiowanie typów dokumentów Część 2. Przestrzenie nazw, XML Schema

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.

Page 19: Definiowanie typów dokumentów Część 2. Przestrzenie nazw, XML Schema

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>

Page 20: Definiowanie typów dokumentów Część 2. Przestrzenie nazw, XML Schema

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>

Page 21: Definiowanie typów dokumentów Część 2. Przestrzenie nazw, XML Schema

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"/>

Page 22: Definiowanie typów dokumentów Część 2. Przestrzenie nazw, XML Schema

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>

Page 23: Definiowanie typów dokumentów Część 2. Przestrzenie nazw, XML Schema

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.

Page 24: Definiowanie typów dokumentów Część 2. Przestrzenie nazw, XML Schema

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>

Page 25: Definiowanie typów dokumentów Część 2. Przestrzenie nazw, XML Schema

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.

Page 26: Definiowanie typów dokumentów Część 2. Przestrzenie nazw, XML Schema

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"/>

Page 27: Definiowanie typów dokumentów Część 2. Przestrzenie nazw, XML Schema

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>

Page 28: Definiowanie typów dokumentów Część 2. Przestrzenie nazw, XML Schema

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>

Page 29: Definiowanie typów dokumentów Część 2. Przestrzenie nazw, XML Schema

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>

Page 30: Definiowanie typów dokumentów Część 2. Przestrzenie nazw, XML Schema

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>

Page 31: Definiowanie typów dokumentów Część 2. Przestrzenie nazw, XML Schema

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>