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 ;)

Code : Tout sélectionner

<!ENTITY hello "Hello World!">

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... :roll:
(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
calimo a écrit :Le doctype est mal formé :( cf. http://cui.unige.ch/~robin0/xhtml.xhtml
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 :oops:
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 ?