<?xml version="1.0" encoding="UTF-8"?>

<!-- L'historique de cette DTD présentant ses diverses versions est dans le fichier historiqueChapitre.dtd.txt-->

<!-- ================ Declarations d'entites ============================= -->
<!--<!ENTITY % HTMLspecial PUBLIC "-//W3C//ENTITIES Special for XHTML//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml-special.ent">-->
<!ENTITY % HTMLspecial SYSTEM "xhtml-special.ent">
%HTMLspecial;
<!ENTITY % URI "CDATA">
<!ENTITY % enligne "#PCDATA | definition | valeur | index | autrelangue | code | reference | acronyme | abreviation| image | logiciel | puissance">
<!ENTITY % bloc "image | texte | liste | exemple | exemplejavascript | exemple_css | tableau | imagereactive">
<!-- =================== Declarations d'elements ============================== -->
<!ELEMENT chapitre (cours, entete, corpus)>
	<!ATTLIST chapitre  typecourssiteweb (xml|html|dhtml) #REQUIRED>
<!ELEMENT cours (#PCDATA)>
<!-- Nom du fichier XML sans l'extension -->
	<!ATTLIST cours nomfichier CDATA #REQUIRED >
<!--    Declarations des elements de l'entete     -->
	<!ELEMENT entete (titre, auteur, resume, motsclefs)>
		<!ELEMENT titre (#PCDATA)>
		<!ELEMENT auteur (#PCDATA)>
			<!ATTLIST auteur
				email CDATA #IMPLIED
			>
			
	<!ELEMENT resume (#PCDATA)>
	<!ELEMENT motsclefs (#PCDATA)>
	
<!--  Declarations des elements du corps du cours   -->
<!ELEMENT corpus (partie*)>
<!ELEMENT partie (section | exercice | paragraphe)*>
<!ELEMENT section (paragraphe | liste | exercice)*>
<!ELEMENT paragraphe (%bloc;)*>
<!ATTLIST paragraphe
	titre CDATA #IMPLIED
	auteur CDATA ""
	date CDATA ""
	href %URI; ""
	ancre ID #IMPLIED
>
<!ELEMENT liste (item)*>

<!ELEMENT item (%bloc;)*>
<!ATTLIST liste
	type (envrac | ordonnee | sanspuce) "envrac"
>
<!ELEMENT tableau (groupecolonne*,ligne*, legende?)>
<!ATTLIST tableau
	bordure CDATA "1"
>
<!ELEMENT groupecolonne EMPTY>
	<!ATTLIST groupecolonne
		nombre CDATA "1"
		largeur CDATA #IMPLIED
	>
<!ELEMENT ligne (colonne*)>
<!ELEMENT colonne (%bloc;)*>
<!ATTLIST colonne
	type (header | normal) "normal"
	id ID #IMPLIED
	abbr CDATA #IMPLIED
	headers IDREFS #IMPLIED
>
<!ATTLIST ligne
	type (header | normal) "normal"
>
<!ELEMENT legende (%enligne;)*>

<!ELEMENT image (legende?)>
<!ATTLIST image
	src %URI; #REQUIRED
	hauteur CDATA ""
	largeur CDATA ""
	alt CDATA #REQUIRED
	classe (normal | illustration) "normal"
>
<!ELEMENT imagereactive (zone+, legende?)>
<!ATTLIST imagereactive
	src %URI; #REQUIRED
	hauteur CDATA ""
	largeur CDATA ""
	alt CDATA #REQUIRED
	nom CDATA #REQUIRED
>
<!ELEMENT zone EMPTY>
<!ATTLIST zone
	forme (rect | circle | poly | default) "rect"
	coords CDATA #IMPLIED
	href %URI; #IMPLIED
	alt CDATA #REQUIRED
>
<!ELEMENT texte (%enligne;)*>
<!ATTLIST section
	titre CDATA #REQUIRED
	auteur CDATA ""
	date CDATA ""
	href %URI; ""
	ancre ID #REQUIRED
>
<!ELEMENT exercice (remarque?,enonce?, correction*)>
<!ELEMENT remarque (#PCDATA)>
<!ELEMENT enonce EMPTY>
<!ATTLIST enonce
	href %URI; ""
>
<!ELEMENT correction EMPTY>
<!ATTLIST correction
	href %URI; #REQUIRED
	description CDATA #IMPLIED
>
<!ATTLIST exercice
	titre CDATA #REQUIRED
	auteur CDATA ""
	date CDATA ""
	ancre ID #REQUIRED
>
<!ATTLIST partie
	titre CDATA #REQUIRED
	auteur CDATA ""
	date CDATA ""
	href %URI; ""
	ancre ID #REQUIRED
>

<!-- Definitions d'elements en-ligne -->
<!ELEMENT acronyme (#PCDATA)>
	<!ATTLIST acronyme
		titre CDATA #REQUIRED
		lang CDATA #IMPLIED
	>
<!ELEMENT abreviation (#PCDATA|code)*>
	<!ATTLIST abreviation
		titre CDATA #REQUIRED
		lang CDATA #IMPLIED
	>
<!ELEMENT index (#PCDATA)>
<!ATTLIST index
	type (visible | hidden) "hidden"
	id ID #REQUIRED
>
<!ELEMENT definition (#PCDATA)>
<!ATTLIST definition
	clef CDATA #REQUIRED
	lang CDATA #IMPLIED
>

<!ELEMENT autrelangue (%enligne;)*>
<!ATTLIST autrelangue
	type CDATA "en"
>
<!ELEMENT valeur ANY>
<!ATTLIST valeur
 	lang CDATA #IMPLIED
 >
<!ELEMENT code (#PCDATA)>
<!ATTLIST code
	type (langage | code | typefichier) "code"
	option (yes | no) "no"
>
<!ELEMENT logiciel (#PCDATA)* >
<!ATTLIST logiciel
 	lang CDATA #IMPLIED
 >

<!ELEMENT exemple (prologue | instruction_traitement | element | commentaire | typedocument | cdat | declaration_element | declaration_entite | typedocument_interne)*>
<!ATTLIST exemple
	type (XML | HTML | illustration) #REQUIRED
	ancre ID #IMPLIED
>

<!ELEMENT prologue EMPTY>
<!ATTLIST prologue
	encodage CDATA "ISO-8859-1"
	version CDATA "1.0"
	standalone (yes | no) #IMPLIED 
>

<!ELEMENT instruction_traitement EMPTY >
<!ATTLIST instruction_traitement
	nom CDATA #REQUIRED
	type CDATA #REQUIRED
	href %URI; #REQUIRED
>

<!ELEMENT element (#PCDATA | attribut |commentaire | element | cdat | contenu)* >
<!ATTLIST element
 	nom CDATA #REQUIRED
 	enligne (oui | non) "non"
 	indent (oui | non) "non"
	niveau CDATA "0"
	vide (oui | non) "non"
 >
 
 <!ELEMENT contenu (#PCDATA)>
 <!-- Cet élément est réservé aux éléments non en ligne pour lequel un contenu doit être inséré à la ligne. Ppar exemple :<style>
     (...)
 </style>
 -->
 <!ATTLIST contenu niveau CDATA "0" >
 
 <!ELEMENT attribut (#PCDATA)>
 <!ATTLIST attribut
 	nom CDATA #REQUIRED
 	pseudo (non | oui) "non"
 >
 
 <!ELEMENT commentaire (#PCDATA)>
 	<!ATTLIST commentaire niveau CDATA "0">
  <!ELEMENT cdat (#PCDATA)>
  
  <!ELEMENT typedocument EMPTY>
  <!ATTLIST typedocument
  	nomracine CDATA #REQUIRED
  	type (SYSTEM|PUBLIC|...) #REQUIRED
  	identifiant CDATA #IMPLIED
  	href %URI; #REQUIRED
 >
 
 <!ELEMENT typedocument_interne (declaration_element | declaration_entite)*>
   <!ATTLIST typedocument_interne
  	nomracine CDATA #REQUIRED
  >
 
 <!ELEMENT declaration_element (declaration_attribut*)>
 <!ATTLIST declaration_element
 	nom CDATA #REQUIRED
 	type CDATA #REQUIRED
 >
 
  <!ELEMENT declaration_attribut EMPTY>
 <!ATTLIST declaration_attribut
 	nomattr CDATA #REQUIRED
 	valeur CDATA #REQUIRED
 	type (IMPLIED | REQUIRED | FIXED | chaine) #REQUIRED
 	defaut CDATA #IMPLIED
 >
 
 <!ELEMENT declaration_entite EMPTY>
  <!ATTLIST declaration_entite
 	nom CDATA #REQUIRED
 	valeur CDATA #REQUIRED
 	type (paramétrique | caractères) "caractères"
 	syspub (system | public | autre) "autre"
 	identifiant CDATA #IMPLIED
 >

<!ELEMENT exemple_css (csselt|commentaireCSS)* >
<!ELEMENT commentaireCSS (#PCDATA) >
<!ELEMENT csselt (selecteur, prop+)>
<!ELEMENT selecteur (#PCDATA)>
<!ELEMENT prop EMPTY>
<!ATTLIST prop
	nom CDATA #REQUIRED
	valeur CDATA #REQUIRED
>
	
<!ELEMENT exemplejavascript (fonction | instruction | variable | propriete | declaration | autres | finligne | sautligne | bloc | commentaire_js)*>
<!ELEMENT bloc (fonction | instruction | variable | propriete | declaration | autres | finligne | sautligne | bloc | commentaire_js)* >
<!ELEMENT fonction (variable | autres | propriete | fonction)*>
	<!ATTLIST fonction name CDATA #REQUIRED>
<!ELEMENT instruction EMPTY>
	<!ATTLIST instruction name CDATA #REQUIRED>
<!ELEMENT variable EMPTY>
	<!ATTLIST variable name CDATA #REQUIRED>
<!ELEMENT propriete EMPTY>
	<!ATTLIST propriete name CDATA #REQUIRED>
<!ELEMENT declaration EMPTY>
	<!ATTLIST declaration
		nomvariable CDATA #REQUIRED
		valeur CDATA #REQUIRED
		new (oui|non) "oui"
	>
<!ELEMENT autres (#PCDATA)>
<!ELEMENT finligne EMPTY>
<!ELEMENT sautligne EMPTY>
<!ELEMENT commentaire_js (#PCDATA|sautligne)*>

<!ELEMENT reference ANY>
<!ATTLIST reference
	href %URI; #REQUIRED
	lang CDATA #IMPLIED
>

<!ELEMENT puissance (#PCDATA) >