background image

1

Technologie Internetu

wykład 13: Aplikacje XML – przykłady 

(warstwa prezentacji oraz wymiana 

metadanych)

Piotr Habela

Polsko-Japońska Wyższa Szkoła

Technik Komputerowych

background image

2

W poprzednich wykładach…

• Założenia języków znaczników.
• Języki rozszerzalne (generyczne, 

„metajęzyki”):

– Walory wspólnej ramy syntaktycznej;
– Niezbędne elementy technologii.

• XML jako model danych.
• Schematy dokumentów:

– DTD;
– XML Schema.

background image

3

Plan wykładu

• XHTML:

– Motywacja i stan obecny;
– Wizja dalszego rozwoju (XHTML 2.0).

• XForms – mechanizm formularzy dla 

XHTML

• SVG (Scalable Vector Graphics)
• Wymiana metadanych (XMI):

– Metadane i metamodele;
– UML, MOF oraz inicjatywa MDA.

background image

4

XHTML – nie tylko zdyscyplinowana 

składnia HTML

background image

5

Motywy zmian tradycyjnego HTML

• Problem rozdzielenia treści od sposobu 

prezentacji:

– Pożądane pełne wykorzystanie CSS – jednak nie jest 

ono egzekwowane przez aktualną specyfikację HTML.

• Dopuszcza usterki składniowe:

– Utrudnione przetwarzanie, większa konsumpcja 

zasobów na „małych” urządzeniach.

• Stworzony z myślą o tradycyjnych komputerach:

– Zakłada jednolitą interpretację znaczników na różnych 

platformach;

– Monolityczna specyfikacja – nie przygotowana na 

selektywne implementacje standardu.

• Konieczność osadzania zasobów utworzonych w 

innych językach (zob. dalej).

• Utrudniona walidacja formularzy (zob. dalej).

background image

6

XHTML – założenia

• Składnia XML – m.in. łatwiejsze transformacje oraz prezentacja 

w przeglądarkach.

• Zastąpienie poleceń formatujących arkuszami CSS – tutaj już 

jako wymóg języka.

• Język podzielono na moduły:

– Mogą być selektywnie implementowane na poszczególnych platformach.
– Możliwość definiowania nowych modułów, specyficznych dla zastosowań.
– Integracja z innymi językami rodziny XML.

• Wsparcie przestrzeni nazwowych:

– Pozwala tworzyć strony złożone z różnych języków rodziny XML.

• Uwzględnia zróżnicowanie:

– Platform (zwłaszcza upowszechnienie urządzeń mobilnych) – różne 

możliwości:
1) urządzeń wyjściowych,
2) mocy obliczeniowej.

– Różne prezentacje docelowe (m.in. wydruk, dźwięk…);
– Różni odbiorcy (m.in. udogodnienia dla niepełnosprawnych)
– Różne języki narodowe (znaki, kierunek tekstu…)

background image

7

Reguły poprawności pochodzące od XML

• Nazwy znaczników i atrybutów – obowiązkowo małe 

litery

• Cudzysłowy na wartościach atrybutów
• Poprawne zagnieżdżenie znaczników, deklaracja XML
• Zamiast atrybutów NAME – globalnie unikalne atrybuty 

id

• Zawartość znakowa (np. skrypty) – w deklaracjach 

<![CDATA[…]]>

• Tzw. attribute minimization – niedopuszczalna:

<option selected>

 => 

<option selected=”selected”/>

• Wymóg określenia przestrzeni nazwowej: 

<html 

xmlns="http://www.w3.org/1999/xhtml"

 xml:lang="pl" >

• Obowiązek wskazania standardowego DTD:

<!DOCTYPE

 html 

PUBLIC

 

"-//W3C//DTD XHTML 1.0 Strict//EN"

 

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"

 

>

 

background image

8

Migracja z HTML do XHTML

• Zdefiniowano 3 dialekty:

Strict – wymusza wszystkie reguły;

Transitional – mniej restrykcyjny; łatwość przejścia z 

HTML;

Frameset – służy tworzeniu stron XHTML z ramkami.

• Uwaga na deklarowany typ zawartości (Content 

type):

text/html

 – będzie traktowany jak wariant HTML. 

application/xml

 lub 

application/xhtml+xml

 – traktowany 

jak XML

=> nie wszystkie przeglądarki wspierają;
=> istnieją drobne różnice w przetwarzaniu 

(wartości domyśle, wielkość znaków w nazwach 

tagów itp.)

• Problemy:

ograniczone wsparcie w dzisiejszych przeglądarkach;

utrudnione tworzenie dokumentów – niektóre założenia 

krytykowane jako nadmiernie idealistyczne;

background image

9

Dalsza ewolucja – propozycje XHTML 2.0

• Dość radykalne założenia ukierunkowane na:

– Kompletną eliminację poleceń o charakterze 

formatującym;

– Minimalizację zestawu podstawowych znaczników;

– Kompozycyjność poleceń;

– Ograniczenie zapotrzebowania na skrypty.

• Ciekawsze zmiany:

– Brak nagłówków 

h1-h6

 => zamiast tego 

h

, i 

zagnieżdżenia elementów 

section

;

– Element 

p

 może mieć blokową zawartość (np. listy)

– Brak 

hr

 => zast. przez 

separator

– Brak 

br

 => elementy 

line

 (można „zaczepić” CSS!)

– Brak 

img

 => zast. przez 

object

 z atrybutami 

data

 i 

type

;

– Brak 

a

 => atrybut 

href

 dozwolony dla większości 

znaczników; podobnie często dozwolony – atrybut 

src

;

– Nowy rodzaj listy: 

nl

 (lista nawigacyjna). Zawiera 

odnośniki tworząc w ten sposób odpowiednik menu;

background image

10

XForms – następca formularzy 

HTML

background image

11

XForms – założenia

• Standard formularzy dla XHTML 2.0 (nie będzie 

on posiadał tradycyjnych kontrolek);

• Model danych oddzielony od zagadnienia 

wyglądu kontrolki;

• Znacząco eliminują konieczność stosowania 

skryptów – deklaracyjnie rozwiązana walidacja!

• Całkowicie oparte na XML:

– Definicja formularzy;
– Definicja przetwarzanych w nich danych;
– Postać przekazywanych danych.

• Oddzielenie prezentacji od treści – 

wyodrębniono:

– Model (dane i logika);
– Interfejs użytkownika (prezentacja).

background image

12

XForms – model

• Model stanowi jakby szablon dokumentu 

gromadzącego dane (element instance).

• Zawiera też informację o sposobie przekazywania 

(element submission):

<html xmlns:xf="

http://www.w3.org/2002/xforms

">

<head>

<xf:model>

<xf:instance>

   <osoba>
     <imię/>
     <nazwisko/>
   </osoba>

</xf:instance>
<xf:submission id="formularz1" action="submit.asp" 

method="get"/>

</xf:model>

</head> …

background image

13

XForms – interfejs użytkownika

• Interfejs użytkownika określa zestaw 

kontrolek i ich powiązania z modelem:

…<body>

<xf:

input

 ref="

imię

">

<xf:

label

>First Name</xf:label></xf:input>

<br />
<xf:input ref="

nazwisko

">

<xf:label>Last Name</xf:label></xf:input>
<br />
<xf:

submit

 submission="

formularz1

">

<xf:label>Submit</xf:label></xf:submit>

</body>

background image

14

XForms – najważniejsze elementy

• Element label – obowiązkowy (stanowi opis dla 

użtkownika).

• Inne elementy:

– secret

 – wprowadzanie np. haseł

– textarea

 – pole tekstowe

– trigger

 – przycisk wyzwalający zdarzenie

– submit

 – wysyłanie formularza

– output

 – wyświetlenie wprowadzonych danych

– upload

 – wysyłanie plików (zawiera 

filename

 i 

mediatype

)

– range

 – podawanie wartości z zakresu (atrybuty 

start

end

step

)

– select

 i 

select1

 – listy wyboru 

– zawierają 

item

 posiadające 

label

 i 

value

background image

15

Walidacja danych w formularzu

• Tradycyjna domena skryptów osadzonych na 

stronie

• Tutaj – poprzez kontrolę typologiczną opartą o 

XML Schema:

<xf:instance>
<osoba xmlns="">
  <imię 

xsi:type="xsd:string"

/>

  <nazwisko 

xsi:type="xsd:string"

/>

  <dataUr  

xsi:type="xsd:date"

/>

  <wzrost 

xsi:type="xsd:integer"

/>

</osoba>
</xf:instance>

• Możliwa również kontrola dynamiczna (reguły 

uzależnione od już wprowadzonych danych)

background image

16

Akcje i właściwości

• W reakcji na zadane zdarzenia (w interfejsie) – 

np. message – okienko komunikatu:

<input ref="nazwisko">
<label>Nazwisko</label>

<message level="ephemeral" 

event="DOMFocusIn">Podaj nazwisko</message>

</input>

• Setvalue – ustawienie wartości:

<input ref="zniżka"><label>Zniżka</label> 

<setvalue value="10%" event="xforms-ready"/>

 

</input>

• Właściwości (dotyczą modelu) – m.in.:

– calculate

 – sposób wyliczenia;

– constraint

 – ograniczenie;

– readonly

required

relevant

;

– type

 – typ.

background image

17

Inne ważne technologie „prezentacyjne” 

XML

• XML Frames (XFrames) – zastąpi w XHTML 

rozwiązania ramek pochodzące z HTML

• XML Events
• SMIL (Synchronized Multimedia Integration 

Language ) – budowa interaktywnych 
multimedialnych prezentacji

• Voice XML
• SSML (Speech Synthesis Markup Language)
• SVG (Scalable Vector Graphics) – zob. dalej

background image

18

SVG – skalowalna grafika 

wektorowa

background image

19

SVG – motywacja

• Słabości zwykłych obrazów rastrowych:

– Znaczna objętość;
– Ustalona rozdzielczość;
– Bardzo ograniczone przetwarzanie i adaptowalność 

(do możliwości prezentacyjnych środowiska);

– Nie są interakcyjne;
– Problem z dodaniem informacji opisowych.

• Grafika wektorowa:

– Dostosowywalna do rozdzielczości;
– Można też osadzać zwykłe pikselowe obrazy; 
– Możliwość transformacji i aktywnej interakcji.

background image

20

SVG – budowa dokumentu

• Zwyczajowo – rozszerzenie pliku i prefiks ns 

– svg.

<?xml version="1.0" encoding="ISO-8859-1" 

 standalone="no"?>

 

<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 

20010904//EN"    "http://www.w3.org/TR/2001/REC-

SVG-20010904/DTD/svg10.dtd">

<svg xmlns="http://www.w3.org/2000/svg" 

xmlns:xlink=”http://www.w3.org/1999/xlink” 

width="450" height="500" viewBox="0 0 

450 500">    

<-- TUTAJ ZAWARTOŚĆ -->

    

</svg>

• Język z rodziny XML (zwróćmy też uwagę na 

użycie w nim języka XLink).

background image

21

Przykłady dostępnych konstrukcji

• Figury geometryczne (koło, prostokąt, elipsa, 

wieloboki…)

• Krzywe Beziera
• Łuki, domykanie ścieżek
• Linie, multilinie
• Tekst – różne aranżacje (m.in. osadzony na 

ścieżce)

• Sposoby wygładzenia kształtów
• Dołączanie grafiki rastrowej
• Różnorodne efekty graficzne oparte na tzw. 

filtrach

background image

22

Manipulacja zawartością

• Zaletą opisu w XML jest separowalność i 

adresowalność poszczególnych konstrukcji:

– Grupowanie do późniejszego użycia:

<svg:g id="nazwaGrupy"> 

tutaj przygotowane elementy

 </svg:g>

– Użycie grupy:

<use x="5"  y="5"  xlink:href="#nazwaGrupy"/>

– Transformacje istniejącej zawartości:

<use xlink:href="#nazwaGrupy" transform="scale(-1 

1) translate(-20 20) rotate(45)" />

– Wstawianie zasobów z innego dokumentu.
– Manipulacja z języka skryptowego (np. JavaScript).
– Dowiązywanie definicji stylów CSS.

background image

23

XMI – wymiana metadanych za 

pomocą XML

background image

24

Metadane w językach programowania i 

bazach danych

• Oznaczają dane opisujące inne dane, co jest 

oczywiście terminem bardzo pojemnym.

• Tradycyjne (tj. nie związane z opisem zasobów 

Webu) rozumienie tego terminu wiąże się z 

zależnością „jest wystąpieniem” zachodzącą 

pomiędzy daną a metadaną.

• Np.

obiekt {oid=321, ”Kowalski”, 2500} 

jest wystąpieniem klasy Pracownik

• Skutkuje to obiektywnym rozdziałem pomiędzy 

„meta-warstwami”, wyznaczonym przez przebieg 

związków „jest wystąpieniem” (instance-of).

• W bazach danych (choć nie tylko) można myśleć o 

metadanych jako o danych opisowych 

niezależnych od konkretnego stanu [bazy] danych 

regularnych.

background image

25

Wymiana metadanych – założenia

• Ważnym rodzajem metadanych stały się modele 

tworzone w języku UML (szczególne model klas jako 

podstawowy i najbardziej rozwinięty).

• Istotnym postępem dokonanym przez UML było 

rozpowszechnienie standardowej ramy pojęciowej 

dla budowy modeli systemów.

• Stworzyło to możliwość, aby modele UML 

wytworzone w różnych narzędziach mogły być 

swobodnie wymieniane.

• O ile standard UML nie zawiera w pełni formalnej 

definicji języka, o tyle specyfikacja jego abstrakcyjnej 

składni stwarza podstawy dla sformułowania 

opartego na tekście formatu wymiany modeli.

• Należy przy okazji zapytać: czy tylko metadane UML 

warto wymieniać?

background image

26

UML – zawartość specyfikacji

• Semantyka – podana w postaci nieformalnej.

Nie określa w ścisłym sensie semantyki języka.

W tej części zdefiniowano:

– abstrakcyjną składnię UML (podaną w postaci 

diagramów metamodelu UML);

– objaśnienia wprowadzonych pojęć – w języku naturalnym;
– ograniczenia poprawnościowe związane z 

poszczególnymi pojęciami – podane w języku naturalnym 

oraz sformalizowane w deklaratywnym języku OCL 

(Object Constraint Language – również część standardu 

UML)

• Notacja: objaśnia (nieformalnie) składnię 

konkretną, wiążąc ją ze składnią abstrakcyjną.

• Przykładowe profile, czyli rozszerzenia języka dla 

konkretnych obszarów zastosowań.

background image

27

Metamodel UML – przykładowy fragment

Element

ModelElement

Feature

Namespace

GeneralizableElement

ElementOwnership

Parameter

Classifier

BehavioralFeature

Constraint

StructuralFeature

Attribute

Operation

Method

body : ProcedureExpression

defaultValue : Expression
kind : ParameterDirectionKind

*

constrainedElement  {ordered}

name : Name

ownerScope : ScopeKind
visibility : VisibilityKind

visibility : VisibilityKind
isSpecification : Boolean

0..1

*

namespace

isRoot : Boolean
isLeaf : Boolean
isAbstract : Boolean

feature {ordered}

*

1..*

ownedElement

body : BooleanExpression

constraint

*

* parameter {ordered}

isQuery : Boolean

concurrency : CallConcurrencyKind
isRoot : Boolean
isLeaf : Boolean
isAbstract : Boolean
specification : String

specification

multiplicity : Multiplicity
changeability : ChangeableKind
targetScope : ScopeKind

*

type

1

owner

0..1

1

1

type

initialValue : Expression

*

1

background image

28

Specyfikacja OMG MOF (Meta Object 

Facility)

• Motyw – wspólna rama opisu i przetwarzania modeli w 

różnych językach modelowania.

• Można z uproszczeniem przyjąć że stanowi mocno 

okrojony UML (ta sama terminologia, pozostawiono 

zestaw najbardziej istotnych pojęć).

• Z drugiej strony UML jest zdefiniowany w terminach MOF.

MOF stanowi zatem „wspólny mianownik” dla UML oraz 

narzędzi opartych na innych [meta]modelach (np. IDL, CCM, 

EJB, CWM). Zdefiniowanie tych metamodeli w terminach 

MOF umożliwia ich przechowywanie w jednolitym 

repozytorium oraz określanie odwzorowań ich metadanych.

• Jest zbudowany w oparciu o następujące podstawowe 

pojęcia:

– Klasy: pozwalają opisać metaobiekty;

– Asocjacje: wyłącznie binarne; pozwalają opisywać 

związki pomiędzy metaobiektami;

– Typy proste: reprezentacja innych danych (w tym 

wartości prostych);

– Pakiety: służą modularyzacji modeli.

background image

29

XMI – scenariusz wykorzystania

• A. Jeśli stosujemy własny, niestandardowy 

model danych:

– Opisujemy metamodel naszego systemu (tj. 

współzależności takich pojęć jak klasy, atrybuty, 
asocjacje albo kolumny, tabele, typy proste) w 
kategoriach MOF.

– Generujemy z modelu MOF schematy XML Schema.
– Transformujemy nasze modele do postaci plików XML 

zgodnych z tymi schematami.

• B. Jeśli dysponujemy modelami w UML:

– Istnieją gotowe schematy dokumentów, dostarczone

przez standard.

– Możemy zatem przejść wprost to zapisania modeli UML 

w XML-u.

background image

30

XMI – zawartość standardu

• Standard określa:

– Reguły generowania schematów dla własnych 

opisanych w terminach MOF metamodeli

– Sposób zapisu w XML metadanych zgodnych z tymi 

metamodelami (zgodność w znacznym zakresie 
kontrolowana przez ww. schematy).

– Konkretne schematy dokumentów dla modeli (czyli – 

dla metadanych) UML

• Należy podkreślić, że w obecnej postaci służy 

zapisowi modelu a nie diagramów (gdyż nie 
determinuje postaci wizualnej wykraczającej 
poza formalną treść modelu).

background image

31

Metadane w postaci XMI – przykład

Osoba

Firma

pracownik

*

pracodawca

*

Zatrudnienie

<?xml version='1.0' encoding='ISO-8859-1' ?>
<!DOCTYPE XMI SYSTEM 'UML_1.4_XMI_1.1.dtd'>
<XMI xmi.version='1.2' xmlns:UML='omg.org/UML/1.4'>
  <XMI.header>
    <XMI.metamodel xmi.name='UML' xmi.version='1.4'/>
  </XMI.header>
  <XMI.content>
    <UML:Model xmi.id='S.1' name=‘Zatrudnienia' visibility='public'
        isSpecification='false' isRoot='false' isLeaf='false' isAbstract='false'>
      <UML:Namespace.ownedElement>
        <UML:Class xmi.id='S.2' name=‘Osoba' visibility='public' 
isSpecification='false'
            namespace='S.1' isRoot='true' isLeaf='true' isAbstract='false' 
isActive='false'/>
              

<!-- tutaj opis klasy Firma  -->

        <UML:Association xmi.id='G.1' name=‘Zatrudnienie' visibility='public'
            isSpecification='false' isRoot='false' isLeaf='false' 
isAbstract='false'>
          <UML:Association.connection>
              

<!-- tutaj opisy końców asocjacji -->

          </UML:Association.connection>
        </UML:Association>
      </UML:Namespace.ownedElement>
    </UML:Model>
  </XMI.content>
</XMI>

Sporządzony w oparciu o przykład ze specyfikacji OMG UML 1.5 
(http://www.omg.org)

background image

32

Reprezentacja obiektów w XML - 

możliwości

• Zapis obiektów odbywa się w postaci elementów 

XML i ich atrybutów.

• Można tworzyć powiązania pomiędzy 

elementami reprezentującymi obiekty zarówno 
lokalnymi (znajdującymi się w tym samym 
dokumencie) jak i nielokalnymi.

• Jest to możliwe dzięki zapewnieniu tożsamości 

obiektu (ID lub UUID).

• Obiekty oraz ich definicje mogą być 

przedmiotem wersjonowania. 

• Zgodność z metamodelem możliwa (w pewnym 

zakresie) do wykontrolowania za pomocą 
walidacji XML.

background image

33

XMI – podsumowanie (1)

XML Schema – UML

(określony w standardzie)

XMI

XML Schema

(powstały z metamodelu)

XMI

1.

2.

UML

Własny 
metamodel

background image

34

XMI – podsumowanie (2)

• Co więc to wnosi w porównaniu z 

samodzielnym, bezpośrednim tworzeniem 
definicji XML Schema?

Gotowy język do wymiany modeli UML;

Modelowanie obiektowe przy tworzeniu 
„słownictwa”, z którego powstaje następnie 
schemat dokumentu XMI;

Umożliwia wsparcie narzędziowe dla tworzenia 
dokumentów XMI:

1. Nadawanie unikalnych identyfikatorów,
2. Kontrola poprawności w narzędziach (pozwala 

skontrolować ograniczenia nie uwzględniane w 
samym schemacie XML).

background image

35

MDA – Model Driven Architecture

• MDA jest najbardziej doniosłą nową inicjatywa grupy 

OMG (rozwijającej standardy UML i CORBA).

• Intencją jest podniesienie poziomu abstrakcji w 

procesie budowy systemów, poprzez oddzielenie logiki 

biznesowej od elementów projektowych zależnych od 

konkretnej infrastruktury implementacyjnej (tj. 

języków programowania czy oprogramowania 

pośredniczącego).

• Centralną rolę odgrywa w tej technologii modelowanie 

w UML.

• Same postulaty (modelowanie, izolowanie zagadnień 

realizacyjnych) nie wykraczają koncepcyjnie poza 

uznane zasady inżynierii oprogramowania.

• Jakościową zmianę mogą wprowadzić zasady 

modelowania oraz odpowiednie ich wsparcie 

narzędziowe.

background image

36

MDA – założenia architektoniczne

• MDA wyróżnia następujące 4 warstwy projektu 

systemu:

– abstrakcyjny model biznesowy;
– model systemu niezależny od platformy (PIM – 

platform-independent model)

– model systemu specyficzny dla wybranej platformy 

(PSM – platform-specific model)

– implementacja.

• Inicjatywa koncentruje się zwłaszcza na 

określeniu przejścia pomiędzy drugą i trzecią z 
tych warstw:

– jest najważniejsze dla pomyślnej realizacji projektu;
– stwarza możliwość precyzyjnego opisu odwzorowania

(i częściowej jego automatyzacji).


Document Outline