Bonjour,

J'ai un petit problème avec ma déclaration de DTD. Je vous explique,


j'ai un fichier spaghetti.dtd

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
<!ELEMENT liste (liste_a_puce)+>
<!ELEMENT liste_a_puce ANY> 
<!ATTLIST liste type (alpha|num) "num">
Un fichier spaghetti.css qui me permet de faire un formatage conditionnel en fonction de l'assignation d'un certain attribut type :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
liste_a_puce{    
    display:block;
    margin-left:1em;
    counter-increment:listNum
}
 
liste{
    display:block;
    counter-reset:listNum;
}
 
liste[type=num] liste_a_puce:before{content: counter(listNum) ".";}
liste[type=alpha] liste_a_puce:before{content: counter(listNum,upper-latin) ".";}
Lorsque j'affiche dans mon navigateur le résultat de spaghetti.xml contenant :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet href="spaghetti.css" type="text/css"?>
<!DOCTYPE liste [
          <!ELEMENT liste (liste_a_puce)+>
          <!ELEMENT liste_a_puce ANY> 
          <!ATTLIST liste type (alpha|num) "num"> 
          ]>
 
<!-- SYSTEM "spaghetti.dtd"> -->
 
<liste>
  <liste_a_puce> un element </liste_a_puce>          
  <liste_a_puce> deux element </liste_a_puce>
</liste>
....... j'ai bien :
1.un element
2.deux element


A présent si je modifie mon fichier spaghetti.xml tel que :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet href="spaghetti.css" type="text/css"?>
<!DOCTYPE liste SYSTEM "spaghetti.dtd"> 
 
<liste>
  <liste_a_puce> un element </liste_a_puce>          
  <liste_a_puce> deux element </liste_a_puce>
</liste>
j'obtient :
un element
deux element

En fait j'ai l'impression qu'utiliser une DTD externe ne me permet pas d'avoir un attribut par défaut, ce qui je pense n'est pas normal. Je ne comprend pas trop pourquoi. Alors si quelqu'un a un peu de temps à me consacrer pour m'expliquer, je l'en remercie d'avance.