Toto je validní -//WellDone//DTD XHTML-with iframe 1.1//EN!

MyEgo.cz

home foto blogy mywindows.cz kontakt

Toto je validní -//WellDone//DTD XHTML-with iframe 1.1//EN!

Začal jsem používat iAudit a musel tedy do kódu WELL.DONE vložit v XHTML 1.1 zakázanou značku <iframe>. Naštěstí, díky modularitě XHTML 1.1, je snadno řešitelné aby byla stránka validní i s touto značkou, stačí použít vlastní DOCTYPE.

Když se teď pokusíte zvalidovat tento web, zjistíte, že je to validní -//WellDone//DTD XHTML-with iframe 1.1//EN.

Třeba takto:

<!DOCTYPE html PUBLIC 
 '-//WellDone//DTD XHTML-with iframe 1.1//EN' 
 'http://hulan.cz/styles/doctype/welldone.dtd'>

A definice DTD welldone.dtd zahrnující jak XHTML 1.1 + <iframe> je zde:

<?xml version="1.0" encoding="utf-8"?>
<!ENTITY % xhtml-datatypes.module "INCLUDE"> 
<![%xhtml-datatypes.module;[ 
<!ENTITY % xhtml-datatypes.mod 
 PUBLIC "-//W3C//ENTITIES XHTML Datatypes 1.0//EN"
 "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-datatypes-1.mod"> 
 %xhtml-datatypes.mod;]]>
<!ENTITY % xhtml-qname.module "INCLUDE"> 
<![%xhtml-qname.module;[ 
<!ENTITY % xhtml-qname.mod 
 PUBLIC "-//W3C//ENTITIES XHTML Qualified Names 1.0//EN"
 "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-qname-1.mod"> 
 %xhtml-qname.mod;]]>
<!ENTITY % iframe.qname "%XHTML.pfx;iframe">
<!ENTITY % Misc.extra "| %iframe.qname;">
<!ENTITY % xhtml11.dtd PUBLIC "-//W3C//DTD XHTML 1.1//EN"
 "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
 %xhtml11.dtd;
<!ENTITY % xhtml-iframe.module "INCLUDE">
<![%xhtml-iframe.module;[ 
<!ENTITY % xhtml-iframe.mod 
 PUBLIC "-//W3C//ELEMENTS XHTML Inline Frame Element 1.0//EN"
 "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-iframe-1.mod">
 %xhtml-iframe.mod;]]>

Problém ovšem nastane, pokud Váš web servírujete s MIME typem application/xhtml+xml, pokud používáte vlastní DTD, kromě pár základních entit jsou všechny ostatní nedefinovány a parserování stránky se zastaví.

Řešením je napsat si plugin, který ve všech článcích a komentářích převede pojmenované entity na jejich numerické ekvivalenty, a udělá to při uložení článku / komentáře, aby nezatěžoval server.

Takže jsem si napsal plugin NP_Entities.php a vše funguje dle mých představ a validně:

span style="color: #808080; font-style: italic;">/**
  * BLOG:CMS: PHP/MySQL Personal Content Management System 
  * http://blogcms.com/
  * http://forum.blogcms.com/
  *
  * 2005, (c) Radek HULAN 
  * http://hulan.cz/
  *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public License
  * as published by the Free Software Foundation; either version 2
  * of the License, or (at your option) any later version.
**/'Entities''Radek HULAN''https://myego.cz/''1.0''This plugin will convert named 
    entities in articles and comments into their numerical values.''SqlTablePrefix''PreItem',
      'PreAddItem',
      'PreUpdateItem',
      'PreComment',
      'PreAddComment',
      'PreUpdateComment''itemreal','Parse Items real-time?','yesno','yes');
      $this->createOption('itemsave','Parse Items when saving?','yesno','yes');
      $this->createOption('commentreal','Parse Comments real-time?','yesno','yes');
      $this->createOption('commentsave','Parse Commetns when saving?','yesno','yes''itemreal''itemsave''commentreal''commentsave''yes''title'=>&$data['item']->title,'body'=>&$data['item']->body,'more'=>&$data['item''yes''title'=>&$data['title'],'body'=>&$data['body'],'more'=>&$data['more''yes') {
			$data['comment']['body''comment']['body''yes') {
			$data['comment']['body''comment']['body''yes') {
			$data['body''body''title','body','more'

Komentáře

  1. 1 noname 17.02.05, 10:51:54
    FB

    Jojo, takhle mě před pár dny štvalo, že xhtml nemá možnost otevřít do jiného okna - pro můj RSS přehled na http://www.superbox.cz , takže už tam používám extra definici s podporou Target. Škoda jen, že to nejde napsat přímo do html dokumentu, když jsem to zjišťoval, tak prohlížeše typu Firefox pak ukazují na začátku stránky znak "<" a nějak s tím nešlo nic dělat.

  2. 2 Fred 17.02.05, 12:51:36
    FB

    To jsem možná obešel o dost jednodušeji http://xy.wz.cz/test-textlink/index2.php...

  3. 3 Radek Hulán 17.02.05, 13:11:42

    [2] ale fuj, různá řešení pro různé browsery, to opravdu ne, a ještě JavaScript.. To je potom mnohem lépe použít XHTML 1.0 Transitional ;-)

  4. 4 Josef Petrák 17.02.05, 13:13:15
    FB

    Výborně, tahle úprava XHTML vypadá vážně dobře. Je to mnohem lepší příklad využití modularity, než třeba RDDL (http://www.rddl.org/ ). Díky za inspiraci.

  5. 5 Ján "johno" Suchal 17.02.05, 13:59:03
    FB

    [1] Čo ti bráni použiť XHTML 1.0 Transitional? Tento Strict/1.1 fetišizmus sa fakt nejako strašne rozmohol.

    To si môžeš do rovno do XHTML 1.1 narvať atribút bgcolor, tag font a sme presne tam odkiaľ sme sa tak dlho vyhrabávali.

  6. 6 lukas ma 17.02.05, 14:35:44
    FB

    [1] Proc nepozuvas neco jako neco nebo jeste lepe neco a pak si pres nejaky javascriptovy eventattacher vsem a.external priradis fuknci na onclick. Ma to velke plus: nova okna se oteviraji pouze pokud je zapnuty javascript. Pokud je nekde js vypnuty, tezko bude chtit ten uzivatel, aby se mu odkazy oteviraly do noveho okna. A ani s popup blockery neni problem.

  7. 7 Radek Hulán 17.02.05, 14:41:30

    [5] to mohu, ale potom bych se nic nového nenaučil o XHTML 1.1 modulech a DTD..

  8. 8 Ján "johno" Suchal 17.02.05, 15:32:32
    FB

    [7] Nereagoval som na teba.

  9. 9 C.C. 13.11.06, 17:52:31
    FB

    Diskuze se zasekla takze se spozdenim nabizim neidealni reseni javascriptem, ale zapnuty ho ma temer kazdy... vice na http://www.matematika.webz.cz/forum/iframe/...