Page 1 sur 1
définir une DTD externe
Publié : 27 août 2005, 11:41
par arno.
Bonjour,
quand je tapes ça :
Code : Tout sélectionner
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE html
[
<!ENTITY hello "Hello World!">
]>
<html xmlns="http://www.w3.org/1999/xhtml">
<p>&hello;</p>
</html>
j'ai bien un paragraphe avec marqué Hello World! comme je veux
par contre, si je tapes ça :
Code : Tout sélectionner
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE html SYSTEM "hello.dtd" >
<html xmlns="http://www.w3.org/1999/xhtml">
<p>&hello;</p>
</html>
et dans un fichier hello.dtd je tape ça :
Code : Tout sélectionner
<?xml version="1.0" encoding="ISO-8859-1"?>
<!ENTITY hello "Hello World!">
ça marche pas. j'ai regaré dans Google, et d'après ce que j'ai compris ça devrait marcher. J'en déduis que j'ai mal compris, mais est-ce que vous savez à quel niveau je me suis trompé ?
merci d'avance
Re: définir une DTD externe
Publié : 27 août 2005, 11:55
par FF_Olivier
arno. a écrit :et dans un fichier hello.dtd je tape ça :
Code : Tout sélectionner
<?xml version="1.0" encoding="ISO-8859-1"?>
<!ENTITY hello "Hello World!">
Vire la première ligne, le DTD n'est pas du XML si tu regardes bien
Publié : 27 août 2005, 11:57
par arno.
j'avais déjà essayé de faire ça, ça ne marche pas mieux

Publié : 27 août 2005, 12:27
par calimo
J'avais fait quelques investigations à ce sujet...
http://www.geckozone.org/forum/viewtopic.php?t=23131
http://forum.alsacreations.com/topic.php?fid=3&tid=3650
Je n'avais pas réussi à faire reconnaitre les entités non plus...
(en bas du topic d'alsacréations, je propose de le supprimer, mais il me faut garder les déclarations d'entités, chose impossible).
Publié : 27 août 2005, 12:59
par arno.
Bon, j'ai pas tout compris à ces 2 sujets, mais en gros ça a pas l'air possible.
Et donc, ça veut dire qu'on peut pas localiser un fichier XUL standalone comme on fait fait pour une extension

edit : c'est bizarre, ça marche dans une extension
<!DOCTYPE window SYSTEM "chrome://extension/locale/ext.dtd">
Publié : 29 août 2005, 07:13
par Benoit
Hello, la syntaxe correcte est (par exemple pour insérer une DTD externe dans un document XHTML 1.1, je te laisse adapter) :
Code : Tout sélectionner
<?xml version="1.0" encoding="utf-8>
<DOCTYPE html PUBLIC "-//W3C/DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd>[
<!ENTITY %myDTD SYSTEM "path/to/my.dtd"> %myDTD;
]>
En résumé, tu dois déclarer ta DTD au sein du DOCTYPE de ta page en tant qu'entité externe, puis utiliser cette même entité juste après (toujours à l'intérieur de DOCTYPE).
Publié : 29 août 2005, 08:27
par calimo
Aha ! Je m'en vais de ce pas essayer ça

Publié : 29 août 2005, 10:02
par calimo
J'ai essayé ça... pas brillant
Code : Tout sélectionner
<DOCTYPE html [
<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
<!ENTITY svg "http://www.w3.org/2000/svg">
<!ENTITY %HTMLlat1 SYSTEM "http://www.w3.org/TR/html4/HTMLlat1.ent"> %HTMLlat1;
<!ENTITY %HTMLsymbol SYSTEM "http://www.w3.org/TR/html4/HTMLsymbol.ent"> %HTMLsymbol;
<!ENTITY %HTMLspecial SYSTEM "http://www.w3.org/TR/xhtml1/xhtml-special.ent"> %HTMLspecial;
]>
Le doctype est mal formé

cf.
http://cui.unige.ch/~robin0/xhtml.xhtml
Publié : 30 août 2005, 19:37
par FF_Olivier
@calimo : il faut une espace,
% HTMLlat1, mais même comme ça, ça ne marche pas.
Par contre, dans
chrome://browser/content/credits.xhtml, je viens de tomber sur ça :
Code : Tout sélectionner
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"
[
<!ENTITY % brandDTD SYSTEM "chrome://global/locale/brand.dtd">
%brandDTD;
<!ENTITY % creditsDTD SYSTEM "chrome://browser/locale/credits.dtd">
%creditsDTD;
<!ENTITY % licenseDTD SYSTEM "chrome://global/locale/license.dtd">
%licenseDTD;
]
>
<html xmlns="http://www.w3.org/1999/xhtml">
etc...
... Et là, ça marche

...
Publié : 30 août 2005, 21:35
par Benoit
C'est normal, tu n'as mis ni "SYSTEM" ni "PUBLIC". Ce n'est pas parce que tu as mis "html" qu'il va deviner qu'il s'agit d'un document HTML, c'est la ligne complète qui a une signification !
J'ai par exemple trouvé ce site où il y a la signification de tous les éléments :
http://www.blooberry.com/indexdot/html/ ... octype.htm
Publié : 30 août 2005, 21:43
par Benoit
À lire aussi pour construire ton propre identifiant, si le but est de créer ton propre langage à partir des modules XHTML au lieu d'étendre XHTML lui-même comme dans mon exemple plus haut
http://www.w3.org/TR/xhtml-modularizati ... ming_rules
Publié : 31 août 2005, 04:28
par arno.
re,
merci pour les réponses.
Je viens d'essayer, ça marche pas.
Code : Tout sélectionner
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE html
[
<!ENTITY % bonjour SYSTEM "hello.dtd"> %bonjour;
]>
<html xmlns="http://www.w3.org/1999/xhtml">
<p>&hello;</p>
</html>
j'ai bien du mal à comprendre toutes ces histoires, même en suivant les liens
C'est normal, tu n'as mis ni "SYSTEM" ni "PUBLIC". Ce n'est pas parce que tu as mis "html" qu'il va deviner qu'il s'agit d'un document HTML, c'est la ligne complète qui a une signification !
Ca je comprends pas bien

Il peut pas se débrouiller avec
xmlns="http://www.w3.org/1999/xhtml" 
(au fait
il, le validateur du w3c ou le parseur XML de Firefox ?)
et puis je comprends pas pourquoi on peut faire :
<!DOCTYPE window SYSTEM "chrome://extension/locale/ext.dtd">
et pas :
<!DOCTYPE window SYSTEM "ext.dtd">
Bobo disait dans un autre sujet :
Le chargement des fichiers externes dans la section DOCTYPE est interdite pour les fichiers du web, il me semble.
C'est à cause de ça en fait ?