Professional Documents
Culture Documents
CSS PHP
ASP.NET
XML
Ruby On Rails
XHTML
MS Silverlight
Javascript
FLASH, SMIL, SVG
DOM
...
DHTML
XML
XML znači EXtensible Markup Language
XML je markup language isto kao i HTML
XML dizajniran je za opisivanje podataka
XML tagovi nisu predefinirani. Korisnik definira vlastite
tagove
XML koristi Document Type Definition (DTD) ili XML
Schema za opis podataka
XML s DTD ili XML Schemom je samo-opisujući
Izgled XML-a
<?xml version="1.0" encoding="ISO-8859-1"?>
<predavanje>
<xml>
<definicija>
EXtensible Markup Language
</definicija>
<primjena> RSS</primjena>
<primjena>WAP</primjena>
<prikaz id=“1”> css </prikaz>
<prikaz id=“2”> Data islands </prikaz>
<prikaz id=“3”> xsl </prikaz>
<prikaz id=“4”> JavaScript DOM </prikaz>
</xml>
</predavanje>
Sintaksa XMLa
Pravila sintakse XMLa su vrlo jednostavna i vrlo
ij a
striktna nt r a c
e a
l em
e e kl
T D
OO encoding="ISO-8859-1"?>
<?xml version="1.0"
R
<note>
<to>Tove</to>
<from>Jani</from> Sadržaj root
<heading>Reminder</heading> elementa
<body>Don't forget me this weekend!</body>
</note>
5
atributi
XML <data>
<data>
<person
<personid=“o555”
id=“o555”>>
<name>
<name>Mary
Mary</name>
</name>
<address>
<address>
<street>
<street>Maple
Maple</street>
</street> name elementi
<no>
<no>345
345</no>
</no>
<city>
<city>Seattle
Seattle</city>
</city>
</address>
</address>
person elementi
</person>
</person>
<person>
<person>
<name>
<name>John
John</name>
</name>
<address>
<address>Thailand
Thailand </address>
</address>
<phone>
<phone>23456
23456 </phone>
</phone>
<married/>
<married/>
</person>
</person>
</data>
</data>
DTD
Document Type Definition
Svrha DTD-a je definiranje ispravnih sastavnih
blokova XML dokumenta
Definira strukturu dokumenta i dopuštene (legalne)
elemente
Može se napisati kao
Internal – unutar XML dokumenta
External – vanjski DTD dokument
7
DTD: Content Model
<!ELEMENT
<!ELEMENT tag
tag (CONTENT)>
(CONTENT)>
content
model
Content model (model sadržaja):
Složeni = regularni izraz o drugim elementima
Samo tekst = #PCDATA
Prazan sadržaj= EMPTY
Bilo koji sadržaj= ANY
Miješani sadržaj = (#PCDATA | A | B | C)*
DTD: Content Model
A
A se mora pojaviti, samo jednom.
A+
A se mora pojaviti jedan ili više puta.
A?
A se može pojaviti jednom, ili nula puta.
A*
A se može pojaviti bilo koliko puta (nula ili više).
DTD: Content Model
+(A)
A se može pojaviti.
-(A)
A se ne smije pojaviti.
A | B
Ili A ili B se mora pojaviti, ali ne oboje.
A , B
I A i B se moraju pojaviti, u tom redosljedu.
A & B
I A i B se moraju pojaviti, u bilo kojem redosljedu.
Primjer XML <firma>
<firma>
dokumenta: <osoba>
<osoba> <jmbg>
<jmbg>123456789
123456789</jmbg>
</jmbg>
<ime>
<ime>John
John</ime>
</ime>
<ured>
<ured>B432
B432</ured>
</ured>
<telefon>
<telefon>1234
1234</telefon>
</telefon>
</osoba>
</osoba>
<osoba>
<osoba> <jmbg>
<jmbg>987654321
987654321</jmbg>
</jmbg>
<ime>
<ime>Jim
Jim</ime>
</ime>
<ured>
<ured>B123
B123</ured>
</ured>
</osoba>
</osoba>
<osoba>
<osoba>...
... </osoba>
</osoba>
...
...
</firma>
</firma>
Root Element
<!DOCTYPE
<!DOCTYPE firma[
firma[
<!ELEMENT
<!ELEMENT firma
firma (osoba*)>
(osoba*)>
<!ELEMENT
<!ELEMENT osoba
osoba (jmbg,
(jmbg, ime,
ime, ured,
ured, telefon?)>
telefon?)>
<!ELEMENT
<!ELEMENT jmbg
jmbg (#PCDATA)>
(#PCDATA)>
<!ELEMENT
<!ELEMENT ime
ime (#PCDATA)>
(#PCDATA)>
<!ELEMENT
<!ELEMENT ured
ured (#PCDATA)>
(#PCDATA)>
<!ELEMENT
<!ELEMENT telefon
telefon (#PCDATA)>
(#PCDATA)>
]>
]>
<!ELEMENT
<!ELEMENTperson
person (name,
(name,(phone|email)))
(phone|email)))
...
Internal DTD
Ima oblik
<!DOCTYPE root-element [element-declarations]>
<?xml version="1.0"?>
<!DOCTYPE note
[ <!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)> ]>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
External DTD
U XML dokumentu pišemo:
<!DOCTYPE root-element SYSTEM "filename">
<?xml version="1.0"?>
<!DOCTYPE note SYSTEM "note.dtd">
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
15
Zašto koristiti DTD?
Korištenjem DTD-a svaki XML dokument nosi sa
sobom opis vlastitog formata
neovisne grupe ljudi mogu se dogovoriti o korištenju
zajedničkog DTD-a za razmjenu podataka
Vaša aplikacija može koristiti standardni DTD
prilikom provjere da li su podaci koje je primila
ispravno formulirani
Možete koristiti DTD za provjeru vlastitih podataka
16
Građevni blokovi DTD dokumenta
Gledano sa točke gledišta DTD-a XML dokumenti i
HTML dokumenti sastoje se od sljedećih građevnih
blokova:
Elementi – glavni građevni blokovi
Tagovi – markup oznake elemenata
Atributi – pružaju dodatne informacije o elementima
Entiteti – definiraju tekst
PCDATA – tekst kojeg će koristiti parser
CDATA – tekst kojeg NEĆE parsirati parser
17
Atributi
<!ATTLIST element-name attribute-name attribute-type default-
value>
DTD primjer:
XML primjer:
</xs:schema>
Uključivanje XML Schema u XML
<?xml version="1.0"?>
<note
xmlns="http://www.w3schools.com"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.w3schools.com note.xsd">
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
<schema> Element
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.w3schools.com"
xmlns="http://www.w3schools.com"
elementFormDefault="qualified">
...
...
</xs:schema>
Jednostavan element
<xs:element name="xxx" type="yyy"/>
xs:string
xs:decimal
xs:integer
xs:boolean
xs:date
xs:time
<xs:element name="color" type="xs:string" default="red"/>
<xs:element name="color" type="xs:string" fixed="red"/>
Atributi
<xs:attribute name="xxx" type="yyy"/>
xs:string
xs:decimal
xs:integer
xs:boolean
xs:date
xs:time
Atributi
Default
<xs:attribute name="lang" type="xs:string" default="EN"/>
Fixed
<xs:attribute name="lang" type="xs:string" fixed="EN"/>
Required
<xs:attribute name="lang" type="xs:string" use="required"/>
Restrikcije
<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>
<xs:complexType name="personinfo">
<xs:sequence>
<xs:element name="firstname" type="xs:string"/>
<xs:element name="lastname" type="xs:string"/>
</xs:sequence>
</xs:complexType>
XML Schema
http://w3schools.com/schema/default.asp
Za sve koji žele znati više
Što je XSL?
XSL (eXtensible Stylesheet Language) je jezik za
izrađivanje i zapisivanje stilskih predložaka.
dodatak XML-u koji točno opisuje kako
određeni dokument treba biti prikazan
XSL se sastoji od tri dijela:
XSLT (jezik za transformaciju XML dokumenata)
XPath (jezik za definiranje djelova XML dokumenata)
XSL Formating Objects (vokabular za
formatiranje XML dokumenata)
36
XSL
XSL - eXtensible Stylesheet Language
može:
Transformirati XML u XHTML
Filtrirati i sortirati XML podatke
printeru...
Dio je w3c standarda
37
XPath
XPath je sintaksa za definiranje dijelova XML
dokumenata
XPath sadrži biblioteku standardnih funkcija
XPath je jedan od glavnih elemenata XSLT-a
XPath je W3C preporuka
Xpath – XML dokument
<?xml version="1.0" encoding="ISO-8859-1"?>
<bookstore>
<book>
<title lang="en">Harry Potter</title>
<author>J K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
</bookstore>
Xpath
Čvorovi – element, atribut, text, namespace,...
Atomi - elementi bez “djece” ili roditelja
Odnosi:
Roditelj
Dijete
Braća
Potomci
Preci
Dohvat čvorova
Predikati
Nepoznati čvorovi
Set čvorova (relativno određeni)
Primjer korištenja
<bib>
<bib>
<book>
<book> <publisher>
<publisher>Addison-Wesley
Addison-Wesley</publisher>
</publisher>
<author>
<author>Serge
SergeAbiteboul
Abiteboul</author>
</author>
<author>
<author> <first-name> Rick</first-name>
<first-name> Rick </first-name>
<last-name> Hull </last-name>
<last-name> Hull </last-name>
</author>
</author>
<author>
<author>Victor
VictorVianu
Vianu</author>
</author>
<title>
<title> Foundations of Databases</title>
Foundations of Databases </title>
<year> 1995 </year>
<year> 1995 </year>
</book>
</book>
<book
<bookprice=“55”>
price=“55”>
<publisher>
<publisher>Freeman
Freeman</publisher>
</publisher>
<author>
<author> Jeffrey D. Ullman</author>
Jeffrey D. Ullman </author>
<title>
<title> Principles of Databaseand
Principles of Database andKnowledge
KnowledgeBase
BaseSystems
Systems</title>
</title>
<year> 1998 </year>
<year> 1998 </year>
</book>
</book>
</bib>
</bib>
XPath: Jednostavni izrazi
/bib/book/year
/bib/book/year
Rezultat:
<year> 1995 </year>
<year> 1998 </year>
/bib/paper/year
/bib/paper/year
Rezultat : prazno
XPath
//author
//author
Rezultat:<author> Serge Abiteboul </author>
<author> <first-name> Rick </first-name>
<last-name> Hull </last-name>
</author>
<author> Victor Vianu </author>
<author> Jeffrey D. Ullman </author>
/bib//first-name
/bib//first-name
Rezultat : <first-name> Rick </first-name>
Xpath: Tekst čvorovi
/bib/book/author/text()
/bib/book/author/text()
Rezultat: Serge Abiteboul
Jeffrey D. Ullman
52
XSL
W3C propisuje root element XSL dokumenta:
<xsl:stylesheet version="1.0“
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
ILI
<xsl:transform version="1.0“
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
53
XSL - Jednostavan primjer
data.xml:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="render.xsl"?>
<message>Howdy!</message>
render.xsl:
<?xml version="1.0"?>
<xsl:stylesheet version="1.0”
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<!-- one rule, to transform the input root (/) -->
<xsl:template match="/">
<html><body>
<h1><xsl:value-of select="message"/></h1>
</body></html>
</xsl:template>
</xsl:stylesheet>
54
.xsl datoteka
SLT dokument ima .xsl ekstenziju
Započinje sa:
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/
XSL/Transform">
Sadrži jedan ili više predložaka(template), kao npr.:
<xsl:template match="/"> ... </xsl:template>
Završava sa:
</xsl:stylesheet>
55
Pronalazak teksta iz “message”
Predložak <xsl:template match="/"> znači – odaberi
cijeli file
U biti znači dohvat root elementa sa cijelim sadržajem
Unutar ovog predloška,
<xsl:value-of select="message"/> dohvaća dijete od
message
Alternativni Xpath izrazi koji bi također napravili istu
stvar:
./message
/message/text()
./message/text()
56
Sve zajedno
XSL:
<xsl:template match="/">
<html><body>
<h1><xsl:value-of select="message"/></h1>
</body></html>
</xsl:template>
Rezultat:
<html><body>
<h1>Howdy!</h1>
</body></html>
57
xsl:value-of
<xsl:value-of select="XPath izraz"/>
58
xsl:for-each
xsl:for-each
Vrsta petlje
Sintaksa
<xsl:for-each select="XPath izraz">
Tekst i pravila
</xsl:for-each>
Primjer:
<ul>
<xsl:for-each select="//book">
<li> <xsl:value-of select="title"/> </li>
</xsl:for-each>
</ul>
59
Filtriranje izlaza
Dodavanjem kriterija
<ul>
<xsl:for-each select="//book">
<li>
<xsl:value-of
select="title[../author='Terry Pratchett']"/>
</li>
</xsl:for-each>
</ul>
60
Filter details
Filter:
<xsl:value-of
select="title[../author='Terry Pratchett']"/>
author je brat od title, stoga od title se vratimo na
roditelja, book, onda odaberemo author
Obratiti pozornost na navodnike
Legalni operatori su:
= != < >
61
Ali ne funkcionira dobro
Zašto:
<xsl:for-each select="//book">
<li>
<xsl:value-of
select="title[../author='Terry Pratchett']"/>
</li>
</xsl:for-each>
Ovo na izlaz daje <li> i </li> za svaku knjigu, stoga u
nekoliko slučajeva dobijemo prazne elemente liste
62
xsl:if
xsl:if uključivanje sadržaja ako je test istinit
Primjer:
<xsl:for-each select="//book">
<xsl:if test="author='Terry Pratchett'">
<li>
<xsl:value-of select="title"/>
</li>
</xsl:if>
</xsl:for-each>
63
xsl:choose
xsl:choose ... xsl:when ... xsl:otherwise slično kao
switch ... case ... default
Sintaksa:
<xsl:choose>
<xsl:when test=“neki uvjet">
... Neki kod...
</xsl:when>
<xsl:otherwise>
... Neki kod...
</xsl:otherwise>
</xsl:choose>
64
xsl:sort
xsl:sort se može ubaciti unutar xsl:for-each
Atribut od sort definira po ćemu će se sortirati
Primjer:
<ul>
<xsl:for-each select="//book">
<xsl:sort select="author"/>
<li> <xsl:value-of select="title"/> by
<xsl:value-of select="author"/> </li>
</xsl:for-each>
</ul>
65
Xquery - općenito
XQuery je jezik kojim se vrše upiti za XML podatke
XQuery za XML je kao SQL za baze podataka
XQuery se oslanja na Xpath izraze
XQuery podržavaju osnovne baze podataka
XQuery je W3C preporuka
XHTML
EXtensible HyperText Markup Language
Cilj – zamijeniti HTML
Sličan HTML-u ali čišći i stroži
HTML ali u skladu sa XML-om
Od siječnja 2000 dio je w3 standarda
67
Razlike HTML i XHTML
Glavne razlike:
XHTML elementi moraju biti properly nested
<b><i> fesb </i></b>
XHTML dokument mora biti well-formed
<html>
<head> ... </head>
<body> ... </body>
</html>
Imena tagova moraju biti napisana malim slovima
<html> ne <HTML>
Svi XHTML elementi moraju biti zatvoreni
<ul><li> stavka 1 </li><li>stavka 2</li></ul>
68
Razlike HTML i XHTML
Imena atributa moraju biti napisana malim
slovima
Vrijednosti atributa moraju doći u navodnim
znakovima
Zabranjeno je minimiziranje atributa
Umjesto name atributa koristi se id
Lang atribut koje se može primijeniti na bilo koji
elemnt koristi se na sljedeći način
<div lang="no" xml:lang="no">Heia Norge!</div>
XHTML DTD propisuje obavezne elemente
69
Obavezni elementi XHTML-a
<!DOCTYPE Doctype goes here>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Title goes here</title>
</head>
<body>
Body text goes here
</body>
</html>
70
Struktura XHTML dokumenta
Prva linija dokumenta XHTML 1.0 trebala bi biti document type definition:
the DTD.
Strict
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN“
"http://www.w3.org/TR/xhtml1/DTD/ xhtml1-strict.dtd">
Transitional
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN“
"http://www.w3.org/TR/xhtml1/DTD/
xhtml1-transitional.dtd">
Frameset
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN“
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
71
HTML to XHTML
Samozatvarajući tagovi
<br>, <hr>, <link> i <img> pišiu se na
dogovoren način:
<br> => <br />
<img src="..."> => <img src="..." />
Svi tagovi pišu se malim slovima jer je XML case
sensitive:
<BODY> mora se zamjeniti sa <body>
72
HTML to XHTML
Vrijednosti atributa moraju se uvijek pisati u
navodnim znakovima
<table rows=3> => <table rows="3">
Minimizacija atributa nije dozvoljena
<dl compact> =><dl compact="compact">
Validacija:
http://validator.w3.org/check?uri=...
73
Gradivo
Internet općenito AJAX
HTML jQuery
CSS PHP
ASP.NET
XML
Ruby On Rails
XHTML
MS Silverlight
Javascript
FLASH, SMIL, SVG
DOM
...
DHTML