Wykład 2

Transkrypt

Wykład 2
12-03-2014
Kwalifikacje kadry dydaktycznej kluczem do rozwoju Uczelni
PROJEKT WSPÓŁFINANSOWANY ZE ŚRODKÓW UNII EUROPEJSKIEJ I EUROPEJSKIEGO FUNDUSZU SPOŁECZNEGO
Uniwersytet Kazimierza Wielkiego w Bydgoszczy
Wydział Matematyki, Fizyki i Techniki
specjalność:
Sieci i systemy rozproszone
Technologie mobilne i rozproszone
na platformie .NET
Wykład 2
xaml, cz. 2
Czym jest xml?
Język znaczników
zasady zapisu i stosowania znaczników,
i/lub
standaryzowany zbiór tagów.
xml: brak zbioru tagów, tylko „zasady stosowania”
służy jedynie ujednoliceniu zapisu kolejnych języków
html (zapis treści stron WWW)
SVG (zapis grafiki wektorowej)
można zbudować własny!
Prosta, jednolita składnia – zapisaną informację
łatwo jest przekształcić w bazę danych
łatwo formatować i prezentować na rozmaitych
urządzeniach.
3
1
12-03-2014
Przykłady
kursy walut (www.nbp.pl)
przelew bankowy (BGK)
<przelewy>
<przelew>
<rach_obc>38 1130 0007 2001 0000 4444 0003</rach_obc>
<bank>10800001</bank>
<rachunek>63 1080 0001 1232 1232 1154 8412</rachunek>
<nazwa>Janina Kowalska</nazwa>
<kwota>123.10</kwota>
<tresc>faktura nr 12345</tresc>
</przelew>
4
problem:Unikalność nazw – „title”
<?xml version="1.0" encoding="utf-8" ?>
<section>
<title>Book-Signing Event</title>
<signing>
<author
title="Mr"
name="Vikram Seth" />
<book title="A Suitable Boy" price="$22.95" />
</signing>
<signing>
<author title="Dr" name="Oliver Sacks" />
<book title="The Island of the Color-Blind”
price="$12.95" />
</signing>
</section>
5
Przestrzeń nazw
„Kontener” nazw
podobnie, jak w Java, C#, można kilka,
definiowana jako element xml,
identyfikowana referencją IRI lub URI,
symbol xmlns
xml + ns (name space)
„ns” – tzw. alias
<ns:pizza xmlns:ns="http://programowanie.org">
Użycie
poprzez alias
nazwa elementu
identyfikator przestrzeni
6
2
12-03-2014
Alias i identyfikator
<ns:pizza xmlns:ns="http://programowanie.org">
Identyfikator przestrzeni nazw
http://programowanie.org
adres URL (niekoniecznie istniejący)
często odnośnik do tzw. schematu dokumentu xml
Alias przestrzeni nazw
ns
Użycie podczas deklarowania znaczników:
<alias:nazwa_znacznika>
Atrybuty przestrzeni nazw
<ns:pizza xmlns:ns="http://abc.net"
ns:lang="PL">
7
Węzły wielojęzyczne
Atrybut lang
można stosować tzw. węzły wielojęzyczne
ułatwia tworzenie dokumentów wielojęzycznych
element <ns:cena> ma atrybut xml:lang o wartości PL,
a drugi — EU.
<?xml version="1.0" encoding="utf-8" ?>
<ns:pizza xmlns:ns="http://4programmers.net">
<ns:nazwa>Peperoni</ns:nazwa>
<ns:cena xml:lang="PL">15,50</ns:cena>
<ns:cena xml:lang="EU">4</ns:cena>
</ns:pizza>
8
Takie same nazwy atrybutów
<x xmlns:n1="http://inna.przestrzen.pl"
xmlns:n2="http://inna2.przestrzen.pl">
<trzyAtrybuty a="0" n1:a="1" n2:a="2"/>
</x>
9
3
12-03-2014
Schemat dokumentu
Jak to zdefiniować? Jak jednoznacznie zapisać??
I po co??
10
Składnia dokumentu
Elementy, atrybuty
czy nazwy prawidłowe?
czy wartości wszystkie wymagane/opcjonalne?
czy typ wartości prawidłowy?
<uczestnicy>
<osoba nazwisko="Rak" imię="Jan" rok="1991"/>
<osoba nazwisk=„Nowak" im="Jan" rok="1971"/>
<osoba
imię="Adam" rok="000"/>
</uczestnicy>
11
Weryfikacja poprawności
Schemat dokumentu
określa
strukturę dokumentu
listę poprawnych
elementów
Listę atrybutów tych
elementów
Schematy
DTD (Document Type
Definition)
XSD (XML Schema
Definition)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE osoba [
<!ELEMENT osoba (imie, drugieImie,
nazwisko)>
<!ELEMENT imie (#PCDATA)>
<!ELEMENT drugieImie (#PCDATA)>
<!ELEMENT nazwisko (#PCDATA)>
]>
<osoba>
<imie>Zygfryd</imie>
<drugieImie>Zenobiusz</drugieImie>
<XXazwisko>Wawrzyniak</XXazwisko>
</osoba>
zalecane przez W3C
Nazwa nieprawidłowa
12
4
12-03-2014
Dlaczego XSD?
Ograniczenia DTD (m.in.):
słaba kontrola typów atrybutów, minimalna elementów
elementy nie mogą określać wartości domyślnych
niemożność zadeklarowania dowolnej kolejności podelementów
(np. dowolna kolejność nazwisko, imię w elemencie osoba)
brak wsparcia dla przestrzeni nazw!
inna składnia, niż zwykły XML .
Dlaczego XSD?
schemat korzysta z języka XML, ma taką samą składnię,
definiuje elementy, atrybuty oraz typy danych,
jest bardziej użyteczny oraz rozbudowany niż DTD,
jest opracowany i zalecany przez W3C.
Idea utworzenia XSD została zapoczątkowana przez firmę Microsoft.
W 2001 r. patronat nad powstaniem i utworzeniem standardu objęła W3C
13
Definiowanie XSD
XML Schema Definition
standardowa składnia XML,
składniki definicji należą do przestrzeni nazw
http://www.w3.org/2001/XMLSchema
wyróżnionej zwykle prefiksem xsd albo xs.
Definicja schematu
w dokumencie xml-owym
zawarta w elemencie głównym xsd:schema
lub w oddzielnym dokumencie
14
Postać dokumentu schematu
<xsd:schema
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
....
</xsd:schema>
Prefiks xsd zalecany
określony w deklaracji przestrzeni nazwowej w elemencie schema
Deklaracja elementu i jego typu
element xsd:element
typ elementu: atrybut type
<xsd:element name="nazwaElementu" type="xsd:string" />
Deklaracja atrybutu i jego typu
element xsd:attribute
typ – jw.
<xsd:attribute name="nazwaAtrybutu" type="xsd:integer" />
15
5
12-03-2014
Typy elementów i atrybutów
Predefiniowane typy proste (www.w3.org/TR/xmlschema-2)
znakowe i logiczne
string, normalizedString, token, boolean
liczbowe
positiveInteger, negativeInteger, integer, long, decimal, float, byte, …
binarny:
base64Binary (każde 6 bitów kodowane symbolem alfanumerycznym)
daty i czasu:
time: np. 13:20:00.000, 13:20:00.000-05:00
dateTime : np. 1999-05-31T13:20:00.000-05:00
duration: np. P1Y2M3DT10H30M12.3S
date (oraz ich wycinki): np. 1999-05-31
anyURI (znakowy zgodny ze składnią URI): np. http://www.w3c.org/)
language (kody języków narodowych): np. en-US, pl
XML: ID, IDREF, IDREFS, NOTATION...
Można także definiować typy własne.
16
Typy własne
(za www.w3schools.com)
Najczęściej jako:
zawężenie typu prostego (restriction)
listę wartości innego typu prostego (list)
Element „age” z zakresu <0, 120>
<xs:element name="age">
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:minInclusive value="0"/>
<xs:maxInclusive value="120"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
17
Typy własne
(za www.w3schools.com)
Element „car” z okreslonymi wartościami
Audi, Golf, BMW
<xs:element name="car">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="Audi"/>
<xs:enumeration value="Golf"/>
<xs:enumeration value="BMW"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
18
6
12-03-2014
Typy własne
(za www.w3schools.com)
jw. – definiowanie typu
<xs:element name="car" type="carType"/>
<xs:simpleType name="carType">
<xs:restriction base="xs:string">
<xs:enumeration value="Audi"/>
<xs:enumeration value="Golf"/>
<xs:enumeration value="BMW"/>
</xs:restriction>
</xs:simpleType>
carType może być użyty dla innych elementów (atrybutów)
19
Typy własne
(za www.w3schools.com)
Seria znaków literowych (typ string)
<xs:pattern value="[a-z]"/>
Sekwencja 5 cyfr (typ integer)
<xs:pattern value="[0-9][0-9][0-9][0-9][0-9]"/>
Określone wyrazy
<xs:pattern value="male|female"/>
Liczba znaków
<xs:length value="8"/>
<xs:minLength value="5"/>
<xs:maxLength value="8"/>
20
Schemat w dokumencie
21
7
12-03-2014
Schemat w pliku zewnętrznym
Visual Studio: Properties pliku xml-owego
22
XML wg Microsoft…
XAML
Extensible Application Markup Language
język opisu interfejsu użytkownika
m.in. w technologii Windows Presentation Foundation
(WPF - element platformy .NET Framework od wersji 3.0)
Cechy
oparty na języku XML
zoptymalizowany do opisu bogatych, wizualnych
interfejsów (jak np. Adobe Flash)
Inne tego typu:
SVG (opis grafiki wektorowej), LZX (interfejsy graficzne)
XUL (do budowy rozszerzeń dla Firefoksa)
23
XAML w projekcie
• Design
•UserControl
• Grid
• XAML
24
8
12-03-2014
Struktura opisu XAML
<UserControl x:Class="SilverlightApplication5.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="400">
<Grid x:Name="LayoutRoot" Background="White"
Loaded="LayoutRoot_Loaded" GotFocus="LayoutRoot_GotFocus">
</Grid>
</UserControl>
25
Namespace: xmlns
Dwie podstawowe przestrzenie nazw
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
zawiera klasy WPF (Button, Grid, Label, …)
domyślna przestrzeń nazw (bez prefiksu)
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
zawiera różne pomocnicze cechy XAML
domyślnie zmapowana do prefiksu x
przy odwołaniu - prefiks
<x:ElementName>
26
Inne rozszerzenia
XSL (eXtensible Stylesheet Language)
język, który opisuje przekształcenia dokumentów XSL; obejmuje:
XSLT — XSL Transformation,
język dla przekształceń dokumentów XML,
XPath — XML Path Language,
język opisujący dostęp lub odwołanie do fragmentów XML,
XSLF - XSL Formatting,
słownik opisujący formatowanie.
Zastosowanie
pozwala na opis transformacji dokumentów XML
oraz sposobu ich formatowania, np.:
przekształcenie dokumentu XML na dokument wizualny, który może
zostać wydrukowany; w XSLT można stosować HTML i CSS, a
następnie dynamicznie tworzyć stronę WWW, która będzie pobierać
informacje z pliku XML - takie informacje będą np. formatowane w
postaci tabeli HTML.
27
9
12-03-2014
Od czego warto zacząć…
XML dla niewtajemniczonych
http://office.microsoft.com/pl-pl/word-help/xml-dlaniewtajemniczonych-HA010034022.aspx
XML in 10 points (po polsku!)
http://www.w3.org/XML/1999/XML-in-10-points.pl.html
Internetowa „szkoła”
http://www.w3schools.com/schema/schema_simple.asp
28
10