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



Podobne dokumenty
Definiowanie typów dokumentów Część 2. Przestrzenie nazw, XML Schema. Elementy czy atrybuty? Wartości domyślne i ustalone. Elementy czy atrybuty?

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

XML Schema. Typy proste, wyprowadzanie typów, modularyzacja schematu. Patryk Czarnik. Instytut Informatyki UW

- wewnątrz elementów prostych występuje tylko jeden typ danych, wewnątrz złoŝonych nie moŝemy dokładnie określić liczby wystąpień elementu

Definiowanie typów dokumentów Część 3. XML Schema

XML Schema. Motywacja, struktura schematu, typy złożone. Patryk Czarnik. Instytut Informatyki UW

Przykładowy dokument XML

Jak wygląda XML? Definiowanie typów dokumentów Część 1. DTD, XML Schema. Struktura logiczna dokumentu XML. Składnia XML. Encje predefiniowane.

Język XML Schema. UEK w Krakowie Janusz Stal & Grażyna Paliwoda-Pękosz. UEK w Krakowie Janusz Stal & Grażyna Paliwoda-Pękosz

extensible Markup Language, cz. 4 Marcin Gryszkalis, mg@fork.pl

XML i nowoczesne metody zarządzania treścią

Schematy XML. Tomasz Traczyk.

LAB 7. XML EXtensible Markup Language - Rozszerzalny Język Znaczników XSD XML Schema Definition Definicja Schematu XML

MINISTERSTWO SPRAW WEWNĘTRZNYCH I ADMINISTRACJI DEPARTAMENT INFORMATYZACJI

Jak wygląda XML? Definiowanie typów dokumentów Część 1. DTD, XML Schema. Struktura logiczna dokumentu XML. Składnia XML. Encje predefiniowane.

MINISTERSTWO SPRAW WEWNĘTRZNYCH I ADMINISTRACJI DEPARTAMENT INFORMATYZACJI

Zasady Nazewnictwa. Dokumentów XML Strona 1 z 9

29. Poprawność składniowa i strukturalna dokumentu XML

(Dz. U. z dnia 17 listopada 2006 r.)

XML Schema. Bartłomiej Świercz. Łódź, 19 listopada 2005 roku. Katedra Mikroelektroniki i Technik Informatycznych. Bartłomiej Świercz XML Schema

XML Schema. Motywacja, struktura schematu, typy złożone. Patryk Czarnik. Instytut Informatyki UW

Rzeszów, dnia 18 czerwca 2015 r. Poz UCHWAŁA NR IX RADY MIEJSKIEJ W BOGUCHWALE. z dnia 28 maja 2015 r.

Definiowanie typów dokumentów Część 1. DTD, XML Schema

DTD - encje ogólne i parametryczne, przestrzenie nazw

Załącznik nr 14 Struktura logiczna korekty informacji podsumowującej o dokonanych wewnątrzwspólnotowych dostawach/nabyciach towarów (VAT-UEK)

Załączniki do rozporządzenia Ministra Finansów z dnia 2011 r. (poz. ) Załącznik nr 1. Struktura logiczna urzędowego poświadczenia odbioru

XML extensible Markup Language. część 4

Kurs WWW Język XML, część I

Wprowadzenie do XML schema

Integracja Obieg Dokumentów - GiS Spis treści

MINISTERSTWO SPRAW WEWNĘTRZNYCH I ADMINISTRACJI DEPARTAMENT INFORMATYZACJI

11. PROFESJONALNE ZABEZPIECZENIE HASŁEM

XML i nowoczesne technologie zarządzania treścią

Tablice (jedno i wielowymiarowe), łańcuchy znaków

XML extensible Markup Language. Paweł Chodkiewicz

Definicja struktury danych XSD dla opisu wzorów dokumentów elektronicznych przyjmowanych w Centralnym Repozytorium Dokumentów

Rola języka XML narzędziem

Projekt z dnia 20 grudnia 2006 r. ROZPORZĄDZENIE MINISTRA FINANSÓW 1) z dnia 2007 r.

Dokument poprawnie sformułowany jest zgodny z ogólnymi zasadami składniowymi:

UCHWAŁA NR IX RADY MIEJSKIEJ W BOGUCHWALE. z dnia 28 maja 2015 r.

Instrukcja obsługi Multiconverter 2.0

Warszawa, dnia 5 stycznia 2012 r. Pozycja 18 ROZPORZĄDZENIE MINISTRA FINANSÓW 1) z dnia 3 stycznia 2012 r.

Instrukcja obsługi DHL KONWERTER 1.6

Załącznik do rozporządzenia. Ministra Finansów z dnia września 2006 r. (poz. )

Nazwa pliku XSD:

Wykład 5: Klasy cz. 3

Spis treści. I. Czym jest Indeks Haseł 3 II. Wyszukiwanie hasła 4. 1) Alfabetyczna lista haseł 4 2) Wyszukiwarka haseł 4 3) Grupy haseł 6

KaŜdy z formularzy naleŝy podpiąć do usługi. Nazwa usługi moŝe pokrywać się z nazwą formularza, nie jest to jednak konieczne.

Za pomocą atrybutu ROWS moŝemy dokonać podziału ekranu w poziomie. Odpowiedni kod powinien wyglądać następująco:

Zasady budowy i przekazywania komunikatów wykorzystywanych w Systemie IT KDPW_CCP

Format danych adnotacji do tytułów wykonawczych przekazywanych do organów egzekucyjnych przez epuap w związku ze zbiegiem egzekucji

Program 6. Program wykorzystujący strukturę osoba o polach: imię, nazwisko, wiek. W programie wykorzystane są dwie funkcje:

MINISTERSTWO SPRAW WEWNĘTRZNYCH I ADMINISTRACJI DEPARTAMENT INFORMATYZACJI

XML w sosie własnym. Standard XML wraz z DTD, przestrzenie nazw, projektowanie struktury dokumentów. Patryk Czarnik. Instytut Informatyki UW

XML DTD XML Schema CSS

GEO-SYSTEM Sp. z o.o. GEO-RCiWN Rejestr Cen i Wartości Nieruchomości Podręcznik dla administratora systemu Warszawa 2007

Struktura logiczna zgłoszenia aktualizacyjnego osoby fizycznej nieprowadzącej samodzielnie działalności gospodarczej (NIP-3)

Wykład 8: klasy cz. 4

Załączniki do rozporządzenia Ministra Finansów z dnia marca 2008 r. (poz. )

Podstawowe konstrukcje Podstawowymi konstrukcjami są wzorce element oraz attribute:

ABC języka HTML i XHTML / Maria Sokół. wyd. 2. Gliwice, cop Spis treści

Tablice, DataGridView

Podstawowe informacje o obsłudze pliku z uprawnieniami licencja.txt

Tekst podstawowe znaczniki

Zasady budowy i przekazywania komunikatów XML w systemie kdpw_otc

BGK Zlecenia (Ferryt Enterprise)

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

XML i nowoczesne technologie zarządzania treścią 2007/08

Szczecin, r. Copyright (c) 2015 Izba Skarbowa w Szczecinie. Izba Skarbowa w Szczecinie

Podstawy języka XML. UEK w Krakowie Janusz Stal & Grażyna Paliwoda-Pękosz

Zasady budowy i przekazywania komunikatów XML dla rynku OTC w systemie KDPW_CCP

Przepływy danych. Oracle Designer: Modelowanie przepływów danych. Diagramy przepływów danych (1) Diagramy przepływów danych (2)

Zasady budowy i przekazywania komunikatów XML w systemie kdpw_otc

XML i nowoczesne metody zarządzania treścią

Dlaczego GML? Gdańsk r. Karol Stachura

Programowania w Javie

Format elektroniczny deklaracji o wysokości opłaty za gospodarowanie odpadami komunalnymi oraz układ informacji i powiązań między nimi

Rozdział 1 Cel dokumentu Rozdział 2 Deklaracja Rozdział 3 Nagłówek Rozdział 4 Podmiot Rozdział 5 FATCA...

XML Schema. Alternatywne metody definiowania struktury dokumentów. Patryk Czarnik. Instytut Informatyki UW

XML Schema. Forma nazwy lokalnych elementów i atrybutów

referencje Wykład 2. Programowanie (język C++) Referencje (1) int Num = 50; zdefiniowano zmienną Num (typu int) nadając jej wartość początkową 50.

WYKŁAD 1 METAJĘZYK SGML CZĘŚĆ 1

Facelets ViewHandler

Program Opakowania zwrotne dla InsERT GT.

10. Translacja sterowana składnią i YACC

Program 14. #include <iostream> #include <ctime> using namespace std;

XV. Wskaźniki Odczytywanie adresu pamięci istniejących zmiennych Wskaźniki pierwsze spojrzenie.

Wprowadzenie do technologii XML

Ustawianie lokalizacji dla indeksów Ustawianie lokalizacji dla indeksów spis kroków

14. POZOSTAŁE CIEKAWE FUNKCJE

Technologia informacyjna

INWENTARYZACJA W PROGRAMIE INTEGRA

SERTUM moduł Oferty. Spis treści

Środowisko XML (Extensible Markup Language).

Symbole wieloznaczne w XML Schema. Definiowanie typów dokumentów Część 4. XML Schema, RELAX NG, Schematron. Schematron

Bazy danych Access KWERENDY

Programowanie deklaratywne

Konta uŝytkowników. Konta uŝytkowników dzielą się na trzy grupy: lokalne konta uŝytkowników, domenowe konta uŝytkowników, konta wbudowane

Laboratorium nr 4. Temat: SQL część II. Polecenia DML

MINISTERSTWO FINANSÓW PLAN INTEGRACJI SYSTEMU ZAŁĄCZNIK NR 6 SEAP SPECYFIKACJA KANAŁ DLA PODMIOTÓW ZEWNĘTRZNYCH PL PROJEKT ECIP/SEAP

Transkrypt:

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

Globalne i lokalne deklaracje elementów i atrybutów Deklaracje lokalne: <xsd:complextype name="osobatyp"> <xsd:sequence> <xsd:element name="imie" type="xsd:string" minoccurs="1" maxoccurs="2"/> <xsd:element name="nazwisko" type="xsd:string"/> </xsd:sequence> <xsd:attribute name="nip" type="niptyp" use="required"/> </xsd:complextype> 2008-10-16 Definiowanie typów dokumentów część 2: Przestrzenie nazw, XML Schema 2 Deklaracje elementów i atrybutów mogą być globalne lub lokalne. Deklaracje globalne występują na najwyŝszym poziomie w dokumencie schematu i mogą być wykorzystywane wielokrotnie (w wielu typach złoŝonych). Deklaracje lokalne występują wewnątrz definicji typu i nie mogą być uŝyte nigdzie poza miejscem swego wystąpienia. 2

Globalne i lokalne deklaracje elementów i atrybutów Deklaracje globalne i odwołania do nich: <xsd:element name="imie" type="xsd:string"/> <xsd:element name="nazwisko" type="xsd:string"/> <xsd:attribute name="nip" type="niptyp"/> <xsd:complextype name="osobatyp"> <xsd:sequence> <xsd:element ref="imie" minoccurs="1" maxoccurs="2"/> <xsd:element ref="nazwisko"/> </xsd:sequence> <xsd:attribute ref="nip" use="required"/> </xsd:complextype> 2008-10-16 Definiowanie typów dokumentów część 2: Przestrzenie nazw, XML Schema 3 Do globalnych deklaracji elementów i atrybutów moŝna się odwoływać w definicjach typów złoŝonych. O tym, Ŝe mamy do czynienia z odwołaniem do deklaracji globalnej (a nie z deklaracją lokalną), świadczy atrybut ref. W przypadku globalnych deklaracji elementów i atrybutów, ograniczenia liczebności (minoccurs, maxoccurs, use) podaje się w odwołaniach do elementów i atrybutów. W przypadku deklaracji lokalnych, ograniczenia liczebności podaje się w miejscu deklaracji. 3

Elementy czy atrybuty? Informacje modelowane zwykle w elementach: zawartość (elementy semantyczne, np. nazwisko, nazwa leku, adres), struktura (np. rozdział, akapit, tytuł, lista), wyszukiwanie (np. termin do indeksu, glosariusza, a takŝe elementy dedykowane), odesłania (np. hiperlinki, noty, przypisy). Informacje modelowane zwykle w atrybutach: metainformacje (np. jednostka miary, waluta, język, priorytet), identyfikatory wartości i odwołania do nich. 2008-10-16 Definiowanie typów dokumentów część 2: Przestrzenie nazw, XML Schema 4 Zalety uŝywania atrybutów są następujące: Atrybuty mają bardziej zwięzłą składnię.[...] Atrybuty mogą być dodane do dokumentu, jeśli określimy ich wartości domyślne; elementy nie są dodawane (muszą wystąpić w dokumencie, aby zostały wstawione ich wartości domyślne). Zalety stosowania elementów są następujące: Elementy są bardziej rozszerzalne, poniewaŝ moŝna do nich później dodać atrybuty, nie wpływając na działanie aplikacji przetwarzającej dokumenty. Jeśli na przykład dojdziemy do wniosku, Ŝe potrzebujemy przechowywać informację o tym, w jakiej walucie jest wyraŝona cena, moŝemy w deklaracji elementu cena zadeklarować atrybut waluta. Gdyby cena była atrybutem, nie byłoby to moŝliwe. Elementy mogą zawierać inne elementy. Jeśli na przykład chcemy zamieścić opis tekstowy zawierający znaczniki w języku XHTML, nie jest to moŝliwe, jeśli opis jest atrybutem. Elementy mogą się powtarzać. Być moŝe teraz element pojawia się raz, lecz w przyszłości moŝna rozszerzyć schemat tak, aby pojawiał się wielokrotnie. Jeśli na przykład w przyszłości zdecydujemy, Ŝe produkt moŝe mieć wiele kolorów, podelement kolor moŝe wystąpić wielokrotnie. Atrybut moŝe wystąpić tylko raz w danym elemencie. (ciąg dalszy na następnej stronie) 4

Elementy czy atrybuty? Zalety elementów: mogą zawierać inne elementy i atrybuty, mogą się powtarzać, moŝna bezpiecznie rozszerzać ich model zawartości, np. dodając atrybuty, moŝna dokładnie sterować sposobem ich występowania (kolejnością, liczbą wystąpień, itp.) Zalety atrybutów: są bardziej zwięzłe, mogą być automatycznie dodawane do elementów, jeśli mają wartości domyślne. 2008-10-16 Definiowanie typów dokumentów część 2: Przestrzenie nazw, XML Schema 5 (ciąg dalszy z poprzedniej strony) Mamy większą kontrolę nad regułami występowania elementów. MoŜemy na przykład określić, Ŝe element produkt ma podelement numer lub kodproduktu. Nie jest to moŝliwe, gdy uŝywa się atrybutów. Elementy mogą być uŝywane w grupach zamiennych. Elementy mogą mieć wartości nil. W odniesieniu do elementów moŝna wykorzystać mechanizm zastępowania typów, uŝywając w dokumentach typów wyprowadzonych zamiast typu bazowego. Kolejność elementów jest znacząca, zaś kolejność atrybutów nie jest. Zwykle jest to zaleta tylko wtedy, gdy zaleŝy nam na zachowaniu kolejności. Gdy wartości są długie, elementy są zwykle bardziej czytelne od atrybutów. Jak widzimy, elementy mają znacznie więcej zalet niŝ atrybuty. Jednak czasami atrybuty teŝ są przydatne. Zwykle zaleca się zapisywać metadane w atrybutach, zaś dane w elementach. Przy pomocy atrybutów moŝna na przykład zapisywać jednostki, język lub zaleŝności czasowe wartości elementów. (Priscilla Walmsley, Wszystko o XML Schema, WNT, 2008) 5

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 <towar><cena/></towar> <towar><ilość>3</ilość></towar> <kwota>20</kwota> <kwota waluta="eur">20</kwota> Po przetworzeniu <towar><cena>5</cena></towar> <towar><ilość>3</ilość></towar> <kwota waluta="pln" VAT="22%"> 20</kwota> <kwota waluta="eur" VAT="22%"> 20</kwota> 2008-10-16 Definiowanie typów dokumentów część 2: Przestrzenie nazw, XML Schema 6 Wartość domyślna jest wartością, która zostanie automatycznie wstawiona w dokumencie w przypadku braku wartości. Wartość ustalona pełni podobną rolę, z tym dodatkowym ograniczeniem, Ŝe jeŝeli w dokumencie jest podana wartość, to musi ona być identyczna, jak wartość ustalona. Wartości domyślne i ustalone są obsługiwane nieco inaczej w przypadku elementów, niŝ w przypadku atrybutów. W przypadku atrybutów, wartość domyślna jest wstawiana wtedy, gdy atrybut nie występuje w dokumencie. procesor schematów dodaje wówczas atrybut wraz z wartością domyślną lub ustaloną. Natomiast w przypadku elementów, wartość domyślna jest wstawiana wtedy, gdy element istnieje w dokumencie, ale jest pusty. W przypadku, gdy element nie istnieje, nie zostanie on wstawiony do dokumentu. W praktyce wartości domyślnych i ustalonych uŝywa się najczęściej w odniesieniu do atrybutów. Wartości domyślne deklaruje się wtedy, gdy jedna z wartości atrybutu jest wyróŝniona lub występuje częściej niŝ inne np. atrybut rodzaj elementu samochód moŝe mieć wartość domyślną osobowy). Wówczas w większości dokumentów atrybut moŝna po prostu pominąć. Wartości ustalone słuŝą najczęściej do umieszczania w schemacie dodatkowych informacji konfiguracyjnych dla aplikacji. Skoro i tak atrybut nie moŝe mieć innej wartości niŝ podana w deklaracji, to w dokumentach nie umieszcza się go w ogóle, zaś wartość ustaloną podaną w schemacie traktuje się jako swego rodzaju zmienną konfiguracyjną. 6

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. 2008-10-16 Definiowanie typów dokumentów część 2: Przestrzenie nazw, XML Schema 7 Przestrzenie nazw pełnią rolę kontenerów, w których umieszczamy nazwy uŝywane w XML-u. Nazwa typu elementu, taka jak na przykład table, moŝe mieć wiele znaczeń. W XHTML-u oznacza zupełnie co innego niŝ w języku MebleML. Przestrzenie nazw zapewniają kontekst elementom i atrybutom uŝywanym w dokumentach. (Priscilla Walmsley, Wszystko o XML Schema, WNT, 2008) 7

Nazwy przestrzeni nazw Identyfikatory URI, np: http://www.w3.org/xslt/transform/1.0 http://redpill.com.pl/osoby urn:sziolo:redpill 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. 2008-10-16 Definiowanie typów dokumentów część 2: Przestrzenie nazw, XML Schema 8 Zadaniem nazwy przestrzeni nazw nie jest wskazanie lokalizacji, w której znajduje się jakiś dokument. Jest to jedynie unikatowa nazwa, być moŝe związana z konkretną osobą lub organizacją, podobnie jak nazwy pakietów w języku Java. Nie jest więc wymagane, aby nazwa przestrzeni nazw wskazywała jakikolwiek obiekt. Prefiksy są wygodne w uŝyciu, poniewaŝ zwykle są krótsze niŝ nazwy przestrzeni nazw. Dzięki nim dokumenty są bardziej czytelne. Bardziej istotnym powodem stosowania prefiksów jest jednak fakt, Ŝe nazwy przestrzeni nazw mogą zawierać znaki, które nie są dozwolone w nazwach w XML-u. (Priscilla Walmsley, Wszystko o XML Schema, WNT, 2008) 8

UŜycie przestrzeni nazw w XML-u <os:osoba xmlns:os="http://redpill.com.pl/osoby" xmlns:inst="http://redpill.com.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> 2008-10-16 Definiowanie typów dokumentów część 2: Przestrzenie nazw, XML Schema 9 Przestrzeń nazw deklaruje się przy pomocy specjalnego atrybutu, którego nazwa zaczyna się od znaków xmlns. 9

Domyślna przestrzeń nazw <osoba xmlns="http://redpill.com.pl/osoby" xmlns:inst="http://redpill.com.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> 2008-10-16 Definiowanie typów dokumentów część 2: Przestrzenie nazw, XML Schema 10 Dokument moŝe między innymi zawierać deklarację domyślnej przestrzeni nazw (ang. default namespace), do której naleŝą nazwy typów elementów nie poprzedzone prefiksem. Domyślną przestrzeń nazw deklaruje się przy pomocy atrybutu xmlns bez dwukropka i bez prefiksu. (Priscilla Walmsley, Wszystko o XML Schema, WNT, 2008) 10

Widoczność przestrzeni nazw <os:osoba xmlns:os="http://redpill.com.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://redpill.com.pl/instytucje"> <os:nazwa>business Consulting</os:nazwa> <os:nip>987-654-32-10</os:nip> </os:firma> </os:pracuje-w> </os:osoba> 2008-10-16 Definiowanie typów dokumentów część 2: Przestrzenie nazw, XML Schema 11 Deklaracje przestrzeni nazw mogą być przesłaniane. Jeśli deklaracja przestrzeni nazw pojawia się w zasięgu innej deklaracji dla tego samego prefiksu, to ją przesłania. Podobnie jeśli deklaracja domyślnej przestrzeni nazw pojawia się w zasięgu innej deklaracji domyślnej przestrzeni nazw, to ją przesłania. (Priscilla Walmsley, Wszystko o XML Schema, WNT, 2008) 11

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. 2008-10-16 Definiowanie typów dokumentów część 2: Przestrzenie nazw, XML Schema 12 To, Ŝe nazwa elementu nie posiada prefiksu, niekoniecznie oznacza, Ŝe nie naleŝy ona do Ŝadnej przestrzeni nazw. MoŜe być przecieŝ w zasięgu deklaracji domyślnej przestrzeni nazw. Dlatego zamiast mówić o nazwach elementów z prefiksem lub bez, sensowniej jest mówić o nazwach kwalifikowanych i niekwalifikowanych. W przypadku atrybutów jest prościej poniewaŝ domyślna przestrzeń nazw nie dosięga atrybutów, więc nazwy z prefiksem są zawsze kwalifikowane (tzn. naleŝą do pewnej przestrzeni nazw), zaś nazwy bez prefiksu niekwalifikowane. 12

Nazwy elementów bez prefiksów <osoba xmlns="http://redpill.com.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> 2008-10-16 Definiowanie typów dokumentów część 2: Przestrzenie nazw, XML Schema 13 Deklarację domyślnej przestrzeni nazw moŝna skasować przy pomocy deklaracji xmlns=. Nazwy bez prefiksu znajdujące się w zasięgu tej deklaracji nie naleŝą do Ŝadnej przestrzeni nazw. 13

Nazwy atrybutów <osoba xmlns="http://redpill.com.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> 2008-10-16 Definiowanie typów dokumentów część 2: Przestrzenie nazw, XML Schema 14 Nazwy atrybutów nie poprzedzone prefiksem nie naleŝą bezpośrednio do Ŝadnej przestrzeni nazw, poniewaŝ deklaracje domyślnych przestrzeni nazw ich nie obejmują. 14

Atrybuty: ta sama nazwa czy nie? Poprawne: <x xmlns:n1="http://redpill.com.pl/n1" xmlns:n2="http://redpill.com.pl/n2"> <good n1:a="1" n2:a="2"/> </x> Niepoprawne: <x xmlns:n1="http://redpill.com.pl/n1" xmlns:n2="http://redpill.com.pl/n1"> <bad n1:a="1" n2:a="2"/> </x> Poprawne: <x xmlns:n1="http://redpill.com.pl/n1" xmlns="http://redpill.com.pl/n1"> <good n1:a="1" a="2"/> </x> 2008-10-16 Definiowanie typów dokumentów część 2: Przestrzenie nazw, XML Schema 15 Choć wiele przestrzeni nazw ma ogólnie przyjęte, tradycyjnie stosowane prefiksy (np. XML Schema xsd), to pamiętajmy, Ŝe postać prefiksu nie ma Ŝadnego znaczenia. Istotna jest jedynie nazwa przestrzeni nazw. Prefiks jest jedynie pośrednikiem. Dlatego właśnie drugi przykład jest niepoprawny n1 i n2, mimo Ŝe są róŝnymi prefiksami, oznaczają przecieŝ tą samą przestrzeń nazw. Zatem n1:a i n2:a to tak na prawdę ten sam atrybut. 15

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. import osoba imię nazwisko NIP osoby.xsd firma http://redpill.com.pl/osoby nazwa NIP inst.xsd http://redpill.com.pl/instytucje 2008-10-16 Definiowanie typów dokumentów część 2: Przestrzenie nazw, XML Schema 16 Pliki z rozszerzeniem.xsd często nazywamy schematami. Nie jest to do końca poprawne, bo taki plik (dokument schematu) moŝe być tylko częścią większego schematu, uzupełnianą przez inne dokumenty schematów. KaŜdy z tych dokumentów schematów moŝe (choć nie musi) deklarować nazwy w pewnej przestrzeni nazw. 16

Dokument schematu (1) <xsd:schema xmlns:xsd="http://www.w3.org/2001/xmlschema" xmlns="http://redpill.com.pl/osoby" targetnamespace="http://redpill.com.pl/osoby"> <xsd:complextype name="osobatyp">... </xsd:complextype> <xsd:element name="osoba" type="osobatyp"/> <xsd:element name="numer" type="xsd:integer"/>... </xsd:schema> 2008-10-16 Definiowanie typów dokumentów część 2: Przestrzenie nazw, XML Schema 17 XML Schema takŝe ma swoją przestrzeń nazw. Musimy ją zadeklarować w dokumencie schematu. Zwykle odwzorowuje się ją na prefiks xsd, choć oczywiście moŝliwe jest jej odwzorowanie na dowolny inny prefiks, lub zadeklarowanie jako domyślnej przestrzeni nazw. W atrybucie targetnamespace określa się tzw. docelową przestrzeń nazw dokumentu schematu, czyli przestrzeń nazw, do której naleŝą komponenty (tzn. elementy, atrybuty i typy) zadeklarowane i zdefiniowane w tym dokumencie schematu. Brak tego atrybutu oznacza, Ŝe zadeklarowane i zdefiniowane komponenty nie naleŝą do Ŝadnej przestrzeni nazw. W tym przykładzie przestrzeń nazw XML Schema jest odwzorowana na prefiks xsd, natomiast docelowa przestrzeń nazw dokumentu schematu jest domyślną przestrzenią nazw. 17

Dokument schematu (2) <schema xmlns="http://www.w3.org/2001/xmlschema" xmlns:os="http://redpill.com.pl/osoby" targetnamespace="http://redpill.com.pl/osoby"> <complextype name="osobatyp">... </complextype> <element name="osoba" type="os:osobatyp"/> <element name="numer" type="integer"/>... </schema> 2008-10-16 Definiowanie typów dokumentów część 2: Przestrzenie nazw, XML Schema 18 W tym przykładzie przestrzeń nazw XML Schema jest domyślną przestrzenią nazw, natomiast docelowa przestrzeń nazw dokumentu schematu jest odwzorowana na prefiks os. ZauwaŜmy, Ŝe w deklaracjach elementów i atrybutów, w wartości atrybutu name, nie uŝywamy prefiksu. Deklarowane elementy i atrybuty i tak automatycznie naleŝą do docelowej przestrzeni nazw dokumentu schematu. 18

Łą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 egzemplarzu, procesor łączy dokumenty schematów znajdujące się w predefiniowanych (skonfigurowanych) lokalizacjach, lokalizacje dokumentów schematów są przekazywane jako parametry wiersza poleceń. 2008-10-16 Definiowanie typów dokumentów część 2: Przestrzenie nazw, XML Schema 19 Rekomendacja XML Schema oferuje trzy metody łączenia dokumentów schematów (include, import i redefine), lecz nie wymusza ich stosowania. Dopuszczalne jest więc określanie, które dokumenty schematów naleŝy połączyć i gdzie je znaleźć, takŝe dowolnymi innymi technikami. 19

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://redpill.com.pl/osoby" targetnamespace="http://redpill.com.pl/osoby"> <xsd:include schemalocation="inst.xsd"/>... </xsd:schema> Dołączany dokument musi: mieć taką samą docelową przestrzeń nazw jak dokument główny, lub nie mieć docelowej przestrzeni nazw. osoby.xsd osoba imię nazwisko NIP inst.xsd firma nazwa REGON http://redpill.com.pl/osoby 2008-10-16 Definiowanie typów dokumentów część 2: Przestrzenie nazw, XML Schema 20 Instrukcji include uŝywa się, aby dołączyć (ang. include) do dokumentu schematu inne dokumenty schematów mające tę samą docelową przestrzeń nazw. Dzięki temu jest moŝliwa modularyzacja dokumentów schematów. Gdy dołączamy dokument schematu, musi być spełniony jeden z warunków: oba dokumenty schematów mają tę samą docelową przestrzeń nazw, oba dokumenty schematów nie mają docelowej przestrzeni nazw, dokument schematu, do którego dołączamy, ma docelową przestrzeń nazw, zaś dołączany dokument schematu nie ma docelowej przestrzeni nazw. W trzecim przypadku wszystkie komponenty dołączanego dokumentu schematu przechodzą do przestrzeni nazw dokumentu schematu, do którego są dołączane. Komponenty te nazywamy czasami kameleonami (ang. chameleon components), poniewaŝ ich przestrzeń nazw zmienia się w zaleŝności od tego, do którego dokumentu schematu są dołączane. (Priscilla Walmsley, Wszystko o XML Schema, WNT, 2008) 20

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"/> osoby.xsd osoba imię nazwisko NIP NIPTyp inst.xsd firma nazwa REGON NIPTyp http://redpill.com.pl/osoby 2008-10-16 Definiowanie typów dokumentów część 2: Przestrzenie nazw, XML Schema 21 Instrukcja redefine jest podobna do include, lecz daje dodatkową moŝliwość określenia nowych definicji niektórych lub wszystkich komponentów dokumentu schematu, który przedefiniowujemy. (Priscilla Walmsley, Wszystko o XML Schema, WNT, 2008) 21

import Odwołanie do komponentów w innej przestrzeni nazw. <xsd:schema xmlns:xsd="http://www.w3.org/2001/xmlschema" xmlns="http://redpill.com.pl/osoby" xmlns:inst="http://redpill.com.pl/instytucje" targetnamespace="http://redpill.com.pl/osoby"> <xsd:import schemalocation="inst.xsd" namespace="http://redpill.com.pl/instytucje"/>... </xsd:schema> osoby.xsd osoba imię nazwisko NIP http://redpill.com.pl/osoby inst.xsd firma nazwa NIP http://redpill.com.pl/instytucje 2008-10-16 Definiowanie typów dokumentów część 2: Przestrzenie nazw, XML Schema 22 Importowania (ang. import) uŝywamy, aby powiedzieć procesorowi, Ŝe będziemy odwoływać się do komponentów naleŝących do innej przestrzeni nazw. Jeśli na przykład w naszej definicji typu złoŝonego chcemy wykorzystać atrybut z innej przestrzeni nazw, lub wyprowadzić własny typ z typu naleŝącego do innej przestrzeni nazw, musimy tę przestrzeń nazw importować. Importowanie róŝni się od dołączania w dwóch waŝnych aspektach. Po pierwsze, dołączanie ma miejsce wyłącznie w ramach jednej przestrzeni nazw, zaś importowanie działa w poprzek przestrzeni nazw. Druga, bardziej subtelna róŝnica, dotyczy przeznaczenia obu konstrukcji. Zadaniem dołączania jest wciągnięcie innego dokumentu schematu, zaś celem importowania jest zaznaczenie zaleŝności od innej przestrzeni nazw, niekoniecznie od innego dokumentu schematu. Importowanie pozwala określić lokalizację dokumentu schematu tej przestrzeni nazw, lecz procesor nie musi jej interpretować. (Priscilla Walmsley, Wszystko o XML Schema, WNT, 2008) 22

Egzemplarz Przestrzeń nazw egzemplarzy XML Schema: http://www.w3.org/2001/xmlschema-instance zawiera atrybuty: nil, type, schemalocation, nonamespaceschemalocation. 2008-10-16 Definiowanie typów dokumentów część 2: Przestrzenie nazw, XML Schema 23 Przez egzemplarz (ang. instance) rozumiemy pojedynczy dokument XML, którego poprawność względem schematu moŝemy weryfikować. Przestrzeń nazw egzemplarzy XML Schema jest osobą przestrzenią nazw (odrębną od przestrzeni nazw XML Schema), do której naleŝą cztery atrybuty związane ze schematami, które umieszcza się w egzemplarzach. 23

schemalocation <?xml version="1.0"?> <osoba xmlns="http://redpill.com.pl/osoby" xmlns:inst="http://redpill.com.pl/instytucje" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation="http://redpill.com.pl/osoby osoby.xsd http://redpill.com.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> 2008-10-16 Definiowanie typów dokumentów część 2: Przestrzenie nazw, XML Schema 24 Przy pomocy atrybutu xsi:schemalocation moŝna określić listę nazw przestrzeni nazw i odpowiadających im lokalizacji dokumentów schematów. 24

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> 2008-10-16 Definiowanie typów dokumentów część 2: Przestrzenie nazw, XML Schema 25 Przy pomocy atrybutu xsi:nonamespaceschemalocation moŝna określić lokalizację dokumentu schematu, który nie ma docelowej przestrzeni nazw. Wartością tego atrybutu nie jest lista identyfikatorów, jak w przypadku atrybutu xsi:schemalocation, lecz tylko jedna lokalizacja. 25

Wartości puste w egzemplarzach 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"/> 2008-10-16 Definiowanie typów dokumentów część 2: Przestrzenie nazw, XML Schema 26 Jak oznaczyć w dokumencie XML brak pewnej wartości? MoŜemy stosować róŝne sposoby, w zaleŝności od przyczyny braku wartości. Na przykład jeśli wartość nie istnieje (np. osoba nie ma drugiego imienia), moŝemy pomijać element. Jeśli wartość istnieje, lecz jest pusta, moŝemy uŝywać elementu o pustej zawartości. Jeśli zaś wartość nie ma zastosowania w danej sytuacji (np. parasol nie ma rozmiaru), moŝemy uŝywać specjalnej wartości N/A. To tylko przykłady konwencji, jakie moŝna stosować wybór sposobu oznaczania braku wartości zawsze naleŝy do nas XML Schema w Ŝaden sposób tego nie narzuca. W XML Schema jest dostępny jeszcze jeden bardzo ciekawy sposób oznaczenia braku wartości wartość nil. Nadajemy ją elementowi, umieszczając w nim atrybut xsi:nil o wartości true. Dzięki temu jawnie oznaczamy, Ŝe element nie ma wartości. Jeśli element ma wartość nil, to nie moŝe mieć Ŝadnej zawartości, nawet jeśli zgodnie ze schematem zawartość jest wymagana. Wartości nil nie moŝna przypisać do atrybutu. Aby w danym elemencie moŝna było uŝywać wartości nil, trzeba zezwolić na to w deklaracji tego elementu w schemacie. SłuŜy do tego atrybut nillable. 26