XHTML

XHTML (eXtensible HyperText Markup Language 'išplečiama hiperteksto žymėjimo kalba') – žymėjimo kalba, kuri turi panašias į HTML žymėjimo taisykles, tik jos sintaksė yra griežtesnė. HTML yra pagrįsta SGML, taigi yra mažiau suvaržyta (galima praleisti kai kuriuos žymenis, pavyzdžiui, neužbaigti paragrafo), tuo tarpu XHTML remiasi XML, todėl XHTML dokumentas turi būti struktūriškai tvarkingas ().

XHTML buvo sukurtas W3C ir yra tapęs šio konsorciumo oficialia rekomendacija.

Savybės 

Labiau sintaksiškai suvaržytos HTML versijos poreikis atsirado padidėjus naudojamų mobiliųjų įrenginių skaičiui. Kadangi šie įrenginiai yra maži, jie neturi daug resursų, kuriuos būtų galima panaudoti struktūriškai sudėtingam HTML kodui.

Dauguma naujesnių žiniatinklio naršyklių gali dirbti su XHTML kodu, bet senesnės naršyklės XHTML kodą supranta kaip HTML. Taip pat beveik visos naršyklės, suderinamos su XHTML, gali naudoti HTML kodą. Yra nuomonių, kad šis faktas stabdo XHTML plėtrą. Nepaisant to, kad Microsoft yra pilnateisė W3C narė, šios kompanijos naršyklė Internet Explorer nėra suderinama su kai kuriomis XHTML rekomendacijomis.

Ypač naudinga XHTML savybė yra ta, kad šia žymėjimo kalba parašytame dokumente galima naudoti kitų iš XML kilusių kalbų (pvz., MathML, SVG) elementus. Vis dėlto, šią savybę galima panaudoti tik tada, kai XHTML dokumentas yra siunčiamas kaip XML (nurodant application/xhtml+xml MIME tipą).

Skirtumai tarp HTML ir XHTML 

XHTML yra HTML įpėdinis. Kai kurie mano, kad XHTML yra nauja HTML versija. Tai netiesa, nes XHTML yra atskira žymėjimo kalbų šaka, o W3C žiniatiklio puslapiams siūlo naudoti HTML ir XHTML.

Skirtumai tarp HTML ir pirmosios kartos XHTML (XHTML 1.x) yra nežymūs. Daugiausia pakeitimų buvo padaryta norint HTML kalbą pritaikyti XML.

 Svarbiausias pakeitimas yra reikalavimas, kad kiekvienas kalbos žymuo () turėtų pradžią ir pabaigą, nes to reikalauja XML. HTML kalboje pabaigos žymos dažnai yra praleidžiamos, pvz., < img src="mano_nuotrauka.jpg">. XHTML žymą privaloma užbaigti pradžios žymoje pridedant „kreivą brūkšnį“ (< img src="mano_nuotrauka.jpg" />) arba pridedant pabaigos žymą (< img src="mano_nuotrauka.jpg"></img>).
 Taip pat kiekvienas XHTML žymuo turi būti rašomas mažosiomis raidėmis, nes XML dokumente skiriamos didžiosios ir mažosios raidės. Šis reikalavimas kertasi su tam tikromis tradicijomis, kurios atsirado su HTML 2.0 – dauguma HTML kodo kūrėjų žymas rašydavo didžiosiomis raidėmis, kad galėtų lengviau vizualiai atskirti žymas nuo teksto.
 XHTML dokumente kiekvienas atributas turi būti išskirtas viengubomis (') arba dvigubomis (") kabutėmis. Tai nebuvo būtina SGML, taip pat ir HTML, kur kai kuriais atvejais kabutės galėdavo būti praleidžiamos.
 „Atributų minimizacija“ (pvz., < option selected>) XHTML taip pat nėra leistina. Šis pavyzdys turėtų būti perrašytas taip: < option selected="selected">

Apie kitus skirtumus galima pasiskaityti W3C XHTML 1.0 specifikacijoje.

XHTML versijos

XHTML 1.0 

Pati pirmoji W3C XHTML rekomendacija – HTML buvo pakeistas taip, kad atitiktų XML sintaksę ir taisykles. XHTML 1.0 turi tris „rūšis“:

 XHTML 1.0 Strict labai panaši į HTML 4.01 Strict, bet atitinka XML taisykles.
 XHTML 1.0 Transitional leidžia kai kuriuos pasenusius () elementus, pvz., < center>, < u>, < strike> ar < applet>. Transitional reikėtų naudoti siekiant suderinamumo su senomis naršyklėmis, kurios blogai interpretuoja CSS.
 XHTML 1.0 Frameset – leidžia HTML rėmelių () naudojimą.

XHTML 1.1 

Naujausia W3C XHTML rekomendacija yra XHTML 1.1: Module – based XHTML. Ši versija yra pagrįsta XHTML 1.0 Strict. XHTML 1.1 nebėra nė vieno prezentacinio (nustatančio išvaizdą) elemento ar rėmelių. Dokumento išvaizdą privaloma nustatinėti naudojant CSS. XHTML 1.1 taip pat turi specialų ruby markup palaikymą, reikalingą kai kurių Rytų Azijos rašmenų palaikymui.

XHTML moduliarizacija taip pat leidžia nedidelius XHTML kodo gabalėlius panaudoti kitose XML pagrįstose aplikacijose tam tikru būdu. Tai taip pat leidžia išplėsti XHTML specialiems tikslams, pvz., pridėti savo matematinių formulių užrašymo ar rėmelių () modulį. Tokie XHTML dokumentai jau nebeatitiks XHTML 1.1 standarto.

XHTML 2.0 

Kadangi XHTML 2.0 dar yra kuriamas, jis nėra tapęs W3C rekomendacija. Dabartinis XHTML 2.0 projektas yra kontroversiškas, nes ši XHTML versija nutrauktų suderinamumą su ankstesnėmis HTML/XHTML versijomis. Tai netgi nėra nauja XHTML versija – XHTML 2.0 yra visiškai nauja žymėjimo kalba, sukurta tam, kad patenkintų kai kuriuos poreikius, kurių nesugebėjo patenkinti XHTML 1.0 ar 1.1.

Naujos XHTML 2.0 savybės:

 HTML formos būtų pakeistos XForms standartu, kuris leistų skirtingiems įrenginiams prisiderinti formą pagal savo galimybes
 HTML rėmeliai būtų pakeisti XFrames
 DOM įvykiai () būtų pakeisti XML Events, kurie naudoja XML DOM
 Bus pridėtas naujas sąrašo elemento tipas nl, kuris žymėtų, kad sąrašas yra skirtas navigacijai. Šis elementas pakeistų daugybę dabartyje naudojamų būdų hierarchiniam meniu pateikti.
 Bet kuris elementas galės būti nuoroda, pvz., < li href="nuoroda.html">Nuoroda</li> (žr. XLink)
 Kiekvienas elementas galės nukreipti lankytoją į papildomą informacijos tipą, pvz., < p src="nemunas.jpg" type="image/jpeg">Nemunas</p>
 img elemento atributo alt, nurodančio alternatyvų pavadinimą, nebus; alternatyvą bus galima nurodyti img elemento viduje, pvz., < img src="nemunas.jpg">Nemunas</img>
 Bus pridėtas vienintelis antraštei panaudotinas elementas h
 XHTML 1.1 dar likę prezentaciniai elementai b, i ir tt naujoje versijoje bus pašalinti. Liks tik iš dalies prezentaciniai elementai, pvz., sup ir sub. Dalis kitų žymų, pvz., strong, bus laikomi semantiniais, t. y. nustatančiais dokumento struktūrą, ir liks naujajame standarte.
 Bus pagerintos XHTML vertimo į RDF galimybės.

Daugiau apie XHTML 2.0 galima paskaityti septintoje XHTML 2.0 projekto šablono versijoje.

Kitos versijos 

 XHTML Basic – speciali XHTML versija, skirta įrenginiams, kurie dėl savo ribotų galimybių negali naudoti vieno iš didesnių XHTML standartų.
 XHTML Mobile Profile – ši versija sukurta Open Mobile Alliance, pagrįsta XHTML Basic ir skirta mobiliems telefonams. Mobile Profile turi tam tikrų savybių, naudingų mobiliems telefonams.

XHTML korektiškumo tikrinimas 

XHTML dokumentas, atitinkantis kurią nors iš oficialių XHTML specifikacijų, vadinamas korektišku dokumentu (). Nors XHTML turėtų būti vienodai atvaizduojamas visose naršyklėse, taip nėra. Vis dėlto, kiekvieną XHTML dokumentą rekomenduojama patikrinti tam skirtu tikrinimo įrankiu (). Populiariausias iš jų – W3C Žymėjimo Tikrinimo Servisas.

Norint patikrinti XHTML ar HTML dokumentą, į jį reikės pridėti specialią eilutę, vadinamą DOCTYPE (Document Type Definition), kuri nurodytų, kuria žymėjimo kalba parašytas dokumentas. DOCTYPE turi būti nurodytas pačioje XHTML dokumento pradžioje, prieš < html> žymą. Galimos DOCTYPE XHTML dokumentui:

XHTML 1.0 Strict
 <!DOCTYPE html PUBLIC „-//W3C//DTD XHTML 1.0 Strict//EN“„http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd“>
XHTML 1.0 Transitional
 <!DOCTYPE html PUBLIC „-//W3C//DTD XHTML 1.0 Transitional//EN“„http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd“>
XHTML 1.0 Frameset
 <!DOCTYPE html PUBLIC „-//W3C//DTD XHTML 1.0 Frameset//EN“„http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd“>
XHTML 1.1
 <!DOCTYPE html PUBLIC „-//W3C//DTD XHTML 1.1//EN“„http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd“>
XHTML 2.0
 <!DOCTYPE html PUBLIC „-//W3C//DTD XHTML 2.0//EN“<br
/>„http://www.w3.org/MarkUp/DTD/xhtml2.dtd“>

Taip pat XHTML dokumentas turi turėti nurodytą XML vardų zoną (), kuri nustatytų naudojamą XHTML versiją. Tai dažniausiai daroma įterpiant xmlns atributą į html elementą.

XHTML 1.x pavyzdys:
 <html xmlns="http://www.w3.org/1999/xhtml">

XHTML 2.0 taip pat reikės nustatyti ir XML Schema:
 < html xmlns="http://www.w3.org/2002/06/xhtml2/"<br
/>xmlns: xsi="http://www.w3.org/2001/XMLSchema-instance"<br
/>xsi: schemaLocation="http://www.w3.org/2002/06/xhtml2/ http://www.w3.org/MarkUp/SCHEMA/xhtml2.xsd">

Taip pat XHTML dokumento pradžioje turėtų būti nurodyta koduotė. Tai reikėtų padaryti XML dokumento deklaracijoje ir naudojant meta http - equiv elementą. Jei koduotė nenustatyta, ji nustatoma į UTF-8 arba UTF-16.

Įprastos klaidos 

 „Tušti“ elementai neturi baigimo žymos
 Neteisingai: <br>
 Teisingai: <br />Taip pat galima naudoti: < br></br>, < br/> ir < br />. Senesnės naršyklės priims < br> ir < br /> variantus.

 Kai kurie elementai neturi baigimo žymos
 Neteisingai <p>Čia yra paragrafas.<p>Čia yra kitas paragrafas.
 Teisingai: <p>Čia yra paragrafas.</p><p>Čia yra kitas paragrafas.</p>

 Neteisinga tvarka rašomos baigimo žymos
 Neteisingai: <em><strong>Čia yra tekstas.</em></strong>
 Teisingai: <em><strong>Čia yra tekstas.</strong></em>

 Nenustatomas paveikslėlio alternatyvus tekstas (alt parametras), kuris būtų rodomas neužkrovus paveikslėlio arba neįgaliesiems skirtoje naršyklėje
 Neteisingai: <img src="nemunas.jpg" />
 Teisingai: <img src="nemunas.jpg" alt="Nemunas" />
 Teisingai (XHTML 2.0): <img src="nemunas.jpg">Nemunas</img>

 Tekstas rašomas tiesiog body elemento viduje (tai nėra klaida XHTML 1.0 Transitional)
 Neteisingai: <body>Čia yra tekstas.</body>
 Teisingai: <body><p>Čia yra tekstas.</p></body>

 Blokiniai elementai teksto elementuose
 Neteisingai: <em><h2>Įvadas</h2></em>
 Teisingai: <h2><em>Įvadas</em></h2>

 Atributų reikšmės neišskiriamos kabutėmis
 Neteisingai: <td rowspan=3>
 Teisingai: <td rowspan="3">

 Tekste nekorektiškai naudojamas & ženklas (norėdami tekste parašyti & naudokite & amp;)
 Neteisingai: <title>Young & Rubicam</title>
 Teisingai: <title>Young &amp; Rubicam</title>

 Adresuose nekorektiškai naudojamas & ženklas (nuorodose taip pat naudokite & amp;)
 Neteisingai: <a href="index.php?puslapis=naujienos&stilius=5">Naujienos</a>
 Teisingai: <a href="index.php?puslapis=naujienos&amp;stilius=5">Naujienos</a>

 Elementų pavadinimuose naudojamos didžiosios raidės
 Neteisingai: <BODY><P>Pats geriausias puslapis!</P></BODY>
 Teisingai: <body><p>Pats geriausias puslapis!</p></body>

 target atributo naudojimas XHTML 1.0 Strict a elemente
 Neteisingai: <a href="puslapis.html" target="_blank">Atsidarys naujame puslapyje</a>
 Alternatyvos: XHTML 1.0 Transitional arba JavaScript panaudojimas

 Atributų minimizavimas
 Neteisingai: <textarea readonly>Čia negalima rašyti.</textarea>
 Teisingai: <textarea readonly="readonly">Čia negalima rašyti.</textarea>

 document.write() naudojimas skriptuose vietoj naujų, DOM pagrįstų metodų, pvz., document.createElementNS(); document.getElementById().appendChild();

 CSS stilių ir skriptų komentavimas. XHTML komentarų turinys yra nenaudojamas.
 Neteisingai:
<style type="text/css"><!--
  p {
    color: green;
  }
--></style>
 Teisingai:
<nowiki>
<style type="text/css"><![CDATA[
  p {
    color: green;
  }
]]></style>
</nowiki>
 Norint geriausio suderinamumo su HTML, reikėtų naudoti:
<nowiki>
<style type="text/css"><!--/*--><![CDATA[/*><!--*/
  p {
    color: green;
  }
/*]]>*/--></style>
</nowiki>

Suderinamumas 

Dauguma XHTML 1.0 dokumentų yra suderinami su HTML, t. y. juos gali apdoroti naršyklė, skirta HTML dokumentams. Tokie dokumentai turi būti perduoti su MIME tipu text/html. Naršyklė tokį dokumentą apdoros kaip „žymų sriubą“ (). XHTML dokumentą perduodant su MIME tipu application/xhtml+xml (nurodant šį tipą ir turėtų būti perduodami XHTML dokumentai) daugumai senesnių naršyklių iškils problemų su XHTML dokumento apdorojimu.

XHTML 1.1 moduliacinės savybės daro jį nesuderinamą su XHTML 1.0 ir HTML. Atitinkamai XHTML 2.0 yra nesuderinamas su savo „protėviais“. Dėl šių ir kitų savybių XHTML susilaukė kritikos (anglų kalba).

Pavyzdys 

Šis pavyzdys parašytas XHTML 1.0 Strict dialektu.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC „-//W3C//DTD XHTML 1.0 Strict//EN“ 
„http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd“>
<html xmlns="http://www.w3.org/1999/xhtml" lang="lt" xml:lang="lt">

<head>
  <title>XHTML 1.0 Strict pavyzdys</title>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>

<body>
  <p>
    Tai yra XHTML 1.0 Strict pavyzdys.
  </p>
</body>

</html>

Taip pat skaitykite 

 HTML
 WML
 XML
 W3C
 CSS

Nuorodos 

 W3C tinklalapis
 XHTML 1.0 specifikacija
 XHTML 1.1 specifikacija
 Tekstas anglų kalba, kritikuojantis XHTML
 W3C Žymėjimo Tikrinimo Servisas

Internetas