Documente Academic
Documente Profesional
Documente Cultură
Recapitulare
o
Adresare resurse:
Accesare resurse:
Prezentare resurse:
HTTP
n
n
o
o
o
o
o
o
Limbaje de marcare
- (X)HTML -
PCW - C2.Recapitulare
Limbaje de marcare
o set de coduri ce dau instructiuni referitoare
la structura unui text si la modul de afisare
a acestuia
o 1967 GenCode adnotarea manuscriselor
o 1970-1980 TeX carti de matematica
o Scribe, GML, SGML
o HTML, XML, XHTML
o text + instructiuni de marcare (tag-uri)
o prezentarea altor tipuri de informatii
(imagini vectoriale, playlist-uri, servicii
web, etc)
PCW - C2.Recapitulare
Limbaje de marcare
Limbaje de marcare XML:
Extensible Stylesheet Language
MathML
MusiXML
MXML
RSS
Scalable Vector Graphics
Synchronized Multimedia Integration Language
Web Services Description Language
X3D
XAML
XHTML
XPath
PCW - C2.Recapitulare
Limbaje de marcare
Limbaje de marcare de uz general:
XML
HTML
XHTML
MathML
TeX, LaTeX
Atom
RSS
SyncML
PCW - C2.Recapitulare
HTML - Versiuni
o
o
o
o
o
o
o
o
o
o
o
PCW - C2.Recapitulare
HTML vs XHTML
XHTML eXtensible HyperText Markup
Language
- reformulare a HTML/4.01 in XML
- mai extensibil (namespaces includerea de
fragmente din alte limbaje bazate pe XML)
- interoperabilitate cu alte formate de date
(bazate pe XML)
- divizare HTML in componente reutilizabile
(XHTML Modularization)
PCW - C2.Recapitulare
DHTML
o Dynamic HTML
o nu este un limbaj
o termen pentru a desemna arta de a
construi pagini web dinamice si interactive
o tehnologii DHTML:
n limbaje de marcare statice (ex. HTML)
n limbaj de definire a prezentarii (CSS)
n limbaj de creare scenarii la nivel de client (ex.
JavaScript)
n DOM Document Object Model
PCW - C3.JavaScript.DOM.Tehnologii XML
JavaScript
o limbaj de programare destinat crearii de scenarii la
nivelul unei aplicatii client web (scripting)
o utilizat pentru crearea de pagini web interactive
n inserare de text dinamic in HTML (ex: user name)
n reactie la producerea unor events (ex: incarcarea
paginii, user click)
n preluarea de informatii despre calculatorul
utilizatorului (ex: tipul browser-ului)
n realizarea de calcule pe calculatorul utilizatorului
(ex: validarea formularelor)
o standard web (dar nu este suportat in aceeasi
maniera de toate browserele) - ECMAScript
o NU are legatura cu Java decat prin denumire si cateva
similaritati sintactice
PCW - C3.JavaScript.DOM.Tehnologii XML
JavaScript
Diferente intre Javascript si Java
o interpretat nu compilat
o sintaxa si reguli mai relaxate
n mai putine tipuri de date si mai lejere
n nu este necesara declararea variabilelor
n erorile often silent (few exceptions)
JavaScript
Inserare JavaScript in HTML
codul Javascript poate fi adaugat
intr-o pagina web in trei moduri:
1. in sectiunea body a paginii (ruleaza la
incarcarea paginii)
2. in antetul paginii (ruleaza la aparitia
evenimentelor)
3. intr-o legatura catre un fisier script extern
(.js)
PCW - C3.JavaScript.DOM.Tehnologii XML
JavaScript
Exemplu in HTML body
<body>
...
<script type="text/javascript"> Javascript code
</script>
...
</body>
JavaScript
Exemplu in HTML head
<head>
...
<script type="text/javascript"> Javascript code
</script>
...
</head>
o nu ruleaza decat daca functiile sunt apelate explicit
o util pentru actiunile activate de evenimente
n pop up alert message (ex. cand utilizatorul apasa un
buton)
n afisarea unui mesaj de intampinare la refresh-ul paginii
PCW - C3.JavaScript.DOM.Tehnologii XML
JavaScript
Exemplu legarea unu fisier JavaScript
<script src="filename" type="text/javascript">
</script>
<script src="example.js" type="text/javascript">
</script>
JavaScript
Variabile
o
o
o
JavaScript
Cuvinte cheie
abstract boolean break byte case catch char
class const continue debugger default delete
do double else enum export extends false
final finally float for function goto if
implements import in instanceof int interface
long native new null package private
protected public return short static super
switch synchronized this throw throws
transient true try typeof var void volatile
while with
JavaScript
Operatori
+ - * / % ++ -- = += -= *= /= %= ==
!= > < >= <= && || !
o == verifica doar valoarea ("5.0" == 5 este
adevarat)
o === verifica si tipul ("5" === 5 este fals)
o multi operatori fac conversia automata de
tip: 5 < "7" is true
o precedenta este similara cu cea din Java
PCW - C3.JavaScript.DOM.Tehnologii XML
JavaScript
Injectarea dinamica a textului: document.write()
document.write(<p>message</p>");
o afiseaza textul specificat in pagina web
o poate fi utilizat pentru a afisa elemente HTML
o argumentul poate fi un sir de caractere intre
ghilimele sau o variabila
JavaScript
Functii
function name(parameterName, ..., parameterName) {
statements;
}
function quadratic(a, b, c) {
return -b + Math.sqrt(b*b - 4*a*c) / (2*a);
}
o tipul parametrilor si tipul de retur nu sunt specificate
n var nu apare la declararea parametrilor
n functiile fara instructiune de retur returneaza o valoare
nedefinita
o orice variabila declarata in interiorul functiei este locala
(exista doar in acea functie)
PCW - C3.JavaScript.DOM.Tehnologii XML
JavaScript
Apelul functiilor
name(parameterValue, ..., parameterValue);
var root = quadratic(1, -3, 2);
JavaScript
Tratarea evenimentelor
<h2 onclick="myFunction();">Click me!</h2>
o elementele HTML au atribute speciale denumite
evenimente
o Functiile Javascript pot fi utilizate pentru tratarea
evenimentelor
n functia se va executa la interactiunea cu elementul
respectiv
n onclick este doar un exemplu de atribut HTML de tip
eveniment
JavaScript
Tratarea evenimentelor
<h2 onclick="myFunction();">Click me!</h2>
o elementele HTML au atribute speciale denumite
evenimente
o Functiile Javascript pot fi utilizate pentru tratarea
evenimentelor
n functia se va executa la interactiunea cu elementul
respectiv
n onclick este doar un exemplu de atribute HTML de
tip eveniment
PCW - C3.JavaScript.DOM.Tehnologii XML
JavaScript
Functia typeof
typeof(value)
o
typeof(3.14) == "number"
typeof("hello") == "string"
typeof(true) == "boolean"
typeof(foo) == "function"
typeof(a) == "object"
typeof(null) == "object"
typeof(undefined) == "undefined"
JavaScript
Obiecte JS
String, Date, Array, Boolean, Math, RegExp
1. var myFruits=new Array();
myFruits[0]=apple;
myFruits[1]=cherry;
myFruits[2]=orange;
JavaScript
Obiecte JS - creare obiecte
1. Instantiere directa
personObj=new Object();
personObj.firstname="John";
personObj.lastname="Doe";
personObj.age=50;
personObj.eyecolor="blue";
2. Creare sablon al unui obiect
function person(firstname,lastname,age,eyecolor)
{
this.firstname=firstname;
this.lastname=lastname;
this.age=age;
this.eyecolor=eyecolor;
}
myFather=new person("John","Doe",50,"blue");
PCW - C3.JavaScript.DOM.Tehnologii XML
JavaScript
Detectie browser
Obiectul navigator
proprietati:
n appCodeName, appName, appVersion,
cookieEnabled, platform, userAgent
HTML DOM
Tratarea evenimentelor
<h2 onclick="myFunction();">Click me!</h2>
HTML DOM
o Proprietati
<html>
n x.innerHTML
- the text value of x
<body>
n x.nodeName - the name of x
n x.nodeValue
- the value ofWorld!</p>
x
<p id="intro">Hello
n x.parentNode - the parent node of x
n x.childNodes
- the child nodes of x
<script type="text/javascript">
document.getElementById("intro").childNodes[0].nodeValue;
n x.attributes
- the attributes nodes of x
txt=document.getElementById("intro").innerHTML;
document.write("<p>The text from the intro
o Metode
paragraph: " + txt + "</p>");
n x.getElementById(id)
- get the element with a specified id
</script>
n x.getElementsByTagName(name) - get all elements with a
specified
tag name
</body>
n x.appendChild(node)
- insert a child node to x
</html>
n x.removeChild(node) - remove a child node from x
PCW - C3.JavaScript.DOM.Tehnologii XML
Tehnologii XML
XML - caracterizare
o marcaje descriptive: <para>, <imagine/>
o DTD Document Type Definition
n parti componente + structura
n permite validarea documentelor XML (parser)
o independenta datelor
n comunicarea datelor intre sist. incompatibile
n independenta hardware/software
n extinderea marcajelor
o case-sensitivity
PCW - C3.JavaScript.DOM.Tehnologii XML
XML - trasaturi
o suport Web, implementare in toate
limbajele de programare
o utilizare internationala
n suport pentru Unicode
n independent de codificare si limba
o meta-limbaj
n Permite definirea de noi limbaje, portabil
declaratia xml
elemente
atribute
entitati
sectiuni de marcare
instructiuni de procesare
PCW - C3.JavaScript.DOM.Tehnologii XML
XML - constituenti
Declaratia XML
- specifica versiunea si codificarea
documentului
- primul element al documentului
- apare o singura data
- trei atribute posibile:
<?xml version=1.0
encoding=UTF-8
standalone=yes ?>
PCW - C3.JavaScript.DOM.Tehnologii XML
XML - constituenti
Elementele
-
XML - constituenti
Elementele
- trebuie sa fie inchise si imbricate corect
- case-sensitive
- pot contine text si/sau alte elemente
<facultate>
AC are adresa
<adresa>www.ace.tuiasi.ro</adresa>
si este o facultate
</facultate>
<center><p><b>Salut!</b></p></center>
- sunt extensibile
PCW - C3.JavaScript.DOM.Tehnologii XML
XML - constituenti
Elementele
- trebuie sa fie inchise si imbricate corect
- case-sensitive
<bookstore>
<book category="CHILDREN">
<title lang="en">Harry
Potter</title>
- pot contine text si/sau
alte
elemente
<author>J K. Rowling</author>
<ISBN>978-0590353403</ISBN>
<facultate>
<year>2005</year>
AC are adresa
<publisher>Scholastic Press</publisher>
<adresa>www.ace.tuiasi.ro</adresa>
<price>29.99</price>
si este o facultate
</book>
</facultate>
</bookstore>
<center><p><b>Salut!</b></p></center>
- sunt extensibile
PCW - C3.JavaScript.DOM.Tehnologii XML
XML - constituenti
Atribute
-
</book>
XML - constituenti
<message date=12/03/2009>
<from>Tarzan</from>
<to>Jane</to>
furnizeaza informatii<body>Me
aditionale
continut
Tarzan,despre
you Jane</body>
</message>
<book category="CHILDREN">
Atribute
-
<message</book>
<date>12/03/2009</date>
- <from>Tarzan</from>
apar doar in tag-ul de inceput
- <to>Jane</to>
scrise intre ghilimele (simple sau duble)
<body>Me Tarzan, you Jane</body>
</message>
- nu sunt acceptate atribute <message
fara valoare
<date>
- case-sensitive
<day>12</day>
- evitarea atributelor:
<month>03</month>
<year>2009</year>
- nu pot contine valori multiple
</date>
<from>Tarzan</from>
- nu pot contine structuri imricate
<to>Jane</to>
- nu pot fi usor expandate (pentru
modificari
ulterioare)
<body>Me
Tarzan, you
Jane</body>
</message>
- metadate > atribute;
date
-> elemente
PCW - C3.JavaScript.DOM.Tehnologii XML
XML - constituenti
<message id=101
<date>
<day>12</day>
<month>03</month>
<year>2009</year>
</date>
<from>Tarzan</from>
furnizeaza informatii aditionale
despre continut
<book category="CHILDREN"> <to>Jane</to>
<body>Me Tarzan. You Jane</body>
</message>
</book>
<message id=102
apar doar in tag-ul de inceput
<date>
<day>12</day>
scrise intre ghilimele (simple sau
duble)
<month>03</month>
<year>2009</year>
nu sunt acceptate atribute fara
valoare
</date>
case-sensitive
<from>Jane</from>
<to>Tarzan</to>
evitarea atributelor:
<body>Show me the
jungle</body>
- nu pot contine valori multiple
</message>
Atribute
-
XML - constituenti
Referinte la entitati
-
Referinta la entitatate
<
<
>
>
&
&
'
"
XML - constituenti
Sectiuni de marcare
XML - constituenti
<script type=text/javascript>
/*<![CDATA[*/
function matchwo(a,b) {
if (a < b && a < 0) then {
return 1;
}
else {
return 0;
}
}
/*]]>*/
</script>
Sectiuni de marcare
XML - constituenti
Instructiuni de procesare
-
Aplicatii XML
o
Formatarea continutului
n
n
n
n
n
Instrumente XML
o analizoare (Expat, libxml, MSXML, Xerces)
o vizualizatoare (Firefox, OpenOffice, <oXygen/>,
XMLSpy, Stylus, etc)
o formatatoare (FOP, Saxon, Xalan, XEP, etc)
o instrumente de convertire/arhivare (Tidy, OpenSP)
o sisteme de gestiune a bazelor de date orientate pe
text (dbXML, eXist, etc)
o biblioteci/sisteme de procesare a meta-datelor
(Drive.NET, Jena, etc.)
o instrumente de modelare conceptuala (pOWL)
o aplicatii din domeniul social (blog-uri, portaluri, wikiuri, etc.)
PCW - C3.JavaScript.DOM.Tehnologii XML
Spatii de nume
-
Spatii de nume
- vocabularul poate fi desemnat de un URI
- atributul xmlns specifica acest URI,
atasand optional un identificator unic
fiecarui vocabular folosit
- QName nume calificat: prefix:nume
- declarare implicita sau explicita
Spatii de nume
- vocabularul poate fi desemnat de un URI
<lentBook xmlns:b=http://www.library.com/books/>
<b:book>
<b:title>The Godfather</b:title>
<b:author>Mario Puzo</b:author>
<b:year>1969</b:year>
<b:genre>crime</b:genre>
</b:book>
<p:person xmlns:p=http://www.library.com/people/>
<p:title>Mr.</p:title>
<p:name>John Doe</p:name>
<p:email>johndoe@mail.com</p:email>
</p:person>
<lentBook>
</CATALOG>
PCW - C3.JavaScript.DOM.Tehnologii XML
margin-left: 20pt;
</CATALOG>
}
o
o
Scopuri:
n Transformarea structurii/continutului documentelor XML
n Rescrierea documentelor XML => documente
XML/XHTML/alte formate
Inspirat din DSSSL (Document Style Semantics and Specification
Language) folosit pentru SGML
Trei componente:
n XSLT (XSL Transformations) limbaj pentru transformarea
documentelor XML
n XPath limbaj pentru navigare in documente XML
n XSL-FO (XSL Formatting Objects) limbaj pentru formatarea
documentelor XML pe baza unor obiecte de formatare
XPath
o
o
o
o
o
o
XPath
Operatori:
n
n
n
n
n
n
n
n
descendent /
traversare recursiva //
wildcard *
nodul curent .
atribut @
spatiu de nume ::
filtru/index []
pentru booleeni si numere: operatorii uzuali
o or and = != <= < >= >
o + - * div mod
PCW - C3.JavaScript.DOM.Tehnologii XML
XPath
Exemple:
o table/tr[@align=center or
@valign=top]
n selecteaza elementele dintr-un element <tr> avand
specificate atributele align=center sau
valign=top din cadrul unui element <table>
o capitol/nume | capitol/autor
n va furniza toate elementele <nume> si <autor>
descendente ale elementului <capitol>
PCW - C3.JavaScript.DOM.Tehnologii XML
XPath
Functii de baza:
o Noduri: id(), position(), count(),
name(), namespace-uri(), last(),
o Tipuri de noduri: node(), text(),
comment(), processing-instruction()
o Siruri: concat(), starts-with(),
contains(), substring(), stringlength(), translate(),
o Booleeni: not(), true(), false(),
o Numere: sum(), round(), floor(),
number(),
PCW - C3.JavaScript.DOM.Tehnologii XML
XPath - exemple
<book category="CHILDREN">
<title lang="en">Harry Potter</title>
<author>J K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
/bookstore/book[1]/price/text()
30.00
/bookstore/book[price>35]/price
<book category="WEB">
49.99
<title lang="en">XQuery Kick Start</title>
39.95
<author>James McGovern</author>
<author>Per Bothner</author>
/bookstore/book[@category=
<year>2003</year>
WEB']/title
<price>49.99</price>
</book>
XQuery Kick Start
Learning XML
<book category="WEB">
<title lang="en">Learning XML</title>
<author>Erik T. Ray</author>
<year>2003</year>
<price>39.95</price>
</book>
PCW - C3.JavaScript.DOM.Tehnologii XML
</bookstore>
XSLT
XSLT XSL Transformations
o Recomandare a ConsortiuluiWeb (1999)
http://www.w3.org/TR/xslt
XSLT
o pentru a putea fi folosite, constructiile XSLT trebuie
sa apartina spatiului de nume desemnat de URI-ul:
http://www.w3.org/1999/XSL/Transform
XSLT - exemplu
<xsl:template match="/">
<book category="COOKING">
<html>
<title lang="en">Everyday
Italian</title>
<author>Giada De Laurentiis</author>
<body>
<year>2005</year> <h2>My Book Collection</h2>
<price>30.00</price>
<table border="1">
</book>
<tr bgcolor="#9acd32">
<th>Title</th>
<book category="CHILDREN">
<th>Author</th>
<title lang="en">Harry Potter</title>
<th>Year</th>
<author>J K. Rowling</author>
<year>2005</year> </tr>
<price>29.99</price><xsl:for-each select="bookstore/book">
</book>
<tr>
<td><xsl:value-of select="title"/></td>
<book category="WEB"> <td><xsl:value-of select="author"/></td>
<title lang="en">XQuery Kick Start</title>
<td><xsl:value-of select="year"/></td>
<author>James McGovern</author>
</tr>
<author>Per Bothner</author>
<year>2003</year> </xsl:for-each>
<price>49.99</price>
</table>
</book>
</body>
</html>
<book category="WEB">
</xsl:template>
<title lang="en">Learning XML</title>
<author>Erik T. Ray</author>
</xsl:stylesheet>
<year>2003</year>
<price>39.95</price>
PCW - C3.JavaScript.DOM.Tehnologii XML
</book>
</bookstore>
XSLT
Modelul XSLT
o o lista de noduri sursa este procesata pentru a genera un
fragment de arbore de noduri destinatie (output)
o initial se proceseaza nodul radacina, la care se insereaza
noduri copil generate de sabloane aplicate unei liste de
noduri selectate (recursiv) prin pattern-matching via
expresii XPath
Reguli de aplicare XSLT
o regulile sabloanelor identifica noduri asupra carora se vor
aplica transformari
o selectarea nodurilor se face prin XPath
o un sablon se defineste prin elementul <xsl:template>
o aplicarea unui sablon se realizeaza cu elementul
<xsl:apply-templates>
PCW - C3.JavaScript.DOM.Tehnologii XML
XSLT
Crearea arborelui de iesire
o intr-un sablon, orice elemente ce nu apartin
spatiului de nume XSLT sunt copiate (fara a fi
operate modificari) in arborele de iesire
o pot fi generate si alte tipuri de noduri:
<xsl:element>, <xsl:attribute>, <xsl:text>,
<xsl:comment> etc.
o extragerea unor valori se face prin elementul
<xsl:value-of>
o controlul iesirii: <xsl:output>
XSLT
Programe XSLT
o
Constructii repetitive:
n
Constructii de test:
n
<xsl:sort>
<xsl:copy>, <xsl:copy-of>
Sortarea nodurilor:
n
Copierea nodurilor:
n
<xsl:for-each>
<xsl:include>
Variabile si parametri:
n
<xsl:variable>, <xsl:param>
XSLT
Functii XSLT de baza:
o nodul curent:
n current()
o Se au in vedere:
n
n
n
n
numirea elementelor/atributelor
definirea regulilor de utilizare a acestora
specificarea structurii si continutului
oferirea unui set de conventii de numire
PCW - C3.JavaScript.DOM.Tehnologii XML
structura continutului
indicatori de aparitie
conectori
exceptii
PCW - C3.JavaScript.DOM.Tehnologii XML