Převod nevalidního HTML na validní XHTML
Už podruhé tento týden, to máme teprve úterý, jsem dostal do ruky
nevalidní HTML a měl jsem ho převést do XHTML. Problém nastal v okamžiku
kdy jsem zjistil, že HTML obsahuje takové chuťovky jakými jsou HTML tagy
<FONT>, <CENTER> a podobně.
Naštěstí je dostatečně známý program TiDy, ale bohužel obsahuje i docela
velkou škálu nastavení. Uvádím zde ty, které jsem použil já a s docela
dobrým výsledkem. Jediné s čím si TiDy neporadilo bylo <a
name="2013344"></a>. Ale s tím už se dá žít a samozřejmě
odstranit jinak.
TiDy z konzole
TiDy si můžete celkem snadno nainstalovat příkazem urpmi
tidy. Pokud patříte k nešťastníkům s MS Windows navštivte
stránku projektu TiDy, je tam něco
i pro vás.
TiDy má samozřejmě i spoustu grafických nadstaveb. Je integrována například do editoru PSPad, do výborného rozšíření HTML Validator pro Firefox a podobně.
Spuštění TiDy z konzole:
tidy -f chyby.txt -config config.txt zdroj.html > vysledek.html
V souboru chyby.txt najdete chyby, které TiDy nedokázalo ze
souboru odstranit.
Nastavení TiDy je uloženo v souboru config.txt (více k nastavení TiDy):
char-encoding: utf8 indent: true show-body-only: false output-xhtml: true add-xml-decl: true doctype: strict clean: true drop-proprietary-attributes true enclose-block-text: true enclose-text: true bare: true logical-emphasis: true alt-text: obrazek fix-uri: true wrap: 200
To samé v PHP
Podobně můžete s TiDy pracovat v PHP, potřebujete samozřejmě nainstalované rozšíření PHP TiDy.
// promenna $html obsahuje vstupni, nevalidni, HTML
$config = array(
'indent' => true,
'show-body-only' => false,
'output-xhtml' => true,
'add-xml-decl' => true,
'doctype' => "strict",
'clean' => true,
'enclose-block-text' => true,
'enclose-text' => true,
'repeated-attributes' => true,
'bare' => true,
'logical-emphasis' => true,
'alt-text' => "obrazek",
'fix-uri' => true,
'wrap' => 200,
'drop-proprietary-attributes' => true
);
$tidy = new tidy;
$tidy->parseString($html, $config, 'utf8');
$tidy->cleanRepair();
echo $tidy;
Pokud s TiDy „nečistíte“ celou HTML stránku, ale jen její část,
tak si nastavte show-body-only na true. Můžete si
tak třeba vyčistit své články, uložené v databázi, nebo třeba
komentáře.
- Související:
- TiDy – stránka projektu
- HTML TiDy
Configuration Options
- HTML TiDy – referenční příručka – český překlad nastavení TiDy
- TiDy Functions – funkce TiDy v PHP
Jirka Ch | 7. Březen 2006, 23:05 | „Články“ | Trvalý odkaz | Komentáře (8) | Štítky: html, nástroje, tidy
Komentáře:
díky za příklad! super věc, jen máte v tomto řádku chybku ‚wrap‘ ⇒ 200 chybí tam čárka…
Viz též Převod HTML na XHTML href=„http://php.vrana.cz/prevod-html-na-xhtml.php“ rel=„nofollow“>http://php.vrana.cz/prevod-html-na-xhtml.php.
[1] … a kus níže byla zase jedna navíc. Děkuji za upozornění, opraveno.
[2] Děkuji za související odkaz. Článek znám, jen jsem si na něj nevzpoměl při psaní spotu.
XHTML tyto elementy obsahuje také. Mimochodem zvládá to Tidy i opačný převod z XHTML do HTML?
[4] Požadováno bylo XHTML Strict a tam nemá tohle:
<FONT SIZE=-2>Jméno</FONT>co dělat. Nemluvím o neukončovaných párových značkách a podobně.Co se týká převodu do HTML tak stačí nastavit
output-xhtmlnafalsea pomocídoctypesi specifikovat požadovanou verzi HTML.Tomu zpětnému převodu, ale moc nerozumím. Stejně dojde jen k vyměnění deklarace HTML v hlavičce dokumentu.
[5] Jo, už mi taky pomalu dochází, že stačí " />" konvertovat na „>“, vyhodit xml deklaraci a atributy xmlns a případně xml:lang a vyměnit DOCTYPE. To by vlastně měl zvládnout jendoduše i PSPad. Ok, i tak díky :-).
No, ono to nemá co dělat ani v HTML strict. Ale chápu, já jen moc nemám rád, když se míchá použitý jazyk (HTML x XHTML) a použitá verze jazyka (trans x strict). Tady to tím zavánělo.
Riskujem, že môj nesúvisiaci komentár bude zmazaný. Ale možno mi odpustíte a odpoviete mi. Ako linuxovému začiatočníkovi, poradili by ste mi BlueFish alebo QuantaPlus? Ďakujem.
[6] Hlavně že si rozumíme. Klíčové bylo to, že to HTML co jsem převáděl do XHTML byl bastl nad bastl :-)
PSPad to zmákne už proto, že umí s TiDy spolupracovat.
[7] Komenáře mažu jen v úterý, dnes je středa ;-)
Záleží co od editoru čekáš, co v něm chceš psát a na co jsi zvyklý. Ani jeden ze zmíněných mi nevydržel na disku déle jak den.
Já používám, vlastně na všechno, jEdit href=„http://www.jedit.org/“ rel=„nofollow“>http://www.jedit.org/. Obsahuje velkou škálu pluginů, které pokývají snad všechny požadavky kladené na dobrý editor.