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 (angl. well-formed).
XHTML buvo sukurtas W3C ir yra tapęs šio konsorciumo oficialia rekomendacija.
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ą).
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.
< 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>
).'
) 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.< 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.
Pati pirmoji W3C XHTML rekomendacija – HTML buvo pakeistas taip, kad atitiktų XML sintaksę ir taisykles. XHTML 1.0 turi tris „rūšis“:
< center>
, < u>
, < strike>
ar < applet>
. Transitional reikėtų naudoti siekiant suderinamumo su senomis naršyklėmis, kurios blogai interpretuoja CSS.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ų (angl. frameset) modulį. Tokie XHTML dokumentai jau nebeatitiks XHTML 1.1 standarto.
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:
nl
, kuris žymėtų, kad sąrašas yra skirtas navigacijai. Šis elementas pakeistų daugybę dabartyje naudojamų būdų hierarchiniam meniu pateikti.< li href="nuoroda.html">Nuoroda</li>
(žr. XLink)< 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>
h
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.Daugiau apie XHTML 2.0 galima paskaityti septintoje XHTML 2.0 projekto šablono versijoje.
XHTML dokumentas, atitinkantis kurią nors iš oficialių XHTML specifikacijų, vadinamas korektišku dokumentu (angl. valid document). 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 (angl. validator). 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:
<!DOCTYPE html PUBLIC „-//W3C//DTD XHTML 1.0 Strict//EN“
„http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd“>
<!DOCTYPE html PUBLIC „-//W3C//DTD XHTML 1.0 Transitional//EN“
„http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd“>
<!DOCTYPE html PUBLIC „-//W3C//DTD XHTML 1.0 Frameset//EN“
„http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd“>
<!DOCTYPE html PUBLIC „-//W3C//DTD XHTML 1.1//EN“
„http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd“>
<!DOCTYPE html PUBLIC „-//W3C//DTD XHTML 2.0//EN“
„http://www.w3.org/MarkUp/DTD/xhtml2.dtd“>
Taip pat XHTML dokumentas turi turėti nurodytą XML vardų zoną (angl. namespace), 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/"
xmlns: xsi="http://www.w3.org/2001/XMLSchema-instance"
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.
<br>
<br />
< br></br>
, < br/>
ir < br />
. Senesnės naršyklės priims < br>
ir < br />
variantus.<p>Čia yra paragrafas.<p>Čia yra kitas paragrafas.
<p>Čia yra paragrafas.</p><p>Čia yra kitas paragrafas.</p>
<em><strong>Čia yra tekstas.</em></strong>
<em><strong>Čia yra tekstas.</strong></em>
alt
parametras), kuris būtų rodomas neužkrovus paveikslėlio arba neįgaliesiems skirtoje naršyklėje
<img src="nemunas.jpg" />
<img src="nemunas.jpg" alt="Nemunas" />
<img src="nemunas.jpg">Nemunas</img>
body
elemento viduje (tai nėra klaida XHTML 1.0 Transitional)
<body>Čia yra tekstas.</body>
<body><p>Čia yra tekstas.</p></body>
<em><h2>Įvadas</h2></em>
<h2><em>Įvadas</em></h2>
<td rowspan=3>
<td rowspan="3">
& amp;
)
<title>Young & Rubicam</title>
<title>Young & Rubicam</title>
& amp;
)
<a href="index.php?puslapis=naujienos&stilius=5">Naujienos</a>
<a href="index.php?puslapis=naujienos&stilius=5">Naujienos</a>
<BODY><P>Pats geriausias puslapis!</P></BODY>
<body><p>Pats geriausias puslapis!</p></body>
target
atributo naudojimas XHTML 1.0 Strict a
elemente
<a href="puslapis.html" target="_blank">Atsidarys naujame puslapyje</a>
<textarea readonly>Čia negalima rašyti.</textarea>
<textarea readonly="readonly">Čia negalima rašyti.</textarea>
document.write()
naudojimas skriptuose vietoj naujų, DOM pagrįstų metodų, pvz., document.createElementNS(); document.getElementById().appendChild();
<style type="text/css"><!-- p { color: green; } --></style>
<style type="text/css"><![CDATA[ p { color: green; } ]]></style>
<style type="text/css"><!--/*--><![CDATA[/*><!--*/ p { color: green; } /*]]>*/--></style>
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ą“ (angl. tag soup). 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).
Š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>