definiowanie typów dokumentów część 2. przestrzenie nazw, xml schema

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

Upload: britanni-kinney

Post on 02-Jan-2016

41 views

Category:

Documents


1 download

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

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>