HTML5

XHTML-sintakso

Tiu cxi parto celas precipe tiujn, kiuj jam regas ekzemple HTML-on 4, sed ne XHTML-on. Se vi jam scias la bazajn regulojn de XHTML (XHTML 1.0 aux XHTML 1.1), tiam tiu cxi parto estas suficxe superflua por vi, kaj vi eble preferas tuj salti al la sekva parto.

Devigaj markoj

Laux la HTML-sintakso komencaj kaj finaj markoj por iuj elementoj, ekzemple head, body kaj p estas forlaseblaj (laux certaj reguloj). En XHTML oni tamen devas ilin cxiam uzi. Do, cxiu elemento devas havi kaj komencan markon, kaj finan markon (vidu tamen cxi-poste pri malplenaj elementoj).

Minusklaj markoj kaj atributoj

En XHTML cxiuj nomoj de elementoj kaj atributoj havas minusklan formon, kaj devas esti gxuste tiel skribataj. En HTML eblas elekti lauxplacxe la usklecon. Do, nepre <body>, ne <BODY> nek <Body> aux simile, nepre <p>, ne <P>, nepre <td rowspan="2">, ne <TD ROWSPAN="2"> nek <td ROWSPAN="2">, k.t.p.

Oni notu, ke ankaux stilfolio, kiu indikas la prezentostilon de XHTML-dokumento, lauxe uzu minusklajn nomojn por nomi la stiligatajn elementojn.

Elementoj ne povas interplektigxi

Komencmarkoj kaj finmarkoj de elementoj devas aperi en logika ordo. Se ekzemple <strong>-elemento trovigxas ene de <em>-elemento, kaj la komencmarko <strong>, kaj la finmarko </strong> devas esti ene de la <em>-elemento.

Malgxusta Gxusta
<em>teksto <strong>teksto teksto</em></strong> <em>teksto <strong>teksto teksto</strong></em>
<a>vorto <em>vorto</a> vorto</em> <a>vorto <em>vorto</em></a> <em>vorto</em>

Principe misinterplektigxo estas erara ankaux en HTML, sed estas tamen praktike tolerata de la TTT-legiloj, kiuj provas diveni, kion oni vere celis. Se oni uzas XHTML-on, kaj se oni uzas gxin kiel veran XML-on, tiam tiaj eraroj tute ne estas tolerataj. Pagxo kun tiaj eraroj tute ne prezentigxas al la legantoj. Ili anstatauxe vidas nur eraromesagxon.

Fermo de malplenaj elementoj

Iuj elementoj estas cxiam malplenaj. Ekzemple <br> (en HTML) markas finon de linio, sed post <br> ne sekvas teksto aux io alia, kiu estas parto de la <br>-elemento. La <br>-marko mem konsistigas la tutan elementon. Simile estas pri <img>, <meta> kaj kelkaj aliaj elementoj. En XHTML ankaux tiaj malplenaj elementoj devas esti eksplicite fermataj. Tion oni indikas per suprenstreko, /, antaux la fina >-signo:

HTML XHTML
<hr> <hr/>
<br> <br/>
<meta ...> <meta .../>
<input ...> <input .../>
<img src="bela.jpg" alt="belajxo"> <img src="bela.jpg" alt="belajxo"/>

En tiaj okazoj la sola marko estas samtempe komenca kaj fina.

Oni rimarku, ke en HTML-sintaksa HTML5 tiaj aldonaj suprenstrekoj estas permesataj sed tute libervolaj (kaj efektive sensencaj), dum en XHTML5 ili estas devigaj. En poliglota HTML5 ili estas same devigaj.

En (X)HTML5 la jenaj elementoj estas cxiam malplenaj: area, base, br, col, command, embed, hr, img, input, keygen, link, meta, param, source.

Noto: Principe en XHTML ankaux eblas uzi plenajn finmarkojn por tiaj malplenaj elementoj (ekzemple <hr></hr>). Se oni verkas poliglotan HTML5, oni tamen ne povas uzi tiun varianton.

Noto: Se elemento, kiu povas havi enhavon (ekzemple <p>) okaze estas malplena, oni povas en XHTML kaj XML gxin skribi kun unu memfermigxanta marko, ekzemple <p/>. Tio tamen ne eblas en poliglota HTML5. Oni devas uzi <p></p> (aux tute forlasi la elementon, cxar tiaj malplenaj elementoj estas plej ofte sensencaj).

Neripetado de atributoj

En XHTML oni ne rajtas ripeti atributojn ene de elemento.

Malbona Bona
<p class="io" class="ioalia"> <p class="io">

Se oni volas doni plurajn klasnomojn al unu elemento, oni skribu cxiujn nomojn ene de unu sama class-atributo. Ekzemple <span class="io ioalia iotria">. Estu tiam spacetoj inter la klas-nomoj.

Bonformeco

“Bonformeco” estas grava baza nocio en XML. La cxefaj kondicxoj, por ke dokumento estu bonforma, estas la jxus klarigitaj reguloj kontraux erara interplektigxo de markoj, pri gxusta fermado de elementoj, kaj pri neripetado de atributoj.

XHTML-dokumento devas antaux cxio esti bonforma. En iuj kuntekstoj bonformeco estas suficxa kondicxo por ke la dokumento povu esti traktata. Ankaux aliaj reguloj gravas, sed la reguloj pri bonformeco estas la plej bazaj kaj plej obeendaj. La bonformecoreguloj estas komunaj al cxiuj formoj de XML. Aliaj XHTML-reguloj estas proprajxoj de XHTML.

Devigaj citiloj

En XHTML valoroj de atributoj devas cxiam esti skribataj inter citiloj. Oni povas lauxplacxe uzi citilojn duoblajn ("...") aux unuoblajn ('...'):

HTML XHTML (kaj HTML)
<img src=bildo.png alt=belajxo width=100 height=100> <img src="bildo.png" alt="belajxo" width="100" height="100"/>

Noto: Citiloj estas devigaj en HTML-sintaksa HTML5 nur se la valoro enhavas spacosignon aux iun el la jenaj signoj: " ' ` = < >

Minimumigitaj atributoj ne eblas

En HTML oni povis uzi simpligitan, “minimumigitan”, formon de iuj atributoj, kies valoroj estas nomataj “buleaj”. En XHTML oni povas uzi nur la plenan formon de tiaj atributoj.

Cxiuj koncernaj atributoj estas tiaj, kiuj povas havi nur unu solan valoron, kiu krome estas identa al la nomo de la atributo mem. Temas ekzemple pri la atributo "selected" (de <option>-elementoj). La sola valoro por "selected" estas "selected"! La plena formo estas do selected="selected", kaj la simpligita formo estas selected (sen egalsigno kaj sen citiloj).

HTML XHTML (kaj HTML)
<option ... selected> <option ... selected="selected">
<input type="checkbox" ... checked> <input type="checkbox" ... checked="checked"/>

Oni povas tiajn buleajn atributojn ankaux skribi kun malplena valoro (kun citiloj), ekzemple: selected="", checked="". Tia skribo plene egalas al la formoj kun valoro: selected="" signifas selected="selected", checked="" signifas checked="checked", k.t.p. Tio estas laux mia opinio tre konfuza, kaj tial evitinda. Sed tiu eblo ekzistas kaj en HTML-sintaksa HTML5 kaj en XHTML5, kaj do ankaux en poliglota HTML5.

<script> kaj <style>

Ene de la elementoj <script> kaj <style> oni devas en XHTML skribi la signojn < kaj & kiel signoreferencojn: &lt;, &amp;. Ekzemple:

<script>
  var x = 1, y = 2;
  if (x &lt; y) {
    alert("x estas malpli granda ol y");
  }
</script>

Estas cxiuokaze forte konsilinde, kaj en HTML kaj en XHTML, cxiam meti la enhavon de tiaj elementoj en eksterajn dosierojn, ekzemple js-dosierojn por Javaskripta kodo, kaj css-dosierojn por stilfolioj. Ekzemple:

<script src="/js/javaskripto.js"></script>
<link rel="stylesheet" href="../stilo/stilfolio.css"/>

En tiaj eksteraj dosieroj oni skribu < kaj & rekte (ne kiel signoreferencojn).

Krome la Javaskriptaj funkcioj document.write() kaj document.writeln() ne rajtas esti uzataj en XHTML, se oni servas la dokumenton kiel veran XML-on, t.e. kiel application/xhtml+xml. Fakte estas gxenerale konsilinde ne uzi tiujn funkciojn, cxu en HTML, cxu en XHTML. Ekzistas multe pli bonaj alternativoj.

Numeraj signoreferencoj

En XHTML numeraj signoreferencoj, kiuj uzas deksesumajn numerojn, ekzemple &#xe5;, devas uzi minusklan "x"-on en la numero. (En HTML eblas ankaux majuskla "X", ekzemple: &#Xe5;.) La efektivajn deksesumajn ciferojn literformajn (A, B, C, D, E, F) oni povas tamen skribi minuskle aux majuskle lauxplacxe: &#xe5; aux &#xE5;.

Indikado de lingvo

En XHTML oni uzu kaj la atributon xml:lang, kaj la atributon lang samtempe, kiam oni indikas la homan lingvon de elemento, ekzemple: <p xml:lang="eo" lang="eo"> (“eo” = Esperanto). La du atributoj havu nepre la saman enhavon. (En HTML suficxas uzi la atributon lang.)

La reguloj por poliglota HTML5 ecx diras, ke oni devas indiki la bazan homan lingvon de HTML5-dokumento en ties html-elemento, ekzemple jene:

<html xml:lang="eo" lang="eo" xmlns="http://www.w3.org/1999/xhtml">

Al la sekva parto, “Novajxoj”