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
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(namespace) ns tzw. alias <ns:pizza xmlns:ns="http://programowanie.org"> Użycie poprzez alias nazwa elementu identyfikator przestrzeni 6 2
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"> </x> <trzyatrybuty a="0" n1:a="1" n2:a="2"/> 9 3
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 (DocumentType Definition) XSD (XML Schema Definition) zalecane przez W3C <?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> Nazwa nieprawidłowa 12 4
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
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
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
Schemat w pliku zewnętrznym Visual Studio: Propertiespliku 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
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 PathLanguage, 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
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