O lectie de anatomie Web. Disectia unui document HTML

50
O lectie de anatomie Web disectia unui document HTML Dr. Sabin Buraga Facultatea de Informatica, UAIC Iasi, Romania www.purl.org/net/busaco

description

A presentation -- prepared for InfoEducatie 2012, a national IT contest for high-school students -- regarding the main methods to access (and process) parts of a HTML document by using CSS, XPath, and JavaScript (jQuery).

Transcript of O lectie de anatomie Web. Disectia unui document HTML

Page 1: O lectie de anatomie Web. Disectia unui document HTML

O lectie de anatomie Web disectia unui document HTML

Dr. Sabin Buraga

Facultatea de Informatica, UAIC Iasi, Romania

www.purl.org/net/busaco

Page 2: O lectie de anatomie Web. Disectia unui document HTML
Page 3: O lectie de anatomie Web. Disectia unui document HTML

docu-ment HTML

dezvol-tator Web “morbid”

utili-zator(i)

Page 4: O lectie de anatomie Web. Disectia unui document HTML

Aha, delicios… Cum disec o pagina Web?

Page 5: O lectie de anatomie Web. Disectia unui document HTML

structurarea continutului via HTML http://www.w3.org/html/

<head>

<body>

Page 6: O lectie de anatomie Web. Disectia unui document HTML

strate (“skin-uri”) de prezentare pe baza CSS http://www.w3.org/Style/CSS/

<head>

<body>

CSS

Page 7: O lectie de anatomie Web. Disectia unui document HTML

interactiune Web via JavaScript https://developer.mozilla.org/en/JavaScript/

<head>

<body>

Java Script

CSS

Page 8: O lectie de anatomie Web. Disectia unui document HTML

Inainte de a efectua disectia, ce-ar fi sa trasam zonele de interes?

Page 9: O lectie de anatomie Web. Disectia unui document HTML

utilizarea selectorilor CSS – nivelul 3

www.w3.org/TR/css3-selectors/

recomandare W3C (septembrie 2011)

solutie

Page 10: O lectie de anatomie Web. Disectia unui document HTML

p ul ul este descendent al elementului p

p > ul

ul este element-copil al lui p

p + ul

ul este precedat imediat de elementul p

p ~ ul

ul este precedat de un element p

Page 11: O lectie de anatomie Web. Disectia unui document HTML

img[style] elementul img include atributul style

img[class="photo"]

img poseda atributul class

avand valoarea specificata

img[class~="photo"] img are atributul class ai carui lista de

valori include valoarea specificata

Page 12: O lectie de anatomie Web. Disectia unui document HTML

a[href^="http:"] elementul a are atributul href

a carui valoare incepe cu sirul specificat

a[href$=".html"] elementul a poseda atributul href

a carui valoare se termina cu sirul specificat

a[href*="twitter"] elementul a are atributul href

a carui valoare contine sub-sirul specificat

Page 13: O lectie de anatomie Web. Disectia unui document HTML

exemplu

a[title$=".zip"] { background-color: pink; } a[href*="REST"] { font-size: 130%; text-decoration: none; }

Page 14: O lectie de anatomie Web. Disectia unui document HTML

exemplu

extensia Firebug

Page 15: O lectie de anatomie Web. Disectia unui document HTML

Pseudo-clase vizand structura documentului:

:first-child :last-child

:first-of-type :last-of-type :only-child

:only-of-type :nth-child(numar)

:nth-last-child(numar) :nth-of-type(numar)

:empty

Page 16: O lectie de anatomie Web. Disectia unui document HTML

section[id*="week"] li:nth-child(odd) { border: 3px solid red; }

exemplu

Page 17: O lectie de anatomie Web. Disectia unui document HTML

exemplu

Page 18: O lectie de anatomie Web. Disectia unui document HTML

nav > ul.list > li:not(:nth-child(3n))::after { background: darkred; color: #FFF; font-family: sans-serif; text-transform: uppercase; float: right; content: "bisturiu ;)"; }

exemplu

Page 19: O lectie de anatomie Web. Disectia unui document HTML

exemplu

Page 20: O lectie de anatomie Web. Disectia unui document HTML

Pseudo-clase privind interactiunea:

:active :hover :focus

:target

:enabled :disabled :checked

Page 21: O lectie de anatomie Web. Disectia unui document HTML

Cum putem “palpa” zonele de interes ale documentului HTML?

Page 22: O lectie de anatomie Web. Disectia unui document HTML

inspectarea continutului via expresii XPath

www.w3.org/TR/xpath www.w3.org/TR/xpath20

recomandari W3C (1999, 2007)

solutie

Page 23: O lectie de anatomie Web. Disectia unui document HTML

adreseaza parti dintr-un document

opereaza la nivelul structurii abstracte a documentelor HTML/XML (arborele DOM)

Page 24: O lectie de anatomie Web. Disectia unui document HTML

Document

Element

Characters

Page 25: O lectie de anatomie Web. Disectia unui document HTML

expresia XPath

evaluarea se realizeaza in functie de context:

un nod – element, atribut,... – al documentului

pozitie

o functie de biblioteca

Page 26: O lectie de anatomie Web. Disectia unui document HTML

expresia XPath

in urma evaluarii expresiei, e oferit un obiect:

o multime de noduri (node-set)

o valoare logica – true/false

un numar (float)

un sir de caractere

Page 27: O lectie de anatomie Web. Disectia unui document HTML

operatori XPath

descendent / traversare recursiva // substitutor (wildcard) * nodul curent . nodul parinte .. atribut @ filtru/index [ ]

Page 28: O lectie de anatomie Web. Disectia unui document HTML

/html/body/*/section

evaluarea de expresii XPath

via extensia FirePath pentru Firebug – Firefox

Page 29: O lectie de anatomie Web. Disectia unui document HTML

operatori XPath

pentru booleeni si numere pot fi folositi

operatorii uzuali:

or and = != <= < >= >

+ - * div mod

Page 30: O lectie de anatomie Web. Disectia unui document HTML

xsl: xpath – operatori

//*[@class="tools" or @class="presentation"]

Page 31: O lectie de anatomie Web. Disectia unui document HTML

axe XPath

nodul curent (context node) self nodul parinte parent nodurile copil child nodurile descendente descendant nodurile de tip atribut attribute nodurile ascendente ancestor

Page 32: O lectie de anatomie Web. Disectia unui document HTML

axe XPath

self .

parent ..

attribute @

namespace :

Page 33: O lectie de anatomie Web. Disectia unui document HTML

//div/descendant::a

//div/descendant::*

Ce returneaza fiecare expresie XPath?

Page 34: O lectie de anatomie Web. Disectia unui document HTML

functii XPath

noduri: id() position() count() name( ) last() siruri: concat() starts-with() contains() substring() string-length() translate() numere: sum() round() floor() number() booleeni: not() true() false()

Page 35: O lectie de anatomie Web. Disectia unui document HTML

count(//a[@href]) = count(//a)true

toate elementele a includ atributul href

exemplu

Page 36: O lectie de anatomie Web. Disectia unui document HTML

count(//li[@class]) = count(//li)false

exista elemente li

care nu au specificat atributul class

exemplu

Page 37: O lectie de anatomie Web. Disectia unui document HTML

xsl: xpath – functii

specificati semnificatia expresiei XPath:

//nav/*/li[position() mod 2 = 1]

Page 38: O lectie de anatomie Web. Disectia unui document HTML

xsl: xpath – operatori

//*[contains(text(), "XML")]

oferirea tuturor nodurilor ce contin sirul "XML"

Page 39: O lectie de anatomie Web. Disectia unui document HTML

Dar am dori sa “operam”… Putem folosi selectorii CSS si expresiile XPath in programele noastre?

Page 40: O lectie de anatomie Web. Disectia unui document HTML

solutie “naiva”

expresii regulate

Page 41: O lectie de anatomie Web. Disectia unui document HTML

solutie “clasica”& “grea”

DOM

Page 42: O lectie de anatomie Web. Disectia unui document HTML

solutie mai “avansata”

(facila)

jQuery

Page 43: O lectie de anatomie Web. Disectia unui document HTML

“chirurgie” HTML via selectori jQuery

http://docs.jquery.com/Selectors

Page 44: O lectie de anatomie Web. Disectia unui document HTML

// liniile de tabel de pe pozitii pare vor fi redate

// via proprietatile de stil CSS din clasa ‘fundal’

$("table tr:nth-child(even)").addClass("fundal");

selector CSS

obiect jQuery

metoda (func-tionali-

tate)

Page 45: O lectie de anatomie Web. Disectia unui document HTML

suport pentru XPath

orice procesor XSLT (XML Transformations)

libxslt (C – cu numeroase portari) Sablotron (C – portari pentru Perl, PHP,…)

Saxon (C#, Java) TrAX (Java)

XslCompiledTransform (.NET) …

Page 46: O lectie de anatomie Web. Disectia unui document HTML

…si alte resurse de studiat?

Page 47: O lectie de anatomie Web. Disectia unui document HTML

resursele online aferente cursului Tehnologii Web

http://tinyurl.com/tehnologii-web

Page 48: O lectie de anatomie Web. Disectia unui document HTML

o suita de prezentari disponibile public

http://slideshare.net/busaco/presentations

Page 49: O lectie de anatomie Web. Disectia unui document HTML

adrese Web de interes structurate pe domenii (Delicious stacks)

https://delicious.com/stacks/busaco

Page 50: O lectie de anatomie Web. Disectia unui document HTML

O lectie de anatomie Web disectia unui document HTML

continut vizual datorat artistilor Thomas Eakins, Nathaniel Gold,

Sarah Goodreau, Michiel Jansz. van Mierevelt, Barney Reid,

Rembrandt van Rijn, Hillary White

alte resurse grafice preluate de la flickriver.com & phetch.blogspot.com