Motywowawnie i system wynagrodzeń

background image

XML Schema

Motywacja, struktura schematu, typy zło˙zone

Patryk Czarnik

Instytut Informatyki UW

XML i nowoczesne technologie zarz ˛

adzania tre´sci ˛

a –

2007/08

Dlaczego nie DTD?

I

Zastosowania XML-a w elektronicznej wymianie danych:

I

przeniesienie zadania sprawdzania poprawno´sci z
tworzonej aplikacji na narz ˛edzie waliduj ˛

ace daje spore

oszcz ˛edno´sci,

I

60% tworzonego kodu dotyczy weryfikacji poprawno´sci
danych.
Roger L. Costello, XML Schema Tutorial

I

Cechy DTD:

I

niemal brak kontroli nad tekstow ˛

a zawarto´sci ˛

a elementów

i warto´sciami atrybutów,

I

bardzo ogólne metody definiowania cz ˛esto´sci wyst ˛

apie ´n.

background image

Porównanie DTD i XML Schema

DTD

I

pochodz ˛

acy z SGML

I

specyficzna składnia

I

10 typów danych

I

brak kontroli tekstowej
zawarto´sci elementów
niewielka dla atrybutów

I

modularno´s´c tylko na
poziomie tekstu DTD
(encje parametryczne)

XML Schema

I

zaprojektowany dla XML

I

składnia XML

I

44 wbudowane typy proste

I

zaawansowana kontrola
tekstowej zawarto´sci
elementów i atrybutów

I

modularno´s´c na poziomie
poj ˛e´c abstrakcyjnych
(własne typy zawarto´sci,
grupy, import)

Status XML Schema

I

15 lutego 1999: Dokument W3C opisuj ˛

acy wymagania.

I

2 maja 2001: XML Schema oficjaln ˛

a rekomendacj ˛

a W3C:

I

XML Schema Part 0: Primer,

I

XML Schema Part 1: Structures,

I

XML Schema Part 2: Datatypes.

I

Obecnie prace nad wersj ˛

a 1.1 XML Schema

(status: working draft).

background image

Prosty przykład schematu

<

xs:schema

xmlns:xs="

http://www.w3.org/2001/XMLSchema

">

<xs:element name="osoba">

<xs:complexType>

<xs:sequence>

<xs:element name="imi˛

e" type="xs:string"

minOccurs="1" maxOccurs="unbounded"/>

<xs:element name="nazwisko" type="xs:string"/>

</xs:sequence>

<xs:attribute name="wiek" type="xs:positiveInteger"

use="optional"/>

</xs:complexType>

</xs:element>

</

xs:schema

>

I

element główny schematu

I

przestrze ´n nazw XML Schema

I

deklaracja elementu (globalna)

I

deklaracja elementu (lokalna)

I

okre´slenie liczno´sci elementów

I

deklaracja atrybutu

I

okre´slenie (nie)obowi ˛

azkowo´sci atrybutu

Typy w XML Schema

I

Elementy i atrybuty maj ˛

a w schemacie okre´slony

typ

zawarto ´sci.

I

Typy zwn. zasi ˛eg definicji:

I

nazwane,

I

anonimowe.

I

Typy zwn. pochodzenie:

I

predefiniowane (przez standard),

I

definiowane w schemacie.

I

Typy zwn. zawarto´s´c:

I

proste,

I

zło˙zone, o zawarto´sci:

I

pustej,

I

prostej,

I

elementowej (zło˙zonej),

I

mieszanej.

background image

Typy nazwane i anonimowe

Typy nazwane

<xs:complexType name="OsobaTyp">

<xs:sequence>

<xs:element name="imi˛

e" type="xs:string"/>

<xs:element name="nazwisko" type="xs:string"/>

</xs:sequence>

</xs:complexType>

<xs:element name="osoba"

type="OsobaTyp"

/>

Typy anonimowe

<xs:element name="osoba">

<xs:complexType>

<xs:sequence>

<xs:element name="imi˛

e" type="xs:string"/>

<xs:element name="nazwisko" type="xs:string"/>

</xs:sequence>

</xs:complexType>

</xs:element>

Typy nazwane i anonimowe – kiedy stosowa´c?

Typy nazwane

I

ten sam typ stosowany dla wielu elementów / atrybutów,

I

typ stanowi podstaw ˛e zaw ˛e˙ze ´n / rozszerze ´n,

I

tak˙ze w potencjalnych przyszłych rozszerzeniach
schematu!

Typy anonimowe

I

typ wyst ˛epuj ˛

acy tylko w jednym miejscu schematu,

I

nie stanowi ˛

acy podstawy dla innego typu.

background image

Deklaracje globalne i lokalne

Deklaracje globalne

<

xs:element

name="

imi˛

e

" type="xs:string"/>

<

xs:element

name="

nazwisko

" type="xs:string"/>

<xs:complexType name="OsobaTyp">

<xs:sequence>

<xs:element

ref

="

imi˛

e

" maxOccurs="3"/>

<xs:element

ref

="

nazwisko

"/>

</xs:sequence> </xs:complexType>

</xs:element>

Deklaracje lokalne

<xs:complexType name="OsobaTyp">

<xs:sequence>

<

xs:element name

="

imi˛

e

" maxOccurs="3" type="xs:string"/>

<

xs:element name

="

nazwisko

" type="xs:string"/>

</xs:sequence>

</xs:complexType>

Deklaracje globalne i lokalne – kiedy stosowa´c?

Deklaracje globalne

I

element (atrybut) wyst ˛epuj ˛

acy w wielu miejscach schematu

z tym samym typem zawarto´sci,

I

tak˙ze w potencjalnych przyszłych rozszerzeniach
schematu!

Deklaracje lokalne

I

element (atrybut) tylko w jednym miejscu schematu,

I

w ró˙znych miejscach z ró˙znym typem zawarto´sci. . .

background image

Deklaracje lokalne z ró˙znym typem zawarto´sci

I

mo˙zliwo´s´c u˙zycia tej samej nazwy dla ró˙znych
(semantycznie i strukturalnie) elementów i atrybutów,

I

naturalne w przypadku atrybutów,

I

myl ˛

ace w przypadku elementów – u˙zywa´c z rozs ˛

adkiem.

Przykład

<xs:element name="a">

<xs:complexType> <xs:sequence>

<xs:element name="c" type="xs:positiveInteger"/>

</xs:sequence> </xs:complexType>

</xs:element>

<xs:element name="b">

<xs:complexType> <xs:sequence>

<xs:element name="c" type="xs:negativeInteger"/>

</xs:sequence> </xs:complexType>

</xs:element>

<a><c>12</c></a>

<b><c>-9</c></b>

Typy zło˙zone i proste

Typ zło˙zony

<xs:

complexType

name="OsobaTyp">

<xs:sequence>

<xs:element name="imi˛

e" type="xs:string"/>

<xs:element name="nazwisko" type="xs:string"/>

</xs:sequence>

</xs:

complexType

>

<xs:element name="osoba" type="

OsobaTyp

"/>

Typ prosty

<xs:

simpleType

name="PlecTyp">

<xs:restriction base="xs:string">

<xs:enumeration value="k"/>

<xs:enumeration value="m"/>

</xs:restriction>

</

xs:simpleType

>

<xs:element name="nazwisko" type="

xs:string

"/>

<xs:attribute name="płe´

c" type="

PlecTyp

"/>

background image

Typy proste i zło˙zone – kiedy u˙zywa´c?

Typy zło˙zone

I

struktura (podelementy, atrybuty),

I

odpowiednie dla elementów.

Typy proste

I

zawarto´s´c tekstowa,

I

odpowiednie dla atrybutów i elementów,

I

wiele typów predefiniowanych,

I

mo˙zliwo´s´c definiowania własnych typów.

Typy zło˙zone – rodzaje zawarto´sci

I

Zawarto´s´c elementowa:

<osoba PESEL="12345678901">

<imi˛

e>Jan</imi˛

e>

<nazwisko>Kowalski</nazwisko>

</osoba>

I

Zawarto´s´c pusta:

<osoba PESEL="12345678901"/>

I

Zawarto´s´c prosta:

<masa jm="kg">10.55</masa>

I

Zawarto´s´c mieszana:

<tre´

c>W <j>Pascalu</j> przypisanie ma posta´

c <kod>x := 5</kod>,

natomiast w <j>C</j> <kod>x = 5</kod>.</tre´

c>

background image

Definiowanie zawarto´sci elementowej

Grupy deklaracji (model groups)

I

sequence,

I

choice,

I

all.

Zagnie˙zd˙zanie grup sequence i choice

<xs:complexType name="OsobaTyp">

<xs:choice>

<xs:sequence>

<xs:element name="imi˛

e" type="xs:string"/>

<xs:element name="nazwisko" type="xs:string"/>

</xs:sequence>

<xs:element name="pseudonim" type="xs:string"/>

</xs:choice>

</xs:complexType>

Liczno´s´c wyst ˛

apie ´n

I

Atrybuty minOccurs i maxOccurs.

I

Dla podelementów oraz grup.

I

Warto´s´c unbounded dla maxOccurs.

I

Domy´slna liczno´s´c: dokładnie

1.

Sztuczny przykład

<xs:complexType name="DwieOsobyTyp">

<xs:choice

minOccurs="2"

>

<xs:sequence>

<xs:element name="imi˛

e" type="xs:string"

minOccurs="0" maxOccurs="3"

/>

<xs:element name="nazwisko" type="xs:string"/>

</xs:sequence>

<xs:element name="pseudonim" type="xs:string"/>

</xs:choice>

</xs:complexType>

background image

Modele (nie)deterministyczne

I

Model niejednoznaczny:

Nawet znaj ˛

ac cały dokument nie jeste´smy w stanie wskaza´c które deklaracje

w schemacie odpowiadaj ˛

a elementom w dokumencie.

(a,a)*|(a,a,a)*

I

Model niedeterministyczny:

Czytaj ˛

ac dokument od pocz ˛

atku gdy pojawia si ˛e pewien znacznik otwieraj ˛

acy

nie jeste´smy w stanie wskaza´c która deklaracja w schemacie odpowiada
bie˙z ˛

acemu elementowi w dokumencie (bez czytania dalej dokumentu).

(a,a?,a?)

(a,b)+,a?

I

Modele definiowane w XML Schema musz ˛

a by´c

deterministyczne:

Czytaj ˛

ac dowolny dokument od pocz ˛

atku gdy pojawia si ˛e pewien znacznik

otwieraj ˛

acy jeste´smy w stanie wskaza´c która deklaracja w schemacie odpowiada

bie˙z ˛

acemu elementowi w dokumencie (bez czytania dalej dokumentu).

(a,(a,a?)?)

Grupa all

I

Wszystkie podelementy w dowolnej kolejno´sci.

I

maxOccurs

podelementów <= 1.

I

Brak udziału w zagnie˙zd˙zeniach.

Przykład

<xs:complexType name="DaneOsoboweTyp">

<xs:all>

<xs:element name="pesel" type="PeselTyp"/>

<xs:element name="dowód" type="DowódTyp"/>

<xs:element name="paszport" type="PaszportTyp"

minOccurs="0"/>

</xs:all>

</xs:complexType>

background image

Nazwane grupy elementów

<xs:

group name="współrz˛

edne"

>

<xs:sequence>

<xs:element name="x" type="xs:double"/>

<xs:element name="y" type="xs:double"/>

</xs:sequence>

</xs:

group

>

<xs:element name="punkt">

<xs:complexType> <xs:sequence>

<xs:

group ref="współrz˛

edne"

/>

</xs:sequence> </xs:complexType>

</xs:element>

<xs:element name="koło">

<xs:complexType> <xs:sequence>

<xs:

group ref="współrz˛

edne"

/>

<xs:element name="r" type="xs:double"/>

</xs:sequence> </xs:complexType>

</xs:element>

Deklaracje atrybutów

I

Deklaracje globalne i lokalne.

I

W definicji typu zło˙zonego za okre´sleniem typu zawarto´sci.

Przykład

<xs:attribute name="nr" type="positiveInteger"/>

<xs:complexType name="OsobaTyp">

<xs:sequence> ... </xs:sequence>

<xs:attribute name="pesel" type="PeselTyp"/>

<xs:attribute name="płe´

c">

<xs:simpleType> ... </xs:simpleType>

</xs:attribute>

<xs:attribute ref="nr"/>

</xs:complexType>

background image

Obowi ˛

azkowo´s´c i warto´sci domy´slne

I

use – required, optional, prohibited.

I

default lub fixed – warto´s´c domy´slna lub ustalona.

Przykład

<xs:complexType name="OsobaTyp">

<xs:sequence> ... </xs:sequence>

<xs:attribute name="pesel" type="PeselTyp"

use="required"

/>

<xs:attribute name="płe´

c"

default="k"

>

<xs:simpleType> ... </xs:simpleType>

</xs:attribute>

<xs:attribute ref="nr"

fixed="123"

/>

</xs:complexType>

Nazwane grupy atrybutów

<

xs:attributeGroup name="atrybuty-kraw˛

edzi

">

<xs:attribute name="kolor-kraw˛

edzi" type="KolorTyp"/>

<xs:attribute name="grubo´

c-kraw˛

edzi" type="xs:positiveInteger"/>

</

xs:attributeGroup

>

<

xs:attributeGroup name="atrybuty-powierzchni

">

<xs:attribute name="kolor-powierzchni" type="KolorTyp"/>

</

xs:attributeGroup

>

<xs:element name="koło">

<xs:complexType> <xs:sequence> ... </xs:sequence>

<xs:

attributeGroup ref="atrybuty-kraw˛

edzi"

/>

<xs:

attributeGroup ref="atrybuty-powierzchni

"/>

</xs:complexType>

</xs:element>

<xs:element name="odcinek">

<xs:complexType> <xs:sequence> ... </xs:sequence>

<xs:

attributeGroup ref="atrybuty-kraw˛

edzi"

/>

</xs:complexType>

</xs:element>

background image

Elementy czy atrtybuty?

Przesłanki strukturalne

I

Elementy konieczne gdy:

I

liczno´s´c wi ˛eksza od 1,

I

wewn ˛etrzna struktura (podelemety),

I

tak˙ze w potencjalnych przyszłych rozszerzeniach
schematu!

I

Zalety atrybutów:

I

zwi ˛ezło´s´c zapisu,

I

warto´sci domy´slne,

I

w DTD dost ˛epne typy zawarto´sci NMTOKEN, ID, IDREF
(w XML Schema bez znaczenia).

Elementy czy atrtybuty?

Przesłanki semantyczne

I

Informacje modelowane zwykle w elementach:

I

zawarto´s´c (elementy semantyczne, np. nazwisko, nazwa
leku, adres),

I

struktura (np. rozdział, akapit, tytuł, lista),

I

wyszukiwanie (np. termin do indeksu, glosariusza, a tak˙ze
elementy dedykowane),

I

odesłania (np. hiperlinki, noty, przypisy).

I

Informacje modelowane zwykle w atrybutach:

I

metainformacje (np. jednostka miary, waluta, j ˛ezyk,
priorytet),

I

identyfikatory warto´sci i odwołania do nich.

background image

Typy zło˙zone – rodzaje zawarto´sci

I

Zawarto´s´c elementowa:

<osoba PESEL="12345678901">

<imi˛

e>Jan</imi˛

e>

<nazwisko>Kowalski</nazwisko>

</osoba>

I

Zawarto´s´c pusta:

<osoba PESEL="12345678901"/>

I

Zawarto´s´c prosta:

<masa jm="kg">10.55</masa>

I

Zawarto´s´c mieszana:

<tre´

c>W <j>Pascalu</j> przypisanie ma posta´

c <kod>x := 5</kod>,

natomiast w <j>C</j> <kod>x = 5</kod>.</tre´

c>

Definiowanie zawarto´sci pustej

Schemat

<xs:complexType name="OsobaTyp">

<xs:attribute name="PESEL" type="PESELTyp"/>

</xs:complexType>

Dokument

<osoba PESEL="12345678901"/>

<masa jm="kg">10.55</masa>

<tre´

c>W <j>Pascalu</j> przypisanie ma posta´

c <kod>x := 5</kod>,

natomiast w <j>C</j> <kod>x = 5</kod>.</tre´

c>

background image

Definiowanie zawarto´sci prostej

Schemat

<xs:complexType name="MasaTyp">

<xs:simpleContent>

<xs:extension base="xs:decimal">

<xs:attribute name="jm" type="xs:string"/>

</xs:extension>

</xs:simpleContent>

</xs:complexType>

Dokument

<masa jm="kg">10.55</masa>

Definiowanie zawarto´sci mieszanej (1)

Wa˙zna liczno´s´c i kolejno´s´c

<xs:complexType name="ZamówienieTyp"

mixed="true"

>

<xs:sequence>

<xs:element ref="towar" maxOccurs="unbounded"/>

<xs:element ref="adres" />

</xs:choice>

</xs:complexType>

Dokument

<zamówienie>

Zamawiam <towar>p ˛

aczka</towar> i <towar>kaw˛

e</towar>.

Prosz˛

e przysła´

c na <adres>Banacha 2</adres>.

</zamówienie>

background image

Definiowanie zawarto´sci mieszanej (2)

Jak w DTD

<xs:complexType name="TrescTyp"

mixed="true"

>

<xs:choice maxOccurs="unbounded">

<xs:element name="j" type="xs:string"/>

<xs:element name="kod" type="xs:string"/>

</xs:choice>

</xs:complexType>

Dokument

<tre´

c>W <j>Pascalu</j> przypisanie ma posta´

c <kod>x := 5</kod>,

natomiast w <j>C</j> <kod>x = 5</kod>.</tre´

c>

ID i IDREF

I

Typy atrybutów w DTD, dost ˛epne tak˙ze w XML Schema.

I

ID:

I

nazwa w sensie XML,

I

˙zaden inny atrybut o typie ID nie mo˙ze mie´c tej samej

warto´sci,

I

IDREF:

I

jaki´s atrybut o typie ID w dokumencie musi mie´c równ ˛

a

warto´s´c.

I

Ograniczenia:

I

tylko nazwy (w szczególno´sci nie numery),

I

jedna przestrze ´n identyfikatorów dla wszystkich elementów,

I

tylko atrybuty.

background image

Klucze i referencje

I

Wi ˛ezy integralno´sci (identity constraints) w XML Schema:

I

unique – warto´sci w ramach okre´slonego zakresu
unikatowe,

I

key – warto´sci w ramach okre´slonego zakresu unikatowe
i niepuste,

I

keyref – odwołanie do warto´sci wskazanego klucza.

I

Zalety w porównaniu z atrybutami typu ID / IDREF:

I

dowolny typ zawarto´sci (nie tylko nazwa),

I

mo˙zliwych wiele niezale˙znych od siebie ogranicze ´n,

I

odwołanie do konkretnego klucza,

I

kombinacje warto´sci (krotki),

I

kontrolowane zawarto´sci elementów, nie tylko atrybutów.

Klucze i referencje

<xsd:element name="zamówienia-i-faktury"

type="ZamówieniaFakturyTyp">

<xsd:unique name="fakturaId">

<xsd:selector xpath="faktury/faktura"/>

<xsd:field xpath="@nr"/>

<xsd:field xpath="rok"/>

</xsd:unique>

<xsd:keyref name="zamówienieRef"

refer="zamówienieId">

<xsd:selector

xpath="faktury/faktura/do-zamówienia"/>

<xsd:field xpath="@nr"/>

</xsd:keyref>

<xsd:key name="zamówienieId">

<xsd:selector xpath="zamówienia/zamówienie"/>

<xsd:field xpath="numer"/>

</xsd:key>

</xsd:element>


Document Outline


Wyszukiwarka

Podobne podstrony:
materialy kopertynska sp menedzerskie ii , motywacja, motywowanie, system motywacyjny, organizacja
kafeteryjne-new, Studia, notatki dostane, systemy wynagradzan, systemy wynagradzań - ćw
788[1], Studia, notatki dostane, systemy wynagradzan, systemy wynagradzań - ćw, Systemy wynagrodzeń
Projekt systemu wynagrodzeń
Systemy wynagrodzeń (10 stron) 3TL2ERZH2OIDHD7ROCCVP5TQ2DPNUKHMZZUWTTQ
SYSTEMY WYNAGRODZEN
System wynagradzania i oceniania pracowników wykłady(1)
efektywne systemy wynagradzania (3 str), Zarządzanie(1)
System wynagradzania i oceniania pracowników wykłady
SYSTEMY WYNAGRADZANIA I SYSTEMY MOTYWACYJNE 2011
Zarzprzyczynytworzorgan, motywacja, motywowanie, system motywacyjny, organizacja - praca magisterska
SYSTEMY WYNAGRODZEN
Wprowadzenie zroznicowanych zasad premiowania, Studia, notatki dostane, systemy wynagradzan, systemy
efektywne systemy wynagradzania
Motywacyjny system wynagradzania

więcej podobnych podstron