STIC Discussion:STIC I - exercice 2 (Nestor-Pixel)

De EduTech Wiki
Aller à la navigation Aller à la recherche

Combinaison de DTD

Est-il possible de faire référence à plus d'un DTD ?

  • C'est à dire.. Exemple pour former un fichier XHTML "hacké" :
    • Lancer une référence au DTD XHTML classique de w3c.org
    • Ajouter une référence à une DTD qui "rajoute" des balises...

En fouillant bien, genre en allant voir le contenu de http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd , on voit qu'on pourrait éventuellement le faire en créant une DTD qui va chercher le contenu d'une autre DTD. MAIS, est-ce possible à partir d'un document XML ?

Réponse

Question pas si facile.

Un document XML est toujours validé par rapport à une seule DTD, donc il faut travailler du côté des DTD.

DTDs à partir de plusieurs composantes

On peut construire des DTD qui incluent d'autres DTDs. C'est même la règle quand on fait une grande DTD. Pour cela il faut consulter la section sur les entités dans mes transparents et voir un exemple. Exemple: http://tecfa.unige.ch/guides/xml/examples/dtd-examples/ePBL11/

Ceci déclare une DTD externe

<!ENTITY % foreign-dtd SYSTEM "ibtwsh6_ePBL.dtd">

Ceci inclut le fichier

%foreign-dtd;

Ceci utilise une composante de cette DTD

<!ELEMENT introduction %struct.model;>

XHTML modulaire et extensible

Solution 1:

  • Travailler avec un mini XHTML de vôtre choix (comme ci-dessus)

Solution 2:

  • Travailler avec XHTML modulaire et inclure les modules qui vous intéressent. Je n'ai pas encore essayé et ne sais pas vraiment si c'est difficle ou facile
http://www.w3.org/TR/xhtml-modularization/

XHTML 1.1 est définit justement avec ces modules:

http://www.w3.org/TR/xhtml11/xhtml11_dtd.html

Travailler avec des namespaces

En pratique quand les gens mélangent des langages ils utilisent parfois des namespaces différents. Cela produit des documents bien formés, mais pas valides.

Sauf si qqn. écrit une DTD pour cela. W3C l'a fait pour qqs. "profiles", genere le XHTML + MathML + SVG Profile:

http://www.w3.org/TR/2002/WD-XHTMLplusMathMLplusSVG-20020430/

Résumé

  • N'essayez pas d'étendre XHTML, à mon avis c'est trop difficile
  • Faites plutôt votre DTD, mais "piquez" des modules XHTML ou encore un mini XHTML comme Itsy Bitsy Teeny Weeny Simple Hypertext DTD (ibtwsh6).
  • Intégrer un sous-ensemble de balises XHTML dans vos balises est plus simple que l'inverse.

Si vous utilisez IBTWSH6, je vous conseille vivement d'utiliser %struct.model;

Pour comprendre comment fonctionne IBTWSH6 inclu dans une DTD faite maison, il faut essayer:


Merci de votre réponse très complète, je vais essayer de trouver un peu de temps entre les travaux de groupe pour explorer tout ça (notamment la partie qui genere le XHTML + MathML + SVG Profile: je cherchais justement quelque chose du genre) !! ^_^ --Davidc 4 octobre 2007 à 13:31 (MEST)

Nouvelle question : Faire une méta-DTD :P

Je voudrais fabriquer une DTD qui crée un nombre x de balises. Je voudrais qu'à l'intérieur de certaines (voire toutes) il soit possibles d'inclure les balises XHTML, comment je fais ça ? Exemple : Mon arbre XML :

<cours>
 <description></description>
 <contenu></contenu>
 <commentaires></commentaires>
<cours>

Je voudrais être apte à mettre n'importe quel contenu XHTML à l'intérieur des balises contenu et commentaires. Histoire que ça ressemble un peu à ça :

<cours>
 <description>Cours oenologie</description>

<contenu><h1>Comment cracher le vin</contenu> <commentaires><div class="comment_david"><ul><li>En effet, il n'est pas ...afin de..</commentaires>

<cours>