03_hypertext_markup_language
03_hypertext_markup_language
Antonio Ferrara | Fondamenti del Web (Ingegneria del Software e Fondamenti Web)
3 HyperText
Markup Language
Antonio Ferrara | Fondamenti del Web (Ingegneria del Software e Fondamenti Web)
Introduzione
ad HTML
L’obiettivo principale di HTML è quello di permettere i riferimenti incrociati fra documenti mediante hyperlinks
(collegamenti ipertestuali), ovvero di rendere i documenti ipertesti
HTML fu sviluppato da Berners-Lee al CERN di Ginevra assieme ad HTTP, sulla base del metalinguaggio SGML
Attualmente è mantenuto da W3C ed è giunto alla versione 5
Esso è il linguaggio principale per la descrizione della struttura delle pagine Web (impaginazione e formattazione)
Ad esempio ci permette di definire titoli, paragrafi, tabelle, elenchi, form, …
Oggi HTML è usato principalmente per disaccoppiare la parte logica e semantica di una pagina web dalla sua
rappresentazione
Oggi i documenti HTML sono in grado di incorporare molte tecnologie, che offrono la possibilità di aggiungere al
documento ipertestuale controlli sofisticati sulla resa grafica, interazioni dinamiche con l'utente, animazioni interattive e
contenuti multimediali
La rappresentazione della pagina web secondo la descrizione di HTML è effettuata dal browser
Antonio Ferrara | Fondamenti del Web (Ingegneria del Software e Fondamenti Web)
Introduzione
ad HTML
<!DOCTYPE html>
<html lang="en">
<head>
<title>Sample page</title>
</head>
<body>
<h1>Sample page</h1>
<p>This is a <a href="demo.html">simple</a> sample.</p>
<!-- this is a comment -->
</body>
</html>
Antonio Ferrara | Fondamenti del Web (Ingegneria del Software e Fondamenti Web)
Elementi
in HTML
<!DOCTYPE html>
<html lang="en">
<head>
<title>Sample page</title>
</head>
<body>
<h1>Sample page</h1>
<p>This is a <a href="demo.html">simple</a> sample.</p>
<!-- this is a comment -->
</body>
</html>
Antonio Ferrara | Fondamenti del Web (Ingegneria del Software e Fondamenti Web)
Elementi
in HTML Ogni elemento definito in HTML5 ha un content model, ovvero una descrizione dei
contenuti attesi
Un elemento HTML5 deve avere contenuti che rispecchino il suo content model
Antonio Ferrara | Fondamenti del Web (Ingegneria del Software e Fondamenti Web)
Attributi
in HTML
<!DOCTYPE html>
<html lang="en">
<head>
<title>Sample page</title>
</head>
<body>
<h1>Sample page</h1>
<p>This is a <a href="demo.html">simple</a> sample.</p>
<!-- this is a comment -->
</body>
</html>
• Ogni tag può avere degli attributi nel tag di inizio (come href="demo.html") che controllano il modo in cui esso funziona
• Le virgolette (o gli apici) possono essere omessi dai valori degli attributi se questi non contengono sono spazi
• Alcuni attributi possono essere trovati senza valore, in quanto si tratta di attributi booleani il cui unico valore concesso è, in
generale, il nome dell’attributo stesso
(es. <input type="text" disabled=“disabled"> può essere scritto come <input type="text" disabled> e realizza
l’opposto di <input type="text">)
• Alcuni attributi sono comuni a tutti gli elementi di HTML (fra questi troviamo class, hidden, id, lang, style, title)
Antonio Ferrara | Fondamenti del Web (Ingegneria del Software e Fondamenti Web)
Dal documento HTML
al Document Object Model - DOCTYPE: html
- html lang="en"
- head
<!DOCTYPE html>
- #text:
<html lang="en">
<head> - title
- #text: Sample page
<title>Sample page</title>
- #text:
</head>
<body> - #text:
<h1>Sample page</h1> - body
<p>This is a <a href="demo.html">simple</a> sample.</p> - #text:
<!-- this is a comment --> - h1
</body> - #text: Sample page
</html> - #text:
- p
- #text: This is a
• La struttura che il browser utilizza per rappresentare un documento HTML è - a href="demo.html"
- #text: simple
quella del Document Object Model (DOM) ottenuto trasformando il documento - #text: sample.
in un albero (operazione di parsing) - #text:
• I nodi dell’albero sono, in generale, un Document, e altri nodi (vedi più avanti) fra - #comment: this is a comment
- #text:
cui Element, Text e Comment
Antonio Ferrara | Fondamenti del Web (Ingegneria del Software e Fondamenti Web)
Dal documento HTML
al Document Object Model
L’albero DOM costruito può essere quindi manipolato da script Web API
presenti all’interno della pagina e inglobati mediante l’elemento Troverai questo
script contenitore quando
Antonio Ferrara | Fondamenti del Web (Ingegneria del Software e Fondamenti Web)
Il Document
Object Model
Window
Document
Element
DocumentType
Il Document Object Model (DOM) permette di descrivere la struttura di un
documento, rappresentato mediante un’istanza dell’interfaccia Document
Questo oggetto rappresenta una pagina caricata nel browser ed è l’entry point per il
Element (html)
contenuto della pagina, ovvero contiene l’albero DOM
Element
Ogni nodo dell’albero DOM è basato sull’interfaccia Node (classe base astratta) che Element
fornisce proprietà per ottenere informazioni sul nodo e metodi per creare, eliminare
e organizzare i nodi all’interno del DOM
Gli oggetti Node possono essere di diversi tipi, fra cui Document, DocumentType,
Element, Text, Comment o ProcessingInstruction
Esempio di documento
con cinque nodi (tre elementi),
inseriti in un nodo Window
Antonio Ferrara | Fondamenti del Web (Ingegneria del Software e Fondamenti Web)
L’interfaccia
Node Come detto, ogni nodo implementa proprietà e
metodi che permettono di muoversi all’interno
<!doctype html> dell’albero ed estenderlo
<html>
<head> childNodes firstChild
<title>My home page</title> body
</head> 0 h1
<body>
My home page
<h1>My home page</h1>
<p>Hello, I am Marijn and this is my home page.</p> previousSibling
Antonio Ferrara | Fondamenti del Web (Ingegneria del Software e Fondamenti Web)
L’interfaccia
Document
Ogni documento (HTML e XML) è rappresentato all’interno di un DOM come un oggetto dell’interfaccia Document
L’interfaccia Document descrive le proprietà e i metodi comuni a ogni tipo di documento
L’elemento documento è il nodo Element figlio di un documento, è accessibile con la proprietà documentElement, ed è
rappresentato dall’elemento HTML html
Anche un nodo DocumentType è figlio diretto di un documento
Web API
Document.URL Document.readyState
Document.doctype Document.title
Document.documentElement Document.append()
Document.forms Document.createElement()
Document.links Document.createEvent()
Document.images Document.createTextNode()
Document.cookie Document.getElementById()
Document.lastModified Document.getElementsByClassName()
Document.location Document.getElementsByTagName()
Antonio Ferrara | Fondamenti del Web (Ingegneria del Software e Fondamenti Web)
Definizione di
HTML
HTML è stato definito come un’applicazione dello Standard
Generalized Markup Language (SGML), un metalinguaggio per la
definizione di linguaggi di markup
SGML discende da GML (1969) ed è diventato uno standard ISO nel
1986
In generale, i documenti delle applicazioni SGML non si focalizzano primariamente sulla resa visiva, quanto invece sui ruoli
logico-semantici di ciascuna parte del documento
Antonio Ferrara | Fondamenti del Web (Ingegneria del Software e Fondamenti Web)
Linguaggi
di markup
Il termine markup deriva dall’ambiente tipografico, dove alcune parti del contenuto di un documento veniva contrassegnate
(appunto, marcate) allo scopo di segnalarle all’editore
Qualunque indicazione “esterna” al testo (es. punteggiatura, spazi, sottolineature, evidenziazioni) rappresentano la marcatura di
un documento
• Markup puntuazionale: consiste nell’usare un insieme prefissato di segni per fornire informazioni sintattiche sul testo
• Markup presentazionale: consiste nell’indicare direttive grafiche per rendere più chiara la presentazione del contenuto
• Markup procedurale: consiste nell’indicare con precisione ad un sistema automatico che effetto attivare e che procedura (serie
di istruzioni) eseguire nella visualizzazione del contenuto (es. LaTeX)
• Markup descrittivo: consiste nell’identificare strutturalmente il tipo di ogni elemento del documento
Antonio Ferrara | Fondamenti del Web (Ingegneria del Software e Fondamenti Web)
Metalinguaggi
di markup (SGML)
Un linguaggio di metamarkup (o metalinguaggio di markup) come SGML permette quindi di fornire regole di interpretazione del
markup e di estendere o controllare il significato del markup
In particolare, SGML è un metalinguaggio per la definizione di markup descrittivo mediante elementi delimitati da tag e inseriti
all’interno di una struttura gerarchica (la presentazione è rimandata a fogli di stile esterni)
Antonio Ferrara | Fondamenti del Web (Ingegneria del Software e Fondamenti Web)
Metalinguaggi
di markup (SGML)
15 marzo 2022
Caro Giovanni,
<!DOCTYPE letter [
come va? Quando ti decidi a venire a trovarmi?
<!ELEMENT letter - - (data, saluti, corpo,
chiusura, firma) > Ci sentiamo presto
<!ATTRLIST letter Fabio
filecode NUMBER #REQUIRED
secret (yes|no) “no”>
<!ELEMENT corpo - - (para)*> <letter filecode=“9710260023”>
<!ELEMENT (data, saluti, chiusura, firma) <data>15 marzo 2022</data>
- - (#PCDATA)> <saluti>&saluto Giovanni, </saluti>
<!ELEMENT para - - (#PCDATA | enfasi)> <corpo>
<!ELEMENT enfasi - - (#PCDATA)> <para>come va?</para>
<!ENTITY saluto “Caro”> <para>Quando ti <enfasi> decidi
]> </enfasi> a venire a trovarmi?
</para>
</corpo>
<chiusura>Ci sentiamo presto</chiusura>
<firma>Fabio</firma>
</letter>
Antonio Ferrara | Fondamenti del Web (Ingegneria del Software e Fondamenti Web)
Dichiarazione
SGML
Set di caratteri
Partendo da un BASESET noto di caratteri, permette di specificare un nuovo set DESCSET che può eventualmente mappare
in maniera differente i bit ai caratteri del BASESET
Sintassi concreta
Introduce i dettagli della sintassi concreta per il documento, ovvero quali delimitatori, caratteri speciali, e lunghezze
ammettere
In particolare, DELIM permette di specificare i caratteri dei delimitatori: STAGO (Start of TAG Open, <), ETAGO (End of TAG
Open, </), TAGC (TAG Close, >)
Antonio Ferrara | Fondamenti del Web (Ingegneria del Software e Fondamenti Web)
Document Type Definition
di SGML
La definizione del tipo di documento permette di specificare le regole che consentono di verificare la correttezza
strutturale di un documento
Vengono elencati gli elementi ammissibili, il contesto in cui possono apparire, ed altri eventuali vincoli strutturali
Concretamente, permette di modellare una classe di documenti mediante la sintassi dei suoi costrutti di markup
Può essere dichiarato all’interno o all’esterno del documento
<!DOCTYPE mydoc [
<!ELEMENT ...
]>
Antonio Ferrara | Fondamenti del Web (Ingegneria del Software e Fondamenti Web)
Document Type Definition
di SGML
Elementi Sono le parti di un documento dotate di senso proprio
La definizione di un elemento deve specificare il suo nome, informazioni su tag di inizio e fine e la struttura
del suo contenuto: <!ELEMENT NOME ST ET CONTENTMODEL>
<!ELEMENT OL - - (LI)+>
<!ELEMENT BR - O EMPTY>
<!ELEMENT OPTION - O #PCDATA>
<!ELEMENT TABLE - - (CAPTION?, (COL* | COLGROUP*), THEAD?, TFOOT?, TBODY+)>
Start tag (ST) ed end tag (ET) possono essere obbligatori (-) o meno (O)
Il content model specifica quali sono gli elementi leciti all’interno di un elemento, in quale numero e quale
posizione rispetto agli altri
Può contenere ANY, EMPTY, #PCDATA o un content model più elementare
Il separatore , rappresenta un AND ordinato, mentre | rappresenta un OR
I quantificatori sono i classici ? (0 o 1), * (0 o più), + (1 o più)
Antonio Ferrara | Fondamenti del Web (Ingegneria del Software e Fondamenti Web)
Document Type Definition
di SGML
Elementi <TABLE>
<THEAD><TR>Table 1
<TBODY><TR><TD>1<TD>2<TD>3
<TR><TD>6<TD>8<TD>5
<TBODY><TR><TD>23456</TD><TD>12345</TD>
<!ELEMENT TABLE - - (CAPTION?, (COL* | COLGROUP*), THEAD?, </TABLE>
TFOOT?, TBODY+)>
<!ELEMENT THEAD - O (TR)+ -- table header --> " Tabella valida
<!ELEMENT TFOOT - O (TR)+ -- table footer -->
<!ELEMENT TBODY O O (TR)+ -- table body -->
<!ELEMENT COLGROUP - O (COL)* -- table column group -->
<!ELEMENT COL - O EMPTY -- table column --> <TABLE>
<!ELEMENT TR - O (TH|TD)+ -- table row --> <THEAD><TR>Table 2
<TBODY><TR><TD>1<TD>2<TD>3
<TR><TD>6<TD>8<TD>5
Estratto di HTML 4.01 Strict DTD <TFOOT><TR>Marzo 2022</TR>
</TABLE>
Antonio Ferrara | Fondamenti del Web (Ingegneria del Software e Fondamenti Web)
Document Type Definition
di SGML
Attributi La dichiarazione con ATTLIST permette di specificare quali attributi possono caratterizzare ciascun elemento,
e per ciascuno indicare il tipo di dato (es. CDATA, NUMBER, ID, una lista come (left|right|center), o
un’entità come Talign)
La terza colonna prevede di indicare un valore di default letterale, oppure #REQUIRED, o #FIXED con un
valore preciso, o anche #IMPLIED se l’applicazione può determinarne uno internamente
<!ATTLIST TABLE
width CDATA #IMPLIED
cols NUMBER #IMPLIED
align %Talign; #IMPLIED
>
Entità SGML permette anche di definire entità che funzionano da macro che possono essere espanse altrove nel DTD
<!ENTITY % TAlign “(left|center|right)">
<!ENTITY % heading "H1|H2|H3|H4|H5|H6">
È necessario definire entità anche per rappresentare quei caratteri riservati al markup che possono essere richiamati
nel documento come &entity_name; o &#entity_number
Ad es. <, >, &, ", ' sono espressi come <, >, &, " e ' rispettivamente, o come <,
>, &, " e '
Antonio Ferrara | Fondamenti del Web (Ingegneria del Software e Fondamenti Web)
Cenni
di XML
XML (eXtensible Markup Language) è, come SGML, un metalinguaggio di markup
Esso nasce, infatti, come un sottoinsieme più rigido di SGML, avendo un set di caratteri e una sintassi concreta fissati
Antonio Ferrara | Fondamenti del Web (Ingegneria del Software e Fondamenti Web)
Cenni
di XML
Struttura di un documento XML
Antonio Ferrara | Fondamenti del Web (Ingegneria del Software e Fondamenti Web)
Cenni
di XML
XML DTD
Il DTD fornisce gli strumenti per definire vincoli di base ma rende difficile la definizione di vincoli più complessi
Inoltre, risulta impossibile definire vincoli di tipo semantico (es. agli attributi di author vengono assegnati valori numerici)
Antonio Ferrara | Fondamenti del Web (Ingegneria del Software e Fondamenti Web)
Cenni
di XML
XML Schema Definition (XSD)
La specifica XSD è stata introdotta nel W3C dopo l’introduzione di XML e non ha alcun corrispondente in SGML
Rappresenta un’alternativa al DTD che fornisce una tipizzazione più forte e utilizza la sintassi XML
I tipi di dati disponibili come built-in in XSD sono più ricchi e flessibili di quelli definiti in XSD
XSD, inoltre, introduce il supporto ai namespace, ovvero nomi qualificati che permettono di distinguere elementi di diverse
applicazioni XML
Antonio Ferrara | Fondamenti del Web (Ingegneria del Software e Fondamenti Web)
Cenni
di XML
Symple Type con re
strizioni
<xs:element name
=“age”>
XML Schema Definition (XSD) <xs:simpleType>
<xs:restriction
base=“xs:integer
<xs:minInclusive ”>
<?xml version="1.0" encoding="UTF-8"?> value=“0”>
<xs:maxInclusive
<xs:schema xmlns:xs=“http://www.w3.org/2001/XMLSchema"> </xs:restriction
value”120”>
>
<xs:element name="books"> </xs:simpleType>
<xs:complexType> </xs:element>
<xs:sequence>
<xs:element name="title" type="xs:string" />
<xs:element name="author" minOccurs="1" maxOccurs=“unbounded”>
<xs:complexType>
<xs:attribute name="firstName" type="xs:string" user="required" />
<xs:attribute name="lastName" type="xs:string" user="required" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Antonio Ferrara | Fondamenti del Web (Ingegneria del Software e Fondamenti Web)
Cenni
di XML
Documenti ben formati e validi
Un documento XML è ben formato se include una dichiarazione del documento, soddisfa l’annidamento degli elementi ed altri
vincoli sintattici, e non include entità non definite
Un documento XML ben formato è valido se soddisfa i vincoli specificati nel DTD o nello schema associato
Antonio Ferrara | Fondamenti del Web (Ingegneria del Software e Fondamenti Web)
Evoluzione
di HTML (e XHTML)
HTML 1.0 1992 Prima proposta da parte di Tim Berners-Lee
HTML 4.0 1997 Miglioramento dell’astrazione mediante l’introduzione del meccanismo dei fogli di stile
Inserimento di meccanismi per lo scripting, supporto all’elemento OBJECT
Supporto a differenti lingue (caratteri internazionali, direzione del testo, punteggiatura, …)
Antonio Ferrara | Fondamenti del Web (Ingegneria del Software e Fondamenti Web)
Evoluzione
di HTML (e XHTML)
XHTML 1.0 2000 Riformulazione di HTML 4.01 come applicazione XML (anziché SGML)
Elimina la “tolleranza” e i pochi vincoli di SGML (peggiorati dalla tolleranza dei browser)
Impone vincoli sintattici più rigorosi
Promuove l’interoperabilità con altri formati di dati
L’estensibilità rispetto a frammenti di altre applicazioni XML è garantita grazie ai namespace
I browser non devono essere tolleranti nei confronti di documenti non validi
XHTML richiede, ad esempio, di chiudere tag e inserire i valori degli attributi fra virgolette
XHTML è case-sensitive rispetto a nomi di elementi e attributi, mentre HTML no
Ha creato disallineamenti di validità con HTML (es. <br> vs <br /> vs <br></br>)
Il W3C decide di abbandonare HTML per dedicarsi a XHTML
Antonio Ferrara | Fondamenti del Web (Ingegneria del Software e Fondamenti Web)
Evoluzione
di HTML (e XHTML)
2004 Nasce un gruppo di lavoro alternativo al WC3 composto da Apple, Mozilla Foundation, Opera Software e
Google e denominato Web Hypertext Application Technology Working Group (WHATWG)
Cominciano lo sviluppo di una nuova versione di HTML
HTML 5.1 2014 HTML 5.1 2016 HTML 5.2 2017 HTML 5.3 2021 Raccomandazioni W3C
Antonio Ferrara | Fondamenti del Web (Ingegneria del Software e Fondamenti Web)
Significato
di un documento HTML
I documenti HTML sono delle descrizioni di contenuti interattivi indipendenti dalla loro rappresentazione
Uno stesso documento può essere renderizzato ad esempio sullo schermo di un qualunque dispositivo, su un sintetizzatore
vocale, o su un dispositivo braille
La definizione precisa di come tale renderizzazione deve essere effettuata può essere scritta mediante un linguaggio di stile
come CSS, che può essere incorporato all’interno del documento
<!DOCTYPE html>
<html lang="en">
<head>
<title>Sample styled page</title>
<style>body { background: navy; color: yellow; }</style>
</head>
<body>
<h1>Sample styled page</h1>
<p>This page is just a demo.</p>
</body>
</html>
Antonio Ferrara | Fondamenti del Web (Ingegneria del Software e Fondamenti Web)
Significato
di un documento HTML
È importante, oggi, separare la semantica del documento, descritta in HTML, dalla sua presentazione, da effettuare, appunto,
mediante linguaggi di stile
L’uso di markup di presentazione (come ad esempio <font color=“red”>) porta ad avere diversi problemi:
• Accessibilità ridotta su dispositivi differenti
• Alti costi di mantenimento per effettuare modifiche
• Documenti di dimensione maggiore
Molti degli elementi storici di HTML, per loro natura con effetti di presentazione, sono stati ridefiniti per rimanere media-
independent
Fra questi tag troviamo b, i, hr, s, small e u
Antonio Ferrara | Fondamenti del Web (Ingegneria del Software e Fondamenti Web)
Significato
di un documento HTML
Antonio Ferrara | Fondamenti del Web (Ingegneria del Software e Fondamenti Web)
Significato
di un documento HTML
<!DOCTYPE HTML> <!DOCTYPE HTML>
<html lang="en-GB"> <html lang="en-GB">
<head> <title> Demonstration </title> </head> <head> <title> Demonstration </title> </head>
<body> <body>
<table> <blockquote>
<tr> <td> My favourite animal is the cat. </td> </tr> <p> My favourite animal is the cat. </p>
<tr> </blockquote>
<td> <p>
—<a href=“https://example.org/~ernest/"> —<a href="https://example.org/~ernest/">Ernest</a>,
<cite>Ernest</cite></a>, in an essay from 1992
in an essay from 1992 </p>
</td> </body>
</tr> </html>
</table>
</body>
</html> " Corretto!
# Sbagliato!
Antonio Ferrara | Fondamenti del Web (Ingegneria del Software e Fondamenti Web)
Significato
di un documento HTML
Vi sono elementi HTML che funzionano puramente da container per scopi stilistici, di scripting e di presentazione
Essi, cioè, non portano con sé alcun significato semantico
Si tratta, in particolare, dell’elemento block-level div (divisione o contenitore) e dell’elemento inline span
I div e gli span, comunque, sono estremamente utilizzati perché permettono di “raggruppare” e targetizzare elementi
rispetto a scopi di scripting o di layout
A questi scopi, li troviamo spesso insieme agli attributi class e id
<div class="comment">
<p class="author">Antonio</p>
<p class="text">This is my comment</p>
</div>
### Attenzione però a non forzare la mano: usiamo gli elementi giusti per fare le cose giuste!
<span style="font-size: 32px; margin: 21px 0; display: block;”>Top heading</span>
Antonio Ferrara | Fondamenti del Web (Ingegneria del Software e Fondamenti Web)
Struttura
di un documento HTML
Secondo la specifica, un documento HTML contiene di norma un DOCTYPE e un elemento documento html,
che contiene a sua volta un header head con dichiarazioni relative all’intero documento e un corpo body con il
contenuto vero e proprio del documento
• Spazi bianchi all’in
tern o di HTML sono opzio
re a li z z a to può suggerito un line brea nali, ma è
<!DOCTYPE HTML> Il documen to H TM L k dopo il DOCTYPE, d
n d o il v a li d a tore opo il tag
<html> essere valida to s e co <html> e dopo ogni
commento
• Spazi bianchi prim
<head> scelto a di html o prima di
head vengono in
li d a tore s e g n ale rà errori e generale eliminati, qu
<title>Hello</title> Il va elli dopo html vengo
ci come presenti alla fin no considerati
fornirà consigli prati e del testo
</head> rg • Per gli elementi inli
https://validator.w3.o ne: spazi e tab prima
di line break
<body> vengono eliminati, i ta
b e i line break sono c
<p>Welcome to this example.</p> come spazi, spazi con onvertiti
secutivi sono elimina
inizio e fine contenuto ti e spazi a
</body> sono eliminati
</html> • Per gli elementi a b
locco: ogni riga è tratt
ata come un
blocco e semplificata
come fosse un eleme
quindi vengono elimin nto inline,
Prima di HTML 5, DOCTYPE doveva riferirsi a un DTD ati i blocchi vuoti
Antonio Ferrara | Fondamenti del Web (Ingegneria del Software e Fondamenti Web)
Head
di un documento
L’elemento head di un documento HTML non contiene contenuto visualizzato nel browser ma informazioni come titolo della
pagina, icona, link a risorse CSS e JS, metadati, etc.
Antonio Ferrara | Fondamenti del Web (Ingegneria del Software e Fondamenti Web)
Head
di un documento
All’interno dell’head del documento compare spesso l’elemento meta
Si tratta di un elemento estremamente flessibile per l’inclusione di metadati importanti relativi al documento
<meta charset="utf-8">
Mediante l’attributo charset è possibile specificare il set di caratteri utilizzato nel documento (è consigliato utf-8 che
contiene praticamente tutti i caratteri dei linguaggi umani)
Mediante le coppie di attributi name e content è possibile indicare metadati (application-name, author,
description, generator, keywords, viewport), alcuni dei quali sono estremamente utili per il SEO
Antonio Ferrara | Fondamenti del Web (Ingegneria del Software e Fondamenti Web)
Head
di un documento
Altri metadati sono proprietari e sono progettati per fornire specifiche
informazioni a determinati siti
Per esempio Open Graph Data è un protocollo di metadati inventato da
Facebook per permettere alle pagine web di diventare rich object
all’interno del grafo sociale
Analogamente, le Twitter Cards forniscono a Twitter informazioni per arricchire i collegamenti nei tweet
<meta name="twitter:title" content="Mozilla Developer Network">
Antonio Ferrara | Fondamenti del Web (Ingegneria del Software e Fondamenti Web)
Head
di un documento
L’elemento meta permette, inoltre, di specificare informazioni sulla viewport, utile per la responsività della pagina sui diversi
dispositivi
Antonio Ferrara | Fondamenti del Web (Ingegneria del Software e Fondamenti Web)
Head
di un documento
Un altro attributo associato all’elemento meta è http-equiv, che permette di specificare alcuni header HTTP direttamente
nella pagina HTML
Chiaramente, il meccanismo può funzionare solo per quegli header che il browser processa una volta ricevuta la risorsa
Antonio Ferrara | Fondamenti del Web (Ingegneria del Software e Fondamenti Web)
Corpo
di un documento
All’interno del tag body vi è la parte visibile della pagina web • È important
e rispettare la
gerarchia deg
Gli elementi base del corpo di un documento sono quelli di heading (h1, h2, h3, h4, h5, h6) ed li heading
• È preferibile
avere un solo
il paragrafo p, tutti elementi di blocco elemento h1 n
ella pagina
I browser presentano di default header e paragrafi con dimensioni e font weight appositi
I motori di ricerca utilizzano gli header per indicizzare la struttura delle pagine web
Antonio Ferrara | Fondamenti del Web (Ingegneria del Software e Fondamenti Web)
Corpo
di un documento
Altri elementi fondamentali del testo sono quelli che permettono di dare enfasi e importanza
L’enfasi su una particolare parte del testo può essere data mediante l’elemento em, mentre una parte di forte importanza del
testo può essere marcata con strong
Nei browser, i tag semantici em e strong sono resi di default rispettivamente con testo in corsivo e testo in grassetto
Per questo motivo sono spesso stati arbitrariamente confusi con i e b che invece sono tag puramente presentazionali
HTML 5 ha ridefinito i, b e u (underline) per renderli elementi semantici, ciascuno utile ad esprimere il significato che
generalmente viene associato a tale formattazione (es. parole straniere e termini tecnici in corsivo, parole chiave in grassetto,
errori con la sottolineatura, etc.)
Antonio Ferrara | Fondamenti del Web (Ingegneria del Software e Fondamenti Web)
Liste
ordinate e non ordinate
La realizzazione di liste in HTML è gestita mediante due appositi elementi
• ul, che permette di realizzare unordered lists (non ordinate)
• ol, che permette di realizzare ordered lists (ordinate)
Ogni lista ha, al suo interno, un certo numero di elementi, marcati con il tag <li>
Gli elementi li possono, a loro volta, annidare un’altra lista
<ol>
<li>Apri il portafogli</li>
<li>Verifica che sia tutto ok
<ul>
<li>Controlla le banconote</li>
<li>Controlla le carte di credito</li>
</ul>
</li>
<li>Chiudi il portafogli</li>
</ol>
Antonio Ferrara | Fondamenti del Web (Ingegneria del Software e Fondamenti Web)
Altri elementi <blockquote cite="https://www.huxley.net/bnw/four.html">
di formattazione
<p>Words can be like X-rays, if you use them
properly—they’ll go through anything. You read and
you’re pierced.</p>
</blockquote>
<p>—Aldous Huxley, <cite>Brave New World</cite></p>
<dl>
<dt>Politecnico di Bari</dt>
<dd>Università nel Sud Italia a carattere
scientifico-tecnologico</dd>
<dt>Fondamenti del Web</dt>
<dd>Insegnamento erogato presso il Politecnico di
Bari</dd>
</dl>
<pre><code>var para = document.querySelector('p');
para.onclick = function() {
alert('Owww, stop poking me!');
}</code></pre>
Antonio Ferrara | Fondamenti del Web (Ingegneria del Software e Fondamenti Web)
Esercizi
Esercizio 3.1
Antonio Ferrara | Fondamenti del Web (Ingegneria del Software e Fondamenti Web)
Collegamenti
ipertestuali
I collegamenti ipertestuali rappresentano la principale innovazione del Web
La realizzazione di un hyperlink in HTML è possibile mediante l’elemento inline anchor a
Pur essendo un elemento inline, l’elemento anchor può anche effettuare il wrapping di elementi block-level
Antonio Ferrara | Fondamenti del Web (Ingegneria del Software e Fondamenti Web)
Esercizi
Esercizio 3.2
Perché potremmo non visualizzare l’immagine? URL errato, formato non supportato, utenti con disabilità che usano uno screen
reader, motori di ricerca
Perché può essere utile specificare le dimensioni dell’immagine? Nell’attesa che l’immagine si carichi la pagina assume già la
sua “forma” finale (possiamo anche farlo da CSS)
Antonio Ferrara | Fondamenti del Web (Ingegneria del Software e Fondamenti Web)
Immagini
e oggetti multimediali
Entrambe le soluzioni funzionano, ma nella prima abbiamo creato un elemento semantico che lega un contenuto alla sua caption
L’elemento figure (insieme a figurecaption) realizza un elemento block-level che (potenzialmente) può contenere
qualunque tipo di oggetto a supporto del testo (immagini, audio, video, tabelle, snippet di codice, …)
Quando si immagina un sito web responsivo, è necessario fare in modo che gli utenti di un dispositivo mobile non siano costretti
a scaricare immagini ad alta risoluzione come quelle usate nella versione desktop, oppure che si possano servire immagini
diverse (es. tagliate) in base alla dimensione del dispositivo utilizzato
L’idea è quella di creare immagini responsive mediante le tecniche di resolution switching e art direction
Antonio Ferrara | Fondamenti del Web (Ingegneria del Software e Fondamenti Web)
Immagini
e oggetti multimediali
A partire da HTML5, è possibile inserire elementi audio e video
<audio src=“jazz.ogg"></audio>
Attributi utili sono autoplay, controls, loop e preload che accetta come attributi none, auto e metadata
In alternativa, possiamo lasciare che il browser scelga il miglior formato disponibile
<audio controls>
<source src="jazz.ogg" type="audio/ogg">
<source src="jazz.mp3" type="audio/mpeg">
</audio>
Antonio Ferrara | Fondamenti del Web (Ingegneria del Software e Fondamenti Web)
Web
form
<form action="/my-handling-form-page" method="post">
I form rappresentano uno dei principali modi di <ul>
<li>
interazione degli utenti con le applicazioni web
<label for="name">Name:</label>
I dati immessi nei form possono essere inviati ai server <input type="text" id="name" name="user_name">
per ulteriori elaborazioni o essere utilizzati client-side </li>
<li>
per aggiornare l’interfaccia in qualche maniera
<label for="mail">E-mail:</label>
<input type="email" id="mail" name="user_email">
</li>
<li>
<label for="msg">Message:</label>
<textarea id="msg" name="user_message"></textarea>
</li>
<li class="button">
<input type="submit">Send your message</input>
</li>
</ul>
</form>
Antonio Ferrara | Fondamenti del Web (Ingegneria del Software e Fondamenti Web)
Web
form
Input Questo elemento può assumere diverse forme a seconda del valore dell’attributo type
Attributi comuni sono placeholder e gli attributi booleani readonly (valore non modificabile ma inviato), disabled (valore
non modificabile e non inviato), required e autofocus
Antonio Ferrara | Fondamenti del Web (Ingegneria del Software e Fondamenti Web)
Web
form * Si può accompagnare con
gli attributi min, max e step
Input type di HTML5
Altri valori per type definiti in HTML5 sono color, range* (ovvero uno slider), datetime-local*, month*, week*, search
(quest’ultimo ha un aspetto leggermente diverso da text in molti browser, di solito contiene una X per pulire la casella di testo
e memorizza gli input precedenti)
I valori di type, insieme a required, min e max, minlenght e maxlength per le stringhe, e pattern (che permette di
specificare una regex attesa) permettono di effettuare una prima validazione client-side dell’input
Antonio Ferrara | Fondamenti del Web (Ingegneria del Software e Fondamenti Web)
Web
form
Altri elementi
<label for=“username”>Username</label>
<input type="text" name="username" id="username">
Permette di definire l’etichetta per l’input con id uguale a username
In alternativa, label può anche racchiudere un elemento del form
<label><input type="radio" name="day" value="Friday" checked>Friday</label>
Antonio Ferrara | Fondamenti del Web (Ingegneria del Software e Fondamenti Web)
Web
form
Inviare i dati di un form
Inviare i dati inseriti all’interno di un elemento form è possibile mediante gli attributi action e method
L’attributo action permette di specificare la risorsa target verso cui sarà effettuata la richiesta
L’attributo method, invece, permette di specificare se utilizzare una GET o una POST
La prima pagina da realizzare, che chiameremo recipe.html, deve ospitare una ricetta, e deve presentare, oltre un menu di
navigazione, una barra laterale con altre ricette collegate
La ricetta deve essere introdotta, dopo il titolo, da un paragrafo di introduzione, da un’immagine (o da un video) e dalla lista degli
ingredienti
La seconda pagina da realizzare, che chiameremo contact.html, deve contenere un form completo per l’invio di una richiesta al
gestore del sito web
Antonio Ferrara | Fondamenti del Web (Ingegneria del Software e Fondamenti Web)