við sér XHTML væðingin er í hámarki, allir
vilja vera með. Þangað til að validateinu kemur, alls konar
óskiljanlegar villur og andvökunætur eru nóg til þess
að hrekja meðalamanninn í burt.
<p>Nei, nei. En það hafa margir verið að spyrja spurninga í
sambandi við XHTML validation. Og var ég beðin um að skrifa
grein um þetta efni hér á huga, og ákvað ég
að taka þeirri áskorun, safnaði saman algengustu villunum
og reyni að útskýra hvernig má forðast þær
eftir bestu getu.</p>
<p>Hér kemur svo listinn, hann er ekki tæmandi, og ef það
er eitthvað sem ég gleymi, þá ef ég þekki
ykkur, dissið þið mig fyrir það!</p>
<p>Þessi listi er yfir villur sem <a href="http://validator.w3.org“ target=”_blank">http://validator.w3.org</a>
kemur með við að validata XHTML 1.0 strict.</p>
<p><br>
<b>Fatal Error: no document type declaration; will parse without validation
</b><br>
Í XHTML verður að skilgreina af hvaða tegund skjalið
er, hvort það sé HTML eða XHTML, hvaða version og af
hvaða "styrkleika".<br>
Þessu er bætt við í fyrstu línuna í skjalinu,
á undan <html>.<br>
"Strangt": <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><br>
"Venjulegt" : <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0
Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><br>
Ef notað er frameset: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0
Frameset //EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd"></p>
<p>Fólk verður bara að ákveða fyrir sjálft sig
hvað það vill nota, sjálf nota ég strict, það
er aðeins meira vesen, en þegar maður kemst upp á lag með
það er það lítið mál. Svo er líka
gott, ef maður er að fara validatea síðu sem er skrifuð
í HTML 3.2, eða 4 að byrja á að validatea hana í
transitional, og færa sig svo yfir í strict þegar maður
er komin upp á lag með þetta allt saman.<br>
</p>
<p><b>Warning: No Character Encoding detected! To assure correct validation, processing,
and display, it is important that the character encoding is properly labeled.</b><br>
Það er betra að skilgreina hvaða stafasett er notað. Hið
vestræna stafasett (sem við notumst við) heitir iso-8859-1.<br>
Þessu er semsagt bætt við skjalið, í línuna
eftir <!DOCTYPE><br>
<?xml version="1.0" encoding="iso-8859-1" ?><br>
</p>
<p><b>Error: element "foo" not allowed here; check which elements this
element may be contained within <br>
</b>Tög verða að vera nestuð rétt, þ.e. <b><i>Foo</b></i>
er ólöglegt, það verður að vera <b><i>Foo</i></b>,
semsagt tögin verða að lokast í sömu röð og
þau voru opnuð. <br>
<br>
Oft kemur þessi villa þegar verið er að vinna með töflur
og form. Það var ákveðið "shitmix" að
setja <form> tagið einhverstaðar inn í miðja töfluna
til þess að fela marginið sem formið tekur með sér,
það má sem sagt ekki. Það verður að opna
<form> á undan töflunni, og loka því á
eftir henni. Nú fer fólk að velta fyrir sér þessu
blessaða margini sem er svo mikið hatað, en "Where there's
will, there's a way" og eins og svo margt annað, þá er
þessu reddað með CSS: <form style:"0px, 0px, 0px, 0px">
og vola, því vandamáli reddað.<br>
Ef það er verið að vinna með mörg form á sömu
síðunni verður að hafa hvert form inn í <td>
og byrja þar nýja töflu ef maður vill.<br>
Algeng tög sem maður óvart nestar vitlaust eru: form, td, tr,
table, li, ul.</p>
<p> Ábending, ef maður indentar kóðan sinn vel (ég
nota tvö space svo hann sjáist alltaf eins) þá verður
mun einfaldara að finna svona vitleysur og koma í veg fyrir fleiri.<br>
</p>
<p><b>Error: end tag for "tr" omitted; end tags are required in XML
for non-empty elements; empty elements require an end tag or the start tag must
end with "/>" </b><br>
Það verður að loka ÖLLUM tögum í XHTML, líka
þeim sem taka ekkert með sér. Ef tög taka einhvað
með sér, t.d umkringja texta þá er notuð þessi
aðferð: <div>Texti</div>. Ef tögin taka aftur á
móti ekkert með sér, t.d <br> þá er notuð
þessi aðferð: <br />. Bilið á undan / er sett
til þess að netscape skilji hvað maður er að gera, en
er algjörlega samtkvæmt staðlinum.<br>
Algengt er að fólk hafi tamið sér að loka ekki eftirfarandi
tögum:<br>
br, input, img, meta, option, li. Þar sem síðustu tvö
taka eitthvað með sér en hefur ekki verið nauðsynlegt
að loka hingað til.<br>
</p>
<p><b>Error: there is no attribute "language" for this element (in this
HTML version)</b><br>
Eftir að CSS kom til sögunar urðu mörg attribute óþörf
í HTML og voru rudd úr vegi fyrir hið nýja og guðdómlega
CSS. Í XHTML var þeim einfaldlega hent, og notkun þeirra
bönnuð.<br>
</p>
<table border=“0” cellspacing=“0” cellpadding=“0” width=“438”> <tr> <td>Bannað attribute</td> <td>(mín) Lausn </td> </tr> <tr> <td>fyrir <b><body></b></td> <td> </td> </tr> <tr> <td>bgcolor</td> <td>endur skilgreina body í css.</td> </tr> <tr> <td>text</td> <td>endur skilgreina body í css.</td> </tr> <tr> <td>link</td> <td>nota css selector.</td> </tr> <tr> <td>vlink</td> <td>nota css selector.</td> </tr> <tr> <td>alink</td> <td>nota css selector.</td> </tr> <tr> <td>leftmargin</td> <td>endur skilgreina body í css.</td> </tr> <tr> <td>topmargin</td> <td>endur skilgreina body í css.</td> </tr> <tr> <td>marginwidth</td> <td>endur skilgreina body í css.</td> </tr> <tr> <td>marginheight</td> <td>endur skilgreina body í css.</td> </tr> <tr> <td>fyrir <b><td></b></td> <td> </td> </tr> <tr> <td>width</td> <td>nota myndir til þess að teyja á cellum.</td> </tr> <tr> <td>height</td> <td>nota myndir til þess að teyja á cellum.</td> </tr> <tr> <td>bgcolor</td> <td>nota class í css.</td> </tr> <tr> <td><img></td> <td> </td> </tr> <tr> <td>border</td> <td> endurskilgreina img í css.</td> </tr> <tr> <td>align</td> <td>nota töflur til þess að staðsetja myndir, eða layera.</td> </tr> <tr> <td>fyrir <b><form></b></td> <td> </td> </tr> <tr> <td>name</td> <td>er orðið að id, sjá hér að neðan.</td> </tr> <tr> <td>fyrir <b><script> </b></td> <td> </td> </tr> <tr> <td>language</td> <td>í staðinn fyrir language notar maður type.</td> </tr></table>
<p> Svo voru önnur sem var skipt um nafn á, s.s attributið "name"
sem mikið var notað fyrir <form>,<a>,<div> of fleira,
var skipt út fyrir "id", allir browserar skilja "id"
(held ég allavegna) þannig að ykkur er óhætt að
fara bara og replacea allt "name" fyrir "id".<br>
</p>
<p><b>Error: attribute values must be quoted in XML <br>
Error: an attribute value must be quoted if it contains any character other
than letters (A-Za-z), digits, hyphens, and periods; use quotes if in doubt
</b><br>
Öll attribute verða að vera innan gæsalappa.<br>
</p>
<p><b>Error: element "foo" not defined in this HTML version</b><br>
Þegar XHTML staðalinn var þróaður, var ákveðið
að taka svolítið til í HTMLinu, sem var orðið
skuggalega yfirgripsmikið. Þá var ákveðnum tögum
hennt út, fyrir sum komu ný, önnur voru tekin út fyrir
CSS. Þetta eru tög sem sjást sjaldan í kóða
þessa dagana, en ég hef heimilidir fyrir því að
hugi.is stelist til þess að nota þau af og til. Þetta
er vondur ávani, og sparar lítinn tíma til framtíðar.
Ég hvet ykkur því að hætta að skrifa þessi
löngu útdauðu tög, og fara að gera það sem
er rétt og gott í staðinn.</p>
<p>Meðal þessara taga eru:<br>
<font><br>
<center><br>
<isindex><br>
<u></u></p>
<p>Önnur ástæða fyrir þessari villu getur verið
að tögin séu skrifuð í hástöfum, sem
er bannað samkvæmt XHTML staðlinum. Öll tög og attribute
eiga að vera skrifup með í lágstöfum.<br>
</p>
<p><b>Error: end tag for element "foo" which is not open; try removing
the end tag or check for improper nesting of elements <br>
</b>Þetta segir nú eiginlega allt sem segja þarf. Þessi
villa kemur þegar tagi er lokað sem hefur ekki verið opnað.
Eða tögin eru vitlaust nestuð. Nú er bara að fara og
lesa vel yfir kóðan, til þess að finna vitleysuna.<br>
</p>
<p><b>Error: required attribute "foo" not specified<br>
</b>Sum tög hafa ákveðin grunn attribute sem verða að
vera skilgreind. <br>
<img>: tekur alltaf með sér alt. Þetta er gert fyrir
tal-browsera, og fólk sem af einhverri ástæðu getur
ekki séð myndir. Ef þið viljið ekki hafa alt, þá
getið þið haft það tómt. alt="". <img>
tekur líka með sér width and height, þetta er góð
regla að temja sér til þess að gera síðurnar
auðloadanlegri. Ef það er eitthvað vesen með þetta,
og þið eruð að nota php (veit ekki hvort þetta er til
í asp, og jsp) þá er til function sem hetir getImageSize("mynd.png")
og skilar arrayi, í þriðja keyinu í arrayinu er svo
geymdur textinn width="breidd myndarinnar" height="hæð
myndarinnar".<br>
<form>: tekur alltaf með sér action. þegar þið
viljið ekki action, þá getið þið bara sett urlið
á sjálfri síðunni í action, gerir sama hlutinn,
jafnvel betur.<br>
<script> og <style>: tekur alltaf með sér type.<br>
</p>
<p><b>Error: unknown entity "foo" <br>
Error: reference not terminated by refc delimiter</b><br>
Þegar XHTML rekst á & í texta býst hann við
special character, eins og &nbsp;. Þegar við erum aftur á
móti að nota & í urlum (?nafn=eg&simi=5556666) þá
kemur villa, hún reynir að þýða special characterinn
&simi og getur það náttúrulega ekki, einnig kemur
villa því það vantar ; eftir special characternum. Þetta
er leyst með því að í staðinn fyrir að sktifa
& þá skrifum við special characterinn &amp; og allt
rennur eins og skildi.<br>
</p>
<p><b>Error: missing a required sub-element of "foo" </b><br>
Sum tög taka alltaf með sér undir tög, s.s <table>
tekur með sér <tr> sem tekur með sér <td>
og <select> tekur með sér <option>. Ef þessi villa
kemur upp þá vantar undir tagið. <br>
</p>
<p><b>Error: value of attribute "foo" cannot be "foobaric";
must be one of "foobar", "foobarian", "tralli"<br>
</b>Þessi villa kemur oftast þegar maður ruglar saman align
og valign. Þetta er semsagt ekki rétt gildi á attributi
fyrir tag :)<br>
Svona til þess að sýna þetta þá má:<br>
align fá "left", "center", "right", "justify",
"char" og<br>
valign fá "top", "middle", "bottom", "baseline".<br>
</p>
<p><b>Error: duplicate specification of attribute "foo"<br>
</b>Að sjálfsögðu má ekki tvítaka attribute,
þetta skeður samt af og til þegar maður er með mikið
af attributum, eina leiðin til þess að leysa þetta er bara
að ákveða hvað maður vill hafa og henda hinu út.</p>
<p></p>
<p></p>
<p></p>
<p>Vonandi hjálpar þetta eitthvað. Ég tók eftir því við þessi skrif mín hvað vantar íslensk
orð fyrir þennan iðnað. Spurning um að einhver máljöfurinn
setjist niður og finni íslensk orð fyrir: tag, attribute, special
character o.s.frv.</p
*————————-*