XML – drugi dio

Što dete naučiti
 Internet općenito  HTML  CSS
 AJAX  jQuery  PHP

 XML
 XHTML  Javascript

 ASP.NET
 Ruby On Rails  MS Silverlight  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

striktna
<?xml version="1.0" encoding="ISO-8859-1"?> <note> <to>Tove</to> <from>Jani</from> <heading>Reminder</heading> <body>Don't forget me this weekend!</body> </note>

5

XML
<data> <person id=“o555” > <name> Mary </name> <address> <street> Maple </street> <no> 345 </no> <city> Seattle </city> </address> </person> <person> <name> John </name> <address> Thailand </address> <phone> 23456 </phone> <married/> </person> </data>

atributi

name elementi

person elementi

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 tag (CONTENT)>
 Content model (model sadržaja):
 Samo tekst = #PCDATA  Prazan sadržaj= EMPTY  Bilo koji sadržaj= ANY  Miješani sadržaj = (#PCDATA | A | B | C)*
content model

 Složeni = regularni izraz o drugim elementima

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.

Jednostavni DTD
Primjer XML dokumenta:
<firma> <osoba> <jmbg> 123456789 </jmbg> <ime> John </ime> <ured> B432 </ured> <telefon> 1234 </telefon> </osoba> <osoba> <jmbg> 987654321 </jmbg> <ime> Jim </ime> <ured> B123 </ured> </osoba> <osoba> ... </osoba> ... </firma>

Jednostavni DTD
Root Element <!DOCTYPE firma[ <!ELEMENT firma (osoba*)> <!ELEMENT osoba (jmbg, ime, ured, telefon?)> <!ELEMENT jmbg (#PCDATA)> <!ELEMENT ime (#PCDATA)> <!ELEMENT ured (#PCDATA)> <!ELEMENT telefon (#PCDATA)> ]>

Element Sadržaj elementa?

DTD: Regularni izrazi
DTD
sekvenca
<!ELEMENT name (firstName, lastName))
<name> <firstName> . . . . . </firstName> <lastName> . . . . . </lastName> </name>

XML

opcionalno
<!ELEMENT name (firstName?, lastName))
<person> <name> . . . . . </name> <phone> . . . . . </phone> <phone> . . . . . </phone> <phone> . . . . . </phone> ...... </person>

ponavljanje
<!ELEMENT person (name, phone*))

alternacija
<!ELEMENT person (name, (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:

<!ATTLIST payment type CDATA "check">
XML primjer:

<payment type="check" />

attribute-type
 CDATA - Vrijednost je tipa “character data”  (en1|en2|..) – Vrijednost mora biti jedinka iz enum liste  ID – Vrijednost je jedinstveni ID  IDREF – Vrijednost je ID drugog elementa  IDREFS – Vrijednost je lista drugi ID-ova  NMTOKEN – Vrijednost je ispravno XML ime  NMTOKENS – Vrijednost je lista ispravnih XML imena  ENTITY – Vrijednost je entitet  ENTITIES – Vrijednost je lista entiteta  ...

default-value
 #REQUIRED  Atribut se zahtijeva  #IMPLIED  Atribut se ne zahtijeva  #FIXED value  Vrijednost atributa je fiksirana

DTD dokument
<!DOCTYPE NEWSPAPER [ <!ELEMENT NEWSPAPER (ARTICLE+)> <!ELEMENT ARTICLE (HEADLINE,BYLINE,LEAD,BODY,NOTES)> <!ELEMENT HEADLINE (#PCDATA)> <!ELEMENT BYLINE (#PCDATA)> <!ELEMENT LEAD (#PCDATA)> <!ELEMENT BODY (#PCDATA)> <!ATTLIST ARTICLE AUTHOR CDATA #REQUIRED> <!ATTLIST ARTICLE EDITOR CDATA #IMPLIED> <!ATTLIST ARTICLE DATE CDATA #IMPLIED> <!ENTITY COPYRIGHT "Copyright 1998 Vervet Logic Press"> ]>

XML Schema
 Definira elemente koji se mogu pojaviti u dokumentu
 Definira atribute koji se mogu pojaviti u dokumentu  Definira koji elementi su djeca  Definira redosljed djece  Definira broj djece  Definira je li element prazan ili sadrži text  Definira tipove podataka za elemente i atribute

 Definira default i fiksne vrijednosti za elemente i atribute

XML Schema
 XML Schema prilagodljiva nadogradnjama
 XML Schema bogatije od DTD  XML Schemas napisane u XML-u  XML Schemas podržavaju tipove podataka  XML Schemas podržavaju namespace

Podrška za tipove podataka
 Lakši opis dopuštenog sadržaja
 Jednostavnija validacija sadržaja  Jednostavniji rad sa podacima iz baze podataka  Restrikcije na podacima  Formati prikaza podataka  Konverzija tipova podataka

XML primjer
 <?xml version="1.0"?>

<note> <to>Tove</to> <from>Jani</from> <heading>Reminder</heading> <body>Don't forget me this weekend!</body> </note>

DTD vs. XML Schema
 <!ELEMENT note (to, from,  <?xml version="1.0"?>

heading, body)> <!ELEMENT to (#PCDATA)> <!ELEMENT from (#PCDATA)> <!ELEMENT heading (#PCDATA)> <!ELEMENT body (#PCDATA)>

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.w3schools.com" xmlns="http://www.w3schools.com" elementFormDefault="qualified"> <xs:element name="note"> <xs:complexType> <xs:sequence> <xs:element name="to" type="xs:string"/> <xs:element name="from" type="xs:string"/> <xs:element name="heading" type="xs:string"/> <xs:element name="body" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element> </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>
 Ovo je samo jedna vrsta restrikcije, postoji ih mnogo!

Restrikcije

Složeni elementi
 <xs:element name="employee">

<xs:complexType> <xs:sequence> <xs:element name="firstname" type="xs:string"/> <xs:element name="lastname" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element>
 <xs:element name="employee" type="personinfo"/>

<employee> <firstname>John</firstname> <lastname>Smith</lastname> </employee>

<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 Definirati djelove XML dokumenta Formatirati XML podatke temeljene na vrijednostima Prikazivati XML podatke na različitim uređajima, ekranu, 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> <book> <publisher> Addison-Wesley </publisher> <author> Serge Abiteboul </author> <author> <first-name> Rick </first-name> <last-name> Hull </last-name> </author> <author> Victor Vianu </author> <title> Foundations of Databases </title> <year> 1995 </year> </book> <book price=“55”> <publisher> Freeman </publisher> <author> Jeffrey D. Ullman </author> <title> Principles of Database and Knowledge Base Systems </title> <year> 1998 </year> </book> </bib>

XPath: Jednostavni izrazi
/bib/book/year
Rezultat: <year> 1995 </year> <year> 1998 </year>

/bib/paper/year
Rezultat : prazno

XPath
//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
Rezultat : <first-name> Rick </first-name>

Xpath: Tekst čvorovi
/bib/book/author/text() Rezultat:
Serge Abiteboul Jeffrey D. Ullman

Rick Hull se ne pojavljuje. Zašto?

Xpath: Atribut čvorovi
/bib/book/@price
Rezultat: “55”

Xpath: Predikati
/bib/book/author[firstname]
Result: <author> <first-name> Rick </first-name>
<last-name> Hull </last-name> </author>

Opdenito
bib * / /bib bib/paper bib//paper //paper paper|book @price bib/book/@price bib element Bilo koji element root element bib element koji je u root paper u bib paper u bib, bez obzira na dubinu paper na bilo kojoj dubini paper ili book price atribut price atribut u book, u bib

XSL je W3C Standard
 XSL je standard preporučen od strane World Wide Web

Consortiuma.  Prva dva dijela jezika (XSLT i XPath) su postala W3C preporuke u studenom 1999.  Cijeli XSL je postao W3C preporuka u listopadu 2001.  XSLT je najvažniji dio XSL standarda . To je dio XSL-a koji se koristi za transformaciju XML dokumenata u drugi XML dokument.  Proces transformiranja : XSL koristi XSLT da transformira XML izvorni kod (source tree) u XML konačni kod (result tree).

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:
  
56

./message /message/text() ./message/text()

Sve zajedno
 XSL: <xsl:template match="/"> <html><body> <h1><xsl:value-of select="message"/></h1> </body></html> </xsl:template>    

<xsl:template match="/"> dohvaća root <html><body><h1> se zapisuje u izlaznu datoteku Sadržaj message elementa se zapisuje u izlaznu datoteku </h1></body></html> se zapisuje u izlaznu datoteku

 Rezultat: <html><body> <h1>Howdy!</h1> </body></html>
57

xsl:value-of
 <xsl:value-of select="XPath izraz"/>
 dohvaća sadržaj bilo kojeg elementa i dodaje ga u

izlaznu datoteku  select atribut je obavezan

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>
 Je li ovo u redu?
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: = != &lt; &gt;

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 - opdenito
 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 "http://www.w3.org/TR/xhtml1/DTD/ xhtml1-transitional.dtd">
 Frameset

Transitional//EN“

<!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  HTML  CSS
 AJAX  jQuery  PHP

 XML
 XHTML  Javascript

 ASP.NET
 Ruby On Rails  MS Silverlight  FLASH, SMIL, SVG  ...

 DOM
 DHTML

Sign up to vote on this title
UsefulNot useful