2009-12-29 15 views
1

En XHTML 1.0, l'utilisation de l'attribut xml: space dans une balise est valide, mais en XHTML 1.1 elle n'est pas valide (en utilisant le même balisage).XHTML 1.1 et xml: attribut d'espace pour l'étiquette de script

Je ne peux pas le trouver dans les docs ... quelqu'un peut-il le confirmer? Pourquoi a-t-il été supprimé? A-t-il été remplacé par autre chose?

échantillon pour valider:

<script type="text/javascript" xml:space="preserve"> 
    // <![CDATA[ 
    alert('foo'); 
    alert('bar'); 
    // ]]> 
</script> 

Répondre

2

En XHTML 1.1 xml:space a une valeur fixe de preserve sur tous les éléments, y compris <script>, selon http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-script-1.mod:

<!ATTLIST %script.qname; 
    xml:space (preserve)    #FIXED 'preserve' 

en tant que tel, je ne pense pas que ce devrait être une erreur de déclarer xml:space="preserve" sur l'élément <script>, et je ne sais pas pourquoi le validateur est en train de trébucher dessus.

Cependant, du même coup, il n'y a rien à gagner en incluant l'attribut. Je ne suis pas sûr de ce que vous espérez y parvenir ... le «mode de traitement des espaces blancs par défaut» de tous les navigateurs Web et des outils XML généraux préservera les espaces <script> dans tous les cas.

+0

Grande réponse, exactement ce que j'ai cherché (aurait voté si je pouvais)! J'ai découvert ce problème en mettant à jour une page de XHTML 1.0 à 1.1 et j'ai obtenu cette erreur de validation. Je peux maintenant supprimer xml: space de mon balisage puisqu'il est FIXED à conserver dans 1.1 (aurait été un problème je suppose que si j'ai autre chose que préserver quelque part mais ce n'est pas le cas). – AlexV