HTML

Η HTML (αρχικοποίηση του αγγλικού HyperText Markup Language, ελλ. Γλώσσα Σήμανσης Υπερκειμένου) είναι η κύρια γλώσσα σήμανσης για τις ιστοσελίδες, και τα στοιχεία της είναι τα βασικά δομικά στοιχεία των ιστοσελίδων.
Η HTML γράφεται υπό μορφή στοιχείων HTML τα οποία αποτελούνται από ετικέτες (tags), οι οποίες περικλείονται μέσα σε σύμβολα «μεγαλύτερο από» και «μικρότερο από» (για παράδειγμα <html>), μέσα στο περιεχόμενο της ιστοσελίδας. Οι ετικέτες HTML συνήθως λειτουργούν ανά ζεύγη (για παράδειγμα <h1> και </h1>), με την πρώτη να ονομάζεται ετικέτα έναρξης και τη δεύτερη ετικέτα λήξης (ή σε άλλες περιπτώσεις ετικέτα ανοίγματος και ετικέτα κλεισίματος αντίστοιχα). Ανάμεσα στις ετικέτες, οι σχεδιαστές ιστοσελίδων μπορούν να τοποθετήσουν κείμενο, πίνακες, εικόνες κλπ.
Ο σκοπός ενός web browser είναι να διαβάζει τα έγγραφα HTML και να τα συνθέσει σε σελίδες που μπορεί κανείς να διαβάσει ή να ακούσει. Ο browser δεν εμφανίζει τις ετικέτες HTML, αλλά τις χρησιμοποιεί για να παρουσιάσει το περιεχόμενο της σελίδας.
Τα στοιχεία της HTML χρησιμοποιούνται για να κτίσουν όλους του ιστότοπους. Η HTML επιτρέπει την ενσωμάτωση εικόνων και άλλων αντικειμένων μέσα στη σελίδα, και μπορεί να χρησιμοποιηθεί για να εμφανίσει διαδραστικές φόρμες. Παρέχει τις μεθόδους δημιουργίας δομημένων εγγράφων (δηλαδή εγγράφων που αποτελούνται από το περιεχόμενο που μεταφέρουν και από τον κώδικα μορφοποίησης του περιεχομένου) καθορίζοντας δομικά σημαντικά στοιχεία για το κείμενο, όπως κεφαλίδες, παραγράφους, λίστες, συνδέσμους, παραθέσεις και άλλα. Μπορούν επίσης να ενσωματώνονται σενάρια εντολών σε γλώσσες όπως η JavaScript, τα οποία επηρεάζουν τη συμπεριφορά των ιστοσελίδων HTML και από στατικές τις κάνουν διαδραστικές.
Οι Web browsers μπορούν επίσης να αναφέρονται σε στυλ μορφοποίησης CSS για να ορίζουν την εμφάνιση και τη διάταξη του κειμένου και του υπόλοιπου υλικού. Ο οργανισμός W3C, ο οποίος δημιουργεί και συντηρεί τα πρότυπα για την HTML και τα CSS, ενθαρρύνει τη χρήση των CSS αντί διαφόρων στοιχείων της HTML για σκοπούς παρουσίασης του περιεχομένου.

Προέλευση

Το 1980, ο φυσικός Τιμ Μπέρνερς Λι, ο οποίος εργαζόταν στο CERN, επινόησε το ENQUIRE, ένα σύστημα χρήσης και διαμοιρασμού εγγράφων για τους ερευνητές του CERN, και κατασκεύασε ένα πρωτότυπό του. Αργότερα, το 1989, πρότεινε ένα σύστημα βασισμένο στο διαδίκτυο, το οποίο θα χρησιμοποιούσε υπερκείμενο. Έτσι, έφτιαξε την προδιαγραφή της HTML και έγραψε τον browser και το λογισμικό εξυπηρετητή στα τέλη του 1990. Τον ίδιο χρόνο, ο Μπέρνερς Λι και ο μηχανικός συστημάτων πληροφορικής του CERN Robert Cailliau συνεργάστηκαν σε μια κοινή προσπάθεια εύρεσης χρηματοδότησης, αλλά το έργο δεν υιοθετήθηκε ποτέ επίσημα από το CERN. Στις προσωπικές του σημειώσεις από το 1990, ο Μπέρνερς Λι αριθμεί «μερικές από τις πολλές χρήσεις του υπερκειμένου», όπως την γενική παρουσίαση πληροφοριών (π.χ. μια εγκυκλοπαίδεια), στοχευμένη δημοσίευση (κείμενα βοήθειας, τεκμηρίωσης, εκπαίδευσης, κλπ) μέχρι ακόμα και για καταγραφή προσωπικών σημειώσεων.

Πρώτες προδιαγραφές

Η πρώτη δημόσια διαθέσιμη περιγραφή της HTML ήταν ένα έγγραφο με το όνομα Ετικέτες HTML, το οποίο πρωτοαναφέρθηκε στο Διαδίκτυο από τον Μπέρνερς Λι στα τέλη του 1991. Περιέγραφε τα 20 στοιχεία τα οποίο αποτελούσαν τον αρχικό και σχετικά απλό σχεδιασμό της HTML. Εκτός από την ετικέτα υπερσυνδέσμου, οι υπόλοιπες ήταν έντονα επηρεασμένες από την SGMLguid, μια μορφή δημιουργίας τεκμηρίωσης, φτιαγμένη στο CERN και βασισμένη στην SGML. Δεκατρία από εκείνα τα αρχικά στοιχεία υπάρχουν ακόμα σήμερα στην HTML 4.
Το ίδιο το πρότυπο SGML αναπαράγει μερικές από τις τεχνικές των τυπογράφων, αλλά εκτός από απλή μίμηση της τυπογραφίας προσθέτει γενικευμένη σήμανση βασισμένη σε στοιχεία, τα οποία μπορούν να εμφωλεύονται το ένα μέσα στο άλλο και να φέρουν ιδιότητες. Ακόμα, το SGML διαχωρίζει τη δομή από το περιεχόμενο, κατεύθυνση προς την οποία αργότερα κινήθηκε και η HTML, με τα CSS. Πολλά από τα στοιχεία κειμένου προέρχονται από την τεχνική αναφορά ISO TR 9537, Techniques for using SGML (τεχνικές χρήσης της SGML), η οποία με τη σειρά της καλύπτει τα χαρακτηριστικά των πρώιμων γλωσσών μορφοποίησης κειμένου που χρησιμοποιούνταν από τα TYPSET και RUNOFF, και είχαν αναπτυχθεί στις αρχές της δεκαετίας του 1960 για το λειτουργικό σύστημα CTSS.
Ο Μπέρνερς Λι θεώρησε την HTML ως μια υλοποίηση του SGML. Αυτό ορίστηκε και επίσημα από το Internet Engineering Task Force (IETF) με τη δημοσίευση της πρώτης πρότασης για μια προδιαγραφή της HTML, στα μέσα του 1993, η οποία περιλάμβανε και έναν Ορισμό τύπου εγγράφου (DTD, Document Type Definition) της SGML, ο οποίος όριζε την γραμματική. Αυτό το πρόχειρο έληξε μετά την πάροδο έξι μηνών, αλλά περιέχει κάτι αξιοσημείωτο: την αναγνώριση της ετικέτας του NCSA Mosaic για την ενσωμάτωση εικόνων μέσα στο κείμενο, η οποία αντικατοπτρίζει την φιλοσοφία του IETF για ενσωμάτωση επιτυχημένων πρωτότυπων μέσα στα πρότυπα. Κάτι παρόμοιο περιείχε και το ανταγωνιστικό πρόχειρο του Dave Raggett, «HTML+ (Hypertext Markup Format)», από τα τέλη του, το οποίο πρότεινε την προτυποποίηση μερικών ήδη υλοποιημένων δυνατοτήτων, όπως οι πίνακες και οι φόρμες.
Μετά την λήξη των πρόχειρων HTML και HTML+, στις αρχές του 1994, το IETF δημιούργησε την Ομάδα Εργασίας για την HTML, η οποία το 1995 ολοκλήρωσε την «HTML 2.0», με την πρόθεση να αποτελέσει την πρώτη προδιαγραφή πάνω στην οποία θα βασίζονταν οι μελλοντικές υλοποιήσεις. Η HTML 2.0 δημοσιεύτηκε ως RFC 1866, και περιείχε ιδέες από τα πρόχειρα HTML και HTML+. Η αρίθμηση 2.0 σκόπευε απλά να ξεχωρίσει την νέα έκδοση από τα πρόχειρα που προηγήθηκαν.
Η περαιτέρω ανάπτυξη κάτω από την επίβλεψη του IETF καθυστέρησε λόγω σύγκρουσης απόψεων. Από το 1996 και μετά, οι προδιαγραφές της HTML τηρούνται, μαζί με την σύμφωνη γνώμη των δημιουργών του λογισμικού, από το World Wide Web Consortium (W3C). Ωστόσο, το 2000 η HTML έγινε επίσης παγκόσμιο πρότυπο (ISO/IEC 15445:2000). Η τελευταία προδιαγραφή της HTML, η HTML 4.01 δημοσιεύτηκε από το W3C το 1999, και το 2001 δημοσιεύτηκαν επίσης και τα λάθη και οι παραλείψεις της (errata).

Σήμανση

Η σήμανση HTML αποτελείται από μερικά βασικά συστατικά, συμπεριλαμβανομένων των στοιχείων (και των ιδιοτήτων τους), τους βασισμένους σε χαρακτήρες τύπους δεδομένων, τις αναφορές χαρακτήρων και τις αναφορές οντοτήτων. Ένα ξεχωριστό σημαντικό συστατικό είναι η δήλωση τύπου εγγράφου (document type declaration), η οποία ορίζει στο πρόγραμμα περιήγησης (browser) τον τρόπο εμφάνισης της σελίδας.
Στην HTML, το πρόγραμμα Hello world, ένα συνηθισμένο πρόγραμμα υπολογιστή που χρησιμεύει για τη σύγκριση γλωσσών προγραμματισμού, γλωσσών σεναρίων και γλωσσών σήμανσης, φτιάχνεται με 9 γραμμές κώδικα, παρότι οι νέες γραμμές είναι προαιρετικές στην HTML:
<!DOCTYPE html><html>
  <head>
    <title>Hello HTML</title>
  </head>
  <body>
    <p>Hello world</p>
  </body></html>
(Το κείμενο ανάμεσα στο <html> και το </html> περιγράφει την ιστοσελίδα, και το κείμενο μεταξύ του <body> και του </body> είναι το ορατό μέρος της. Το σημασμένο κείμενο <title>Hello HTML</title> καθορίζει τον τίτλο που θα εμφανίζεται στην μπάρα τίτλου του browser.)
Η δήλωση τύπου εγγράφου (το <!DOCTYPE html>) στον πιο πάνω κώδικα είναι για την HTML5. Αν δεν συμπεριλαμβάνεται η δήλωση <!doctype html>, τότε μερικοί browser θα καταφύγουν στην λειτουργία quirks για την εμφάνιση της σελίδας.

Αναφορές οντοτήτων χαρακτήρων

Από την έκδοση 4.0 και μετά, στην HTML ορίζεται ένα σύνολο από 252 αναφορές οντοτήτων χαρακτήρων και ένα σύνολο από 1.114.050 αναφορές οντοτήτων αριθμών. Και τα δύο σύνολα επιτρέπουν τη γραφή μοναδικών χαρακτήρων ως σήμανση, αντί χρησιμοποιώντας τους ίδιους τους χαρακτήρες. Ένας χαρακτήρας και η αντίστοιχη σήμανση γι' αυτόν θεωρούνται ισοδύναμες οντότητες, και εμφανίζονται ίδια.
Αυτή η δυνατότητα διαφυγής χαρακτήρων με αυτόν τον τρόπο επιτρέπει την ερμηνεία χαρακτήρων όπως < και & (όταν γράφονται ως &lt; και &amp;, αντίστοιχα) ως κείμενο και όχι ως σήμανση. Για παράδειγμα, ο χαρακτήρας < κανονικά σημαίνει την έναρξη μιας ετικέτας, και το & σημαίνει την έναρξη μιας αναφοράς οντότητας χαρακτήρα ή αριθμού. Η γραφή τους ως &amp; ή &#x26; ή &#38; επιτρέπει στο & να συμπεριλαμβάνεται μέσα στο περιεχόμενο ενός στοιχείου ή μέσα στην τιμή μιας ιδιότητας. Επίσης, ο χαρακτήρας διπλών εισαγωγικών ("), ο οποίος χρησιμοποιείται για να περιβάλλει την τιμή μιας ιδιότητας, πρέπει να γράφεται ως &quot; ή &#x22; ή &#34; όταν εμφανίζεται μέσα στην ίδια την τιμή της ιδιότητας. Ομοίως, ο χαρακτήρας μονών εισαγωγικών ('), πρέπει να γράφεται ως &#x27; ή &#39; (αλλά όχι ως &apos;, με εξαίρεση την γραφή σε XHTML) όταν εμφανίζεται μέσα στην ίδια την τιμή της ιδιότητας. Αν ένας δημιουργός εγγράφου HTML παραβλέψει να γράψει αυτά τα σύμβολα ως οντότητες χαρακτήρων ή αριθμών, τότε μερικοί browser μπορούν να είναι αρκετά επιεικείς και προσπαθούν να χρησιμοποιήσουν το παραπλήσιο περιεχόμενο για να μαντέψουν την πρόθεση του χρήστη. Το αποτέλεσμα δεν παύει να είναι άκυρη σήμανση, η οποία κάνει το έγγραφο λιγότερο προσιτό σε άλλους browser οι οποίοι μπορεί να προσπαθήσουν να αναλύσουν το έγγραφο για άλλους σκοπούς, όπως για παράδειγμα για την καταχώρηση του περιεχομένου του σε μηχανές αναζήτησης.
Η διαφυγή διευκολύνει επίσης τη χρήση χαρακτήρων που είτε είναι δύσκολο να δακτυλογραφηθούν, είτε δεν συμπεριλαμβάνονται καν στην κωδικοποίηση χαρακτήρων του εγγράφου. Για παράδειγμα, ο τονισμένος χαρακτήρας e (δηλαδή το é), ο οποίος τυπικά συναντάται σε μερικές ευρωπαϊκές γλώσσες, μπορεί να γραφεί σε οποιοδήποτε έγγραφο HTML ως η οντότητα &eacute; ή ως η αριθμητική αναφορά &#233; ή &#xE9;, χρησιμοποιώντας χαρακτήρες οι οποίοι είναι διαθέσιμοι σε όλα τα πληκτρολόγια και υποστηρίζονται σε όλες τις κωδικοποιήσεις χαρακτήρων. Οι κωδικοποιήσεις Unicode, όπως η UTF-8, είναι συμβατές με όλους τους σύγχρονους browser και επιτρέπουν την πρόσβαση σε σχεδόν όλους τους χαρακτήρες όλων των συστημάτων γραφής του κόσμου.

Τύποι δεδομένων

Στην HTML ορίζονται μερικοί τύποι δεδομένων για το περιεχόμενο των στοιχείων, όπως σενάρια εντολών ή stylesheet, και μια πληθώρα τύπων για τις τιμές των ιδιοτήτων, συμπεριλαμβανομένων των ID, των name, των URI, διαφόρων αριθμών και μονάδων μήκους, γλωσσών, τύπων αρχείων πολυμέσων, χρωμάτων, κωδικοποιήσεων χαρακτήρων, ημερομηνιών κλπ.

Δήλωση τύπου εγγράφου

Τα έγγραφα HTML πρέπει να αρχίζουν με μια Δήλωση τύπου εγγράφου (Document Type Declaration, ανεπίσημα λέγεται και «doctype»). Αυτή η δήλωση βοηθά τους browser να καταλάβουν πώς πρέπει να διαβάσουν το περιεχόμενο του εγγράφου και πώς να το παρουσιάσουν μετά, και ιδιαίτερα όταν χρησιμοποιείται το quirks mode.
Ο αρχικός σκοπός του doctype ήταν να επιτρέπει την ανάλυση και επιβεβαίωση των εγγράφων HTML από εργαλεία SGML τα οποία ήταν βασισμένα στο Document Type Definition (DTD). Το DTD στο οποίο αναφέρεται το DOCTYPE περιέχει μια γραμματική σε γλώσσα μηχανής, η οποία καθορίζει τι επιτρέπεται και τι απαγορεύεται να υπάρχει μέσα στο έγγραφο. Οι browser, από την άλλη, δεν υλοποιούν την HTML ως εφαρμογή της SGML και συνεπώς δεν διαβάζουν το DTD. Στην HTML5 δεν ορίζεται κανένα DTD, λόγω εγγενών τεχνολογικών περιορισμών. Έτσι το doctype <!doctype html> δεν αναφέρεται σε κανένα.
Ένα παράδειγμα doctype σε HTML 4 είναι:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
Αυτή η δήλωση αναφέρεται στο DTD για την εκδοχή «strict» της HTML 4.01. Τα προγράμματα επιβεβαίωσης κώδικα τα οποία βασίζονται σε SGML, διαβάζουν το DTD με σκοπό να ερμηνεύσουν κατάλληλα το έγγραφο και να επαληθεύσουν την ορθότητά του. Στους σύγχρονους browser, ένα έγκυρο doctype ενεργοποιεί τη λειτουργία κατά τα πρότυπα, αντί για το quirks mode.
Επιπλέον, στην HTML 4.01 παρέχονται και τα DTD Transitional και Frameset.

Σημασιολογική

Η Σημασιολογική HTML είναι ένας τρόπος γραφής της HTML με έμφαση στο νόημα της σημασμένης πληροφορίας παρά στην εμφάνισή της. Η HTML συμπεριλαμβάνει σημασιολογικά στοιχεία από την σύλληψή της, συμπεριλαμβάνει όμως και στοιχεία αποκλειστικά εμφανισιακά, όπως τις ετικέτες <font>, <i> και <center>. Υπάρχουν επίσης και τα σημασιολογικά ουδέτερα span και div. Από τα τέλη της δεκαετίας του 1990, όταν τα CSS άρχισαν να δουλεύουν στους περισσότερους browser, οι σχεδιαστές ιστοσελίδων ενθαρρύνονταν να αποφεύγουν τη χρήση των εμφανισιακών ετικετών της HTML και να προτιμούν να διαχωρίζουν το περιεχόμενο από την παρουσίαση.
Σε μια συζήτηση για τον Σημασιολογικό ιστό, ο Τιμ Μπέρνερς Λι και άλλοι έδωσαν παραδείγματα τρόπων με τους οποίους έξυπνα λογισμικά πελάτη ιστού θα μπορούν μια μέρα να περιηγούνται στον Ιστό και να βρίσκουν, να φιλτράρουν και να συσχετίζουν τα προηγουμένως άσχετα και αδημοσίευτα δεδομένα, προς όφελος των ανθρώπων χρηστών. Δέκα χρόνια μετά, δεν είναι ακόμα κοινή η χρήση τέτοιων προγραμμάτων, αλλά μερικές από τις ιδέες του Web 2.0, των mashups και των ιστοσελίδων σύγκρισης τιμών προϊόντων μπορεί να πλησιάζουν στο σκεπτικό εκείνο. Η βασική διαφορά μεταξύ αυτών των εφαρμογών και των έξυπνων λογισμικών του Μπέρνερς Λι, είναι ότι οι τρέχουσες μέθοδοι συγκέντρωσης πληροφοριών συνήθως σχεδιάζεται από προγραμματιστές ιστού, οι οποίοι ήδη ξέρουν τις τοποθεσίες ιστού και τα API των δεδομένων που θέλουν να συνενώσουν, να συγκρίνουν και να συνδυάσουν.
Ένας σημαντικός τύπος λογισμικοί που περιηγείται αυτόματα το διαδίκτυο και διαβάζει ιστοσελίδες, χωρίς προηγούμενη γνώση του περιεχομένου τους, είναι και τα προγράμματα των μηχανών αναζήτησης. Αυτά τα λογισμικά εξαρτούνται από την σημασιολογική σαφήνεια των ιστοσελίδων που βρίσκουν, καθώς χρησιμοποιούν διάφορες τεχνικές και αλγόριθμους για να διαβάζουν και να ταξινομούν εκατομμύρια σελίδων καθημερινά, και να παρέχουν στους επισκέπτες τους τη δυνατότητα αναζήτησης, χωρίς την οποία ο Παγκόσμιος Ιστός θα είχε μόνο ένα μικρό κλάσμα της χρησιμότητάς του.
Οι σημασιολογικές δομές που ήδη υπάρχουν στην HTML, είναι σημαντικό να εφαρμόζονται καθολικά, για να βοηθούν το περιεχόμενο του δημοσιευμένου κειμένου να γίνεται καλύτερα αντιληπτό. Με αυτό τον τρόπο, τα λογισμικά των μηχανών αναζήτησης, αλλά και άλλα λογισμικά που φτιάχνουν mashup ή άλλα υβρίδια από το περιεχόμενο των ιστότοπων θα μπορούν καλύτερα να εκτιμούν τη σημασία του κειμένου που βρίσκουν στα έγγραφα HTML. Προς το σκοπό αυτό, οι ετικέτες της HTML που εξυπηρετούσαν μόνο εμφανισιακό σκοπό θεωρούνται ξεπερασμένες στην XHTML, και απαγορεύονται στην HTML5.
Τέλος, η σημασιολογικά γραμμένη HTML βελτιώνει την προσιτότητα των εγγράφων στον ιστό. Για παράδειγμα, στους browser για χρήστες με προβλήματα όρασης ή ακοής, είναι πιο έυκολη η σωστή απόδοση της δομής του εγγράφου με τρόπο άλλο από τον οπτικό, όταν αυτό είναι σωστά σημασιολογικά σημασμένο.

Μεταφορά της HTML

Τα αρχεία HTML, όπως συμβαίνει και με τους υπόλοιπους τύπους αρχείων του υπολογιστή, μπορούν να μεταφερθούν με πολλούς τρόπους. Ωστόσο, λόγω της λειτουργίας της HTML, οι δύο πιο συνηθισμένοι τρόποι είναι μέσω HTTP από έναν εξυπηρετητή, ή μέσω E-mail.

HTML e-mail

Αρκετά προγράμματα ηλεκτρονικής αλληλογραφίας ενσωματώνουν δυνατότητες της HTML, ώστε να επιτρέπουν στους χρήστες να χρησιμοποιούν την σήμανση της HTML στα μηνύματά τους, για να στέλνουν κείμενο με χρώμα, με μορφοποίηση, ή και με ενσωματωμένες εικόνες και διαγράμματα. Ωστόσο, οι μέθοδοι αυτές προκαλούν μερικά προβλήματα, τα οποία προκαλούνται αφ' ενός από την έλλειψη κάποιου προτύπου για την περίληψη HTML σε E-mail (με αποτέλεσμα ο κάθε προγραμματιστής να ενεργεί κατά βούληση), και αφ' ετέρου από τη δυνατότητα εκμετάλλευσης αυτών των δυνατοτήτων από κακόβουλους χρήστες.

Ονόματα αρχείων

Ο πιο κοινός τύπος αρχείου για έγγραφα HTML είναι .html, όμως έχει επιβιώσει και η συντόμευση .htm, από μερικά παλαιότερα λειτουργικά συστήματα που δεν αναγνώριζαν επεκτάσεις αρχείων με περισσότερα από τρία γράμματα. Επιπλέον, στα Microsoft Windows χρησιμοποιείται ο τύπος .hta (από το HTML Application) ο οποίος δείχνει ότι το αρχείο συμπεριλαμβάνει HTML μαζί με κάποια δυναμικά στοιχεία που το κάνουν να εκτελείται ως εφαρμογή.

Δημιουργία με προγράμματα WYSIWYG

Ένα θέμα αντιπαράθεσης στις κοινότητες των δημιουργών περιεχομένου για τον Ιστό είναι η χρήση προγραμμάτων WYSIWIG (What You See Is What You Get), δηλαδή προγραμμάτων στα οποία ο χρήστης σχεδιάζει οπτικά τη σελίδα όπως θα φαίνεται μετά στον browser του επισκέπτη. Αυτό κάνει τη γνώση της HTML προαιρετική για την κατασκευή μιας ιστοσελίδας. Αυτό το μοντέλο δημιουργίας με προγράμματα WYSIWIG έχει γνωρίσει έντονες κριτικές,  κυρίως λόγω της κακής ποιότητας του κώδικα που δημιουργείται αυτόματα.
Παρόλα αυτά, οι επεξεργαστές ιστοσελίδων WYSIWYG είναι δημοφιλείς λόγω της ευκολίας που παρέχουν.