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 išsiskiria itin griežta semantika

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

Savybės

redaguoti

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

redaguoti

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 (angl. tag) 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

redaguoti

XHTML 1.0

redaguoti

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 (angl. deprecated) 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ų (angl. framesets) naudojimą.

XHTML 1.1

redaguoti

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.

XHTML 2.0

redaguoti

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 (angl. DOM Events) 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

redaguoti
  • 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

redaguoti

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:

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“
„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.

Įprastos klaidos

redaguoti
  • „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:
<style type="text/css"><![CDATA[
  p {
    color: green;
  }
]]></style>
    • Norint geriausio suderinamumo su HTML, reikėtų naudoti:
<style type="text/css"><!--/*--><![CDATA[/*><!--*/
  p {
    color: green;
  }
/*]]>*/--></style>

Suderinamumas

redaguoti

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).

Pavyzdys

redaguoti

Š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

redaguoti

Nuorodos

redaguoti