Kokeilin valitoida kotisivujani (linkki profiilissani) ensin w3.orgin validaattorilla ja siinä ei tullut ongelmia. Kuitenkaan sama sivu ei valitoidu sivun http://www.validome.org/validate mukaan, ja siinä on jopa yksi fataali virhe. Onko validome oikeassa ja mun tiedoissa aika pahoja aukkoja ihan perus-XHTML:n tiedoissa?
En osaa vastata varsinaiseen kysymykseen. Kuitenkin jos laitat tuohon php-scriptiin:
header('Content-type: application/xhtml+xml');
niin saattaisi validoitua.
Ehkä.
XYZ kirjoitti:
En osaa vastata varsinaiseen kysymykseen. Kuitenkin jos laitat tuohon php-scriptiin:
header('Content-type: application/xhtml+xml');niin saattaisi validoitua.
Ehkä.
Joka tapauksessa siitä seuraisi, että sivu ei toimi IE:llä. Mutta sehän on pieni hinta hienosta validoinnista. :-)
Olennaisempaa olisi laittaa
header('Content-type: text/html;charset=iso-8859-1');
koska nyt Validome.org valittaa merkistökoodauksesta. En nyt jaksa kaivella, mitä XHTML 1.1 tarkkaan ottaen sanoo tilanteesta, mutta koodaus on hyvä aina ilmoittaa HTTP-otsakkeessa, jos mahdollista. Toisaalta Validome.orgille voi kyllä käsin kertoa koodauksen (sen valikosta).
Mutta ei se muuttaisi sitä, että Validome.org on väärässä. Sivu ilmoittaa dokumenttityypin määrittelyksi http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd ja siellä on mm.
<!ENTITY % lang.attrib "xml:lang %LanguageCode.datatype; #IMPLIED lang %LanguageCode.datatype; #IMPLIED" >
eli kyllä lang-määrite on sallittu, vaikka Validome.org muuta väittää. Sen sijaan se on periaatteessa oikeassa siinä, että oletustyylikieli pitäisi ilmoittaa. Se kuitenkaan ei ole validisuuskysymys XML-validisuuden mielessä, joten Validome.org ei varsinaisesti yritäkään olla validaattori sanan täsmällisesti määritellyssä merkityksessä vaan jonkinlainen tarkistin, "lint". Ja käytännössä tietysti oletustyylikielen ilmoittaminen on täysin merkityksetöntä, koska muita kieliä kuin CSS ei käytetä.
Näköjään uusi asia mulle. Minkä rivien väliin tuo header tulee laittaa? Ja pitääkö käyttää PHP:tä kuten sivulla http://alphanemoon.com/2009/artikel/adventures.
Jaska kirjoitti:
Minkä rivien väliin tuo header tulee laittaa? Ja pitääkö käyttää PHP:tä kuten sivulla http://alphanemoon.com/2009/artikel/adventures.
xhtml ?
Aivan sivun alkuun, PHP-tagien sisälle.
<?php header('Content-type: text/html;charset=iso-8859-1'); ?>
XML:n oletusenkoodaus on UTF-8, ja koska käytät ISO-8859-1:tä, niin sinun tulee määrittää merkistö dokumentillesi. Siitä Validome valittaa. Validome myös antoi sinulle ohjeet sen korjaamiseksi. Lisäät seuraavan XML-deklaraation dokumenttisi ensimmäiselle riville, eikä sitä ennen saa olla edes välilyöntiä:
<?xml version="1.0" encoding="ISO-8859-1"?>
Ainakaan minulle Validome ei valittanut lainkaan lang'sta tai mistään muustakaan attribuutista, joten meni tuo Yucan tarina vähän ohi.
XML-prologissa on sellainen ongelma, että vanhat IE:t menevät siitä riemusta Quirks modeen.
Metabolix kirjoitti:
XML-prologissa on sellainen ongelma, että IE menee siitä riemusta Quirks modeen.
Ei pitäisi mennä. Wikipedian mukaan ongelma koskee vain kutosversiota. Jätän ilmaisematta mielipiteeni siitä, että IE6:n mainitsemisesta sietäisi joutua saunan taakse.
-tossu- kirjoitti:
Aivan sivun alkuun, PHP-tagien sisälle.
Muutin alun seuraavaksi:
<?xml version="1.0" encoding="ISO-8859-1"?> <?php header('Content-type: text/html;charset=iso-8859-1'); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fi" lang="fi"> <head> <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=iso-8859-1" />
Validome ilmoitti seuraavaa:
lainaus:
The Validator could not detect a valid Character Encoding
Kahden ensimmäisen rivin vaihtaminen keskenään ei poistanut inmoitusta.
The Alchemist kirjoitti:
Ainakaan minulle Validome ei valittanut lainkaan lang'sta tai mistään muustakaan attribuutista, joten meni tuo Yucan tarina vähän ohi.
Jaska on vaihtanut doctype-ilmoituksen XHTML 1.0:aan viittaavaksi (vaikka sivulla väitetään sivun olevan validia XHTML 1.1:tä...). Aiemmin oli XHTML 1.1, ja se siis sai Validomen antamaan virheilmoituksen. Joka siis oli väärä. Ehkä tämä jo riittää vastaamaan alkuperäiseen kysymykseen. (W3C:n validaattorissa on luvattoman paljon virheitä, mutta ei sentään tällaisia.)
Yucca kirjoitti:
(W3C:n validaattorissa on luvattoman paljon virheitä, mutta ei sentään tällaisia.)
Entä onko vähempivirheistä validaattoria yleisesti saatavilla vai kannattaako käyttää muuta kun W3C:n validaattoria?
Perussivustojen kanssa ei oikeastaan tarvitse validatoreita. XML:n (XHTML:n) ja HTML:n säännöstöt on helppo oppia, ja sivuja vääntämällä kehittyy rutiini validin merkkauksen kirjoittamiseen. Validatori on lähinnä työkalu, jolla voi tarkistaa monimutkaiset ja suurikokoiset dokumentit virheiden varalta.
Oma kehu haisee, mutta minäkin saan pääsääntöisesti kaikki tekemäni dokumentit ensimmäisellä yrittämällä validatorista läpi. PHP:llä merkkausta generoidessani käytän yleensä content-typenä application/xhtml+xml:ää, jolloin esim. puuttuvat sulkutagit ja ylimääräisen roskan huomaa heti (koska selain ei suostu renderöimään sivua).
Minulle paljon kriittisemmät asiat ovat semantiikka ja pragmaattisuus. Näiden määräämien sääntöjen rikkomista ei mikään validoija tule havaitsemaan.
Mitä yritän nyt sanoa on se, että mitä enemmän käyttää aikaa validatoreiden kanssa räknäämiseen, sitä vähemmän aikaa jää korjata haitallisempia virheitä ja kehittää sivustoaan (ja itseään). On tärkeää saada dokumentti ajettua validatorista läpi, mutta jos XHTML:n perusteet ovat hallussa, niin sivujaan ei tarvitse tarkastaa jokaisen pienen muutoksen jälkeen ennen kuin ne ovat valmiit.
Minäkin haluaisin oppia tekemään kunnolla WWW-sivuja, mutta ainakin toistaiseksi olen lähinnä opetellut palasia sieltä täältä ja yhdistellyt niitä. Mitä kannattaisi lukea, kun haluaisin kehittyä WWW-ohjelmoijana? Olen lukenut kirjan "Head First HTML with CSS & XHTML" ja aloin opiskelemaan kirjaa "CSS The Definitive Guide 3rd edition".
Löysin tuollaisen kirjan http://www.docendo.fi/tuote/951-846-243-7 , mutta se näyttäisi olevan aika vanha. Vai onko suunnittelukirjoista hyötyä, jos opettelen tekemään asioita kunnolla Drupalilla? Ainakin XHTML ja CSS 2.1 taitaa vanhentua sikäli, että HTML 5:llä ja CSS 3:lla tehdään kai nykyään uusia sivuja.
Jos haluat kehittyä www ohjelmoijana niin unohda koko xhtml pelleily. On täysin mahdotonta tehdä käyttäjäystvällisiä sivuja jotka ovat xhtml valideja. Muutamia esimerkkejä:
- Noscript redirectit ei oo validia xhtml. Käyttäjä joutuu manuaalisesti siirtymään sivujen noscript versiolle.
- Formeissa aivan suunnattomän ärsyttävät spellcheck ja autocomplete attributit eivät ole validia xhtml.
- Linkeissä, formeissa ym target attribuutti ei ole validia xhtml. Esim jos haluat tehdä cross domain POST requestin taustalla niin eipä onnistu xhtmlllä.
Bonuksena on se ettei ketään kiinnosta onko sivut xhtml validit vai ei. Voisin vaikka väittää että yksikään maailman top 100 sivusta ei ole xhtml validi.
OK. Entäs jos minun pitäisi luoda tyhjästä sivu vaikkapa kaverilleni, niin kannattaako nykyään valita XHTML ja CSS 2.1, joihin on olemassa standardit, jotka eivät enää muutu vai kannattaako opetella tekemään sivuja HTML 5 + CSS 3 -kombinaatiolla? Itse kun en tunne vielä noita uusimpia tekniikoita enkä tiedä, kuinka hyvin selaimet tukevat niitä.
javascriptillä voi lisätä ei tuettuja attribuutteja ja huijata validatoreita jotka eivät ota huomioon sitä miten js vaikuttaa sivuun. Noscript redirectiä ei voi tehdä muutenkun olemalla xhtml invalidi.
Se millä teet sivut riippuu aika paljon kohdeyleisöstä ja sivun toiminnoista. Jos sivuilla on käytännössä vaan tekstiä niin ne on helppo tehdä toimivaks kaikilla selaimilla. Jos sivujen idea taas on käydä käyttäjän kovalevy läpi mp3sista ja editoida niiden id3 tageja selaimessa niin ei siinä paljoo voida rupee mitään ie6 tukemaankaan, tai edes firefoxin uusinta stablea.
Asiassa ei minusta ole mitään joko-tai-vastakkainasettelua.
CSS 3 on 2.1:n laajennus, ei korvaava teknologia. Jos tyylitiedostot validoituvat CSS 2.1:nä, ne validoituvat myös CSS 3:na. Se on ymmärtääkseni vielä niin keskeneräinen, että siitä tuetaan yleisesti vain silmänkarkkia lisääviä ominaisuuksia kuten varjot ja reunojen pyöristäminen. Tällaisen tuen puuttuminen selaimesta johtaa vain vähän askeettisempaan ulkoasuun, ei käytettävyyden rikkoutumiseen, eikä merkkauksen (HTML:n) suunnittelussa tarvitse juurikaan huomioida sitä, että mitäs jos käyttäjän selain ei osaakaan CSS-varjoja.
Samoin ymmärtääkseni XHTML-dokumentin voi helposti validoida HTML 5:nä about vaihtamalla doctypen. Valintaongelma tulee eteen vasta siinä vaiheessa, kun sivuille tarvitsee lisätä multimediaa tai muuta "kehittynyttä sisältöä". Tällöin ei enää ole kyse (X)HTML:n version valinnasta vaan siitä, käyttääkö Flashia, Java-sovelmia tai muita kolmannen osapuolen laajennuksia, vai valitseeko uuden ja keskeneräisen mutta tulevaisuudessa universaalin standardin.
Sen verran ehkä pitää luistaa määritelmistäni, että HTML 5:ssä on kyllä aiempaa enemmän semantiikkaa elementtitasolla. Vanhemmista versioista löytyvät vain geneeriset kääreet div ja span, mutta HTML5:ssä on navia ja footeria jne. Perustasolla tällaisten muutosten tekemisen jättäminen tulevaisuuteen on kuitenkin vielä aika pieni homma.
esajeejee kirjoitti:
Jos haluat kehittyä www ohjelmoijana niin unohda koko xhtml pelleily. On täysin mahdotonta tehdä käyttäjäystvällisiä sivuja jotka ovat xhtml valideja. Muutamia esimerkkejä:
- Noscript redirectit ei oo validia xhtml. Käyttäjä joutuu manuaalisesti siirtymään sivujen noscript versiolle.
Yksinkertaisten, ylipäänsä pienimuotoisten sivujen kanssa pitäisi hälyttää, jos tarvitaan "noscript"-sivuja. Monimutkaisemmissakin tapauksissa kyse on lähinnä resursseista.
esajeejee kirjoitti:
- Formeissa aivan suunnattomän ärsyttävät spellcheck ja autocomplete attributit eivät ole validia xhtml.
Näitä tarvitset mihin?
esajeejee kirjoitti:
- Linkeissä, formeissa ym target attribuutti ei ole validia xhtml. Esim jos haluat tehdä cross domain POST requestin taustalla niin eipä onnistu xhtmlllä.
Thank God.
esajeejee kirjoitti:
Bonuksena on se ettei ketään kiinnosta onko sivut xhtml validit vai ei. Voisin vaikka väittää että yksikään maailman top 100 sivusta ei ole xhtml validi.
Väärin, ja se on helposti todistettavissa: esimerkiksi minua kiinnostaa, onko dokumentti XHTML-määritelmän mukainen vai ei (tosin, lähinnä niissä tapauksissa joissa se ilmoittaa olevansa). Ja koska en tee sivuja työkseni, en itse julkaisisi "virheellisiä" XHTML-dokumentteja.
Aloittajalle: Miksi haluaisit käyttää latin1-merkistöä sivuillasi? Ota kysymyksessä huomioon ajallinen konteksti: emme elä enää 90-lukua.
eq kirjoitti:
Aloittajalle: Miksi haluaisit käyttää latin1-merkistöä sivuillasi? Ota kysymyksessä huomioon ajallinen konteksti: emme elä enää 90-lukua.
Sain virheilmoituksen validaattorista kun sivun alku oli
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <?php header('Content-type: text/html;charset=utf-8'); ?> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fi" lang="fi"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
lainaus:
Sorry, I am unable to validate this document because on line 7 it contained one or more bytes that I cannot interpret as utf-8 (in other words, the bytes found are not valid values in the specified Character Encoding)
Jaska kirjoitti:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <?php header('Content-type: text/html;charset=utf-8'); ?>
Näyttäis toimivan sun palvelinkonfiguraatiolla, mut suosittelen silti vaihtamaan nämä rivit toisinpäin, että toimii jatkossakin, jos joku sattuu muuttamaan PHP:n konffia.
HTTP-headerit tulee lähettää aina ennen kaikkea sisältöä, siis myös doctypeä.
Jaska kirjoitti:
Sorry, I am unable to validate this document because on line 7 it contained one or more bytes that I cannot interpret as utf-8 (in other words, the bytes found are not valid values in the specified Character Encoding)
Joo, data itsessään pitää tosiaan olla kans UTF-8:a, eikä se muutu sellaiseksi headeria vaihtamalla.
*nix-komentorivillä voit vaihtaa sen iconv-ohjelmalla esimerkiksi näin: for a in *.php; do iconv -f latin1 -t utf8 -o $a $a; done
Ota varmuudeksi kopio ensin.
Saat varmaan sopivampia vinkkejä kun kerrot, mitä työkaluja käytät.
Mainittakoon vielä, että kun et ilmeisesti latin1:n ulkopuolisia merkkejä sivuilla tarvitse, niin en nää mitään käytännön hyötyä tästä operaatiosta, mut oon myös sitä mieltä, että missään uudessa tuotannossa ei kannata käyttää mitään muuta kuin UTF-8:a. Noin vinkiksi seuraavaan sivupäivitykseen.
Mä tein sivut 000webhostiin ja syötin koodit sen omaan editoriin. En ole varma, voinko ylipäätään ajaa *nix-skriptejä 000webhostissa.
Jaska kirjoitti:
Mä tein sivut 000webhostiin ja syötin koodit sen omaan editoriin. En ole varma, voinko ylipäätään ajaa *nix-skriptejä 000webhostissa.
Vaihtoehtoisesti tallenna kaikki tiedostosi UTF-8-muodossa; se, miten näin tehdään, riippuu tekstieditoristasi.
Tuo webhostingin editori antaa tallentaa tiedostot yhdestä painikkeesta. Täytynee kysyä palveluntarjoajalta, miten voi vaihtaa tallennusformaattia.
He eivät näköjään tarjoa muuta tukea kuin vakiovastauksen kysymykseeni ja kehoittavat rekisteröimään palvelun. Enpä jaksa maksaa siitä, että saan tallennettua muutaman tiedoston toisessa formaatissa.
Sinulla on mahdollisuus käyttää FTP:tä. Sillä voit siirtää tiedostot palvelimellesi juuri siinä muodossa kuin itse haluat.
Päädyin toisenlaiseen ratkaisuun. Siirsin sivuni Freehostingcloudiin, ja nyt UTF-8 toimii hyvin.
Aihe on jo aika vanha, joten et voi enää vastata siihen.