XHTML - Etendebla Hiperteksta Marklingvo

3. Diferencoj kompare kun HTML 4

Devigaj markoj

Komencaj kaj finaj markoj por la elementoj <head> kaj <body> estas devigaj. En HTML oni povis ilin, lau certaj reguloj, subkompreni, sed tio ne eblas en XHTML.

Minusklaj markoj kaj atributoj

Chiuj nomoj de elementoj kaj atributoj havas minusklan formon, kaj devas esti ghuste tiel skribataj. Antaue eblis mem elekti lauplache la usklecon, sed XML postulas distingadon inter minuskloj kaj majuskloj. Do, nepre <body>, ne <BODY> nek <Body> au simile, nepre <p>, ne <P>, nepre <td rowspan="2">, ne <TD ROWSPAN="2"> nek <td ROWSPAN="2">, k.t.p.

Oni notu, ke ankau stilfolio (ekz. CSS), kiu indikas la stilon de XHTML-dokumento, laue uzu minusklajn nomojn por nomi la stiligatajn elementojn.

Elementoj ne povas interplektighi

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

Malghusta Ghusta
<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>

Efektive misinterplektigho estis erara jam en HTML, sed estis tamen praktike tolerata de multaj TTT-legiloj. Sed XHTML estos uzata en multaj programoj kaj aparatoj, kiuj simple ne akceptos tiajn erarojn.

Devigaj finmarkoj

Chiuj elementoj, kiuj povas havi enhavon, devas havi finmarkon, kiu fermas la elementon. En HTML tiaj finmarkoj estis libervolaj por pluraj elementoj, sed jam en HTML estis konsilinde fermi ankau tiajn elementojn por eviti problemojn en iuj legiloj.

Malghusta en XHTML Chiam ghusta
<p>Unua alineo <p>Unua alineo</p>
<p>Dua alineo <p>Dua alineo</p>

Multaj alkutimighis rigardi <p>-markojn kvazau dividilojn inter alineoj. Fakte <p> neniam estis tia dividilo, sed markilo por komenco de alineo.

Fermo de malplenaj elementoj

Iuj elementoj estas malplenaj. Ekz. <br> (en HTML) markas finon de linio, sed post <br> ne sekvas teksto au 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 ankau tiaj malplenaj elementoj devas esti eksplicite fermataj. Tio povas okazi au per finmarko tuj post la komencmarko (ekz. <br></br>) au per / antau la fina > de la komencmarko lau XML-reguloj (<br />):

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

Rimarku 1: Chi-antaue estas spaceto antau chiu finanta /. Tia spaceto tute ne estas necesa lau la reguloj de XHTML kaj XML. Antaue tia aldona spaceto estis rekomendinda por ke ankau tre malnovaj TTT-legiloj komprenu la kodon. Sed nun praktike chiuj tiuj malnovaj TTT-legiloj estas formortintaj, kaj sekve tiaj aldonaj spacetoj estas nuntempe tute superfluaj.

Rimarku 2: Kiel menciighis chi-antaue, ankau eblas uzi plenajn finmarkojn por malplenaj elementoj (ekz. <hr></hr>). Nunaj TTT-legiloj tamen ne bone komprenas tiun varianton, kaj se oni volas konservi kongruon kun HTML-legiloj, oni do evitu tion preferante <hr /> k.t.p.

Rimarku 3: Se elemento, kiu povas havi enhavon (ekz. <p>) okaze estas malplena, oni povas en XHTML kaj XML ghin skribi per unu memfermighanta marko, ekz. <p/> au <p />. Tio tamen ne funkcias en malnovaj TTT-legiloj, kaj oni do skribu ekz. <p></p>, se oni deziras kongruon kun tiuj legiloj.

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 chiujn nomojn ene de unu sama “class”-atributo. Ekz.: <span class="io ioalia">. Estu tiam spacetoj inter la klas-nomoj. Oni tamen sciu, ke iuj malnovaj TTT-legiloj malbone komprenas tiajn indikojn pri pluraj klasnomoj.)

Bonformeco

“Bonformeco” estas grava baza nocio en XML. La chefaj kondichoj, por ke dokumento estu bonforma, estas la jhus klarigitaj reguloj kontrau erara interplektigho de markoj, pri ghusta fermado de elementoj, kaj pri neripetado de atributoj.

XHTML-dokumento devas antau chio esti bonforma. En iuj kuntekstoj bonformeco estas suficha kondicho por ke la dokumento povu esti traktata. Ankau aliaj reguloj gravas, sed la reguloj pri bonformeco estas la plej bazaj kaj plej obeendaj. La bonformecoreguloj estas komunaj al chiuj formoj de XML. Aliaj XHTML-reguloj estas proprajhoj de XHTML. Efektive bonformeco estas sekvinda ankau en ordinaraj HTML-paghoj, char iuj TTT-legiloj tiam pli ghuste kaj pli facile komprenas la kodon.

Devigaj citiloj

Valoroj de atributoj devas skribighi kun citiloj. En HTML iuj tiaj valoroj devis esti citataj, aliaj povis aperi sen citiloj. En XHTML la regulo estas pli simpla: Chiuj valoroj estu citataj. Oni povas lauplache uzi citilojn duoblajn ("...") au unuoblajn ('...'):

HTML XHTML (kaj HTML)
<img ... border=0> <img ... border="0" />

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.

Chiuj koncerncaj atributoj estas tiaj, kiuj povas havi nur unu solan valoron, kiu krome estas identa al la nomo de la atributo mem. Temas ekz. 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" />
<ul compact> <ul compact="compact">

La enhavo de <script> kaj <style>

Ene de la elementoj <script> kaj <style> oni devas en XHTML eviti tiajn signojn, kiuj havas specialan signifon en HTML kaj XHTML, nome la signojn "<" kaj "&". Lau la principoj de XML oni povas tiujn signojn uzi ene de <script> kaj <style> nur se oni aldonas komence kaj fine de la elementenhavo specialajn indikilojn, kiuj montras, ke la enhavo ne interpretighu lau HTML-reguloj (komenca “<![CDATA[” kaj fina “]]>”). Ekz.:

<script type="text/javascript">
  <![CDATA[
    document.write("<b>Jen misinterpretebla teksto.</b>");
  ]]>
</script>

Tiujn specialajn indikilojn tamen apenau komprenas malnovaj TTT-legiloj, kaj tial necesas anstataue elturnighi per aliaj rimedoj, se oni volas, ke ankau tiaj legiloj komprenu. La plej simpla rimedo estas meti la enhavon de tiaj elementoj en eksterajn dosierojn, ekz. js-dosierojn por Javaskripta kodo, kaj css-dosierojn por kaskadaj stilfolioj. Ghenerale tio estas bona uzo chiuokaze. Ekz.:

<script type="text/javascript" src="javaskripto.js"></script>

<link rel="stylesheet" type="text/css" href="stilfolio.css" />

id anstatau name

En HTML oni povis uzi la atributon name por nomi dokumentopartojn, kiujn oni volis referenci en ligiloj (per #-simbolo). Oni povis ankau uzi id por tiu celo. En XHTML oni tamen uzu nur id por tiaj referencoj.

HTML XHTML (kaj HTML)
<a name="loko">...</a> <a id="loko" name="loko">...</a>
<a href="#loko">...</a> <a href="#loko">...</a>

Rimarku, ke la valoro de id-atributo devas esti unika ene de unu dokumento. Ne povas esti du elementoj kun la sama valoro por id en unu dokumento.

Numeraj signoreferencoj

En HTML oni povis skribi numerajn signoreferencojn kaj dekume, ekz. &#229;, kaj deksesume, ekz. &#xe5;, &#XE5;. En la deksesuma formo oni povis uzi komencan “x” (minusklan) au “X” (majusklan) egale (ghi indikas, ke temas pri deksesuma numero). En XHTML oni uzu nepre nur minusklan “x”. Oni do skribu nur &#xe5; au &#xE5;. Deksesumajn ciferojn literformajn (A, B, C, D, E, F) oni povas plu skribi minuskle au majuskle lauplache. Estas chiuokaze rekomendinde resti che la dekuma skribo de tiaj signoreferencoj, char iuj malnovaj legiloj ne komprenas la deksesuman skribon. Sed se oni servas XHTML-on kiel veran XML-on, oni ja povas uzi la deksesuman skribon, char tiajn paghojn komprenas chiuokaze nur modernaj legiloj.

Indikado de lingvo

En HTML oni povis indiki la uzatan lingvon (homan lingvon) de tuta dokumento au de unuopaj elementoj. Tion oni faris per la atributo lang, ekz. <body lang="eo"> (indikas Esperanton). En XHTML oni tamen uzu xml:lang por la sama celo. Por kongruo kun malnovaj legiloj, oni uzu ambau atributojn samtempe, ekz. <body xml:lang="eo" lang="eo">.

MIME-tipoj «

Kiam servilo sendas HTML-an dokumenton al legilo, ghi chiam anoncas antaue, per t.n. “HTTP-chapo”, kiaspecan dokumenton ghi sendas, per indikado de t.n. MIME-tipo. Por montri, ke temas pri HTML-dokumento, servilo sendas la jenon:

Content-type: text/html

La servilo samtempe povas anonci ankau la signokodon uzatan en la dokumento, ekzemple:

Content-type: text/html; charset=UTF-8

Content-type: text/html; charset=iso-8859-1

Se la dokumento estas verkita lau XHTML 1.0, kaj se ghi estas verkita por kongruo kun malnova HTML (lau la konsiloj chi tie), oni povas ghin servi tute same (kun la sama HTTP-chapo). Tio funkcias tre bone.

Oni povos servi XHTML-ajn dokumentojn al programoj, kiuj ne bezonas tian kongruon kun la pasintaj formoj de HTML. Oni povos servi XHTML-on kiel XML-on - eble ech enmiksante en la XHTML-an kodon aliajn specojn de XML (ekz. MathML por matematikaj formuloj). Se oni elektas servi XHTML-on kiel veran XML-on, oni uzu jenan indikon en la HTTP-chapo:

Content-type: application/xhtml+xml

Eblas tiamaniere servi XHTML-dokumentojn al chiuj modernaj TTT-legiloj. Tio signifas praktike al chiuj legiloj krom versioj 5 - 8 de Esplorilo (nur ekde versio 9 Esplorilo kapablas trakti tiajn paghojn.

Ekzistas nun ankau pli nova versio de XHTML: versio 1.1. En tiu versio oni plene forlasis la kongruon kun malnova HTML, kaj la afero rulighu plene XML-e. Se oni elektas uzi XHTML-on 1.1, oni devas servi siajn paghojn kiel application/xhtml+xml (au kiel application/xml).

Dosiersufiksoj «

Estas kutimo doni al HTML-dosieroj la nomsufikson .html (au la mallongan formon .htm). Principe oni rajtas uzi chian ajn sufikson, sed multaj serviloj estas agorditaj por rekoni la MIME-tipon lau la dosiersufikso. Plej ofte ili automate anoncas text/html, se la sendota dosiero havas la sufikson .html au .htm. Tial, se oni volas servi XHTML-dokumentojn kiel ordinaran HTML-on, oni normale plu uzu la kutimajn sufiksojn. Tre multaj tamen supozas, ke oni devas shanghi al .xhtml. Plej multaj serviloj tamen tute ne scias, kion signifas la sufikso .xhtml, nek kian MIME-tipon ili anoncu por tia dosiero. Ili tiam eble sendas ian gheneralan tipon, ekz. text/plain (= plata teksto), kaj la TTT-legiloj tiam ech ne provas trakti la dokumenton kiel HTML-on, sed simple montras la nudan kodon. (Iuj legiloj tamen provas mem diveni, ke temas pri HTML, sed tio principe estas miskonduto. Ili sekvu la anoncitan MIME-tipon.)

Do, se oni mem povas agordi, kiel la servilo traktu diversajn dosiersufiksojn, oni povas aranghi la aferon lauplache, ekz. ekuzante la sufikson .xhtml, sed normale oni simple restu che la tradiciaj sufiksoj .html kaj .htm. Se oni estonte volos ekservi la dokumentojn kiel application/xhtml+xml, oni devos vershajne mem iel agordi la servilon, ke ghi tiun MIME-tipon anoncu.

Rimarku, ke en la reto estas uzataj plej diversaj sufiksoj che TTT-dokumentoj, ekz. .php, .js, .cgi, .asp... Normale ili chiuj tamen servighas kun la MIME-tipo text/html, char la koncernaj serviloj estas agorditaj por tion fari. La uzata sufikso mem ne gravas. Gravas nur la MIME-tipo, kiun la servilo anoncas.

Tamen, se oni havas (X)HTML-dokumenton en sia propra komputilo, kaj ghin legas rekte de la disko, sen interveno de servilo, tiam la uzata nomsufikso povas esti grava. En tiaj okazoj la operacisistemo ofte uzas la nomsufikson por rekoni, chu temas pri (X)HTML au pri alia speco de dokumento. Se la operacisistemo ne rekonas la dokumenton kiel (X)HTML-on, oni eble devas mem au shanghi al alia sufikso, au instrui al la operacisistemo la signifon de la uzata sufikso. Pri tio ne ekzistas gheneralaj reguloj au principoj. Chiu operacisistemo havas siajn proprajn metodojn kaj tradiciojn.