2012-08-26 2 views
2
<?xml version="1.0" encoding="utf-8" ?> 
<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 

<xsl:template match="/"> 
    <!DOCTYPE HTML> 
    <html> 
    <head> 

    </head> 
    <body> 

    </body> 
    </html> 
</xsl:template> 

</xsl:stylesheet> 

Il obtient une erreur d'analyse dans DOCTYPE. comment résoudre cela?erreur dans doctype

Répondre

5

Le W3C HTML 5 Reference recommande d'utiliser doctype-system="about:legacy-compat":

Pour la compatibilité avec les producteurs existants de HTML - qui est, logiciel qui génère des documents HTML - une DOCTYPE alternative est disponible pour utilisation par des systèmes qui ne peuvent pas sortir le DOCTYPE donné ci-dessus. Cette limitation se produit dans un logiciel qui s'attend à ce qu'un DOCTYPE inclut un un identificateur PUBLIC ou SYSTEM, et est incapable de les omettre. La forme canonique de ce DOCTYPE est comme suit:

<!DOCTYPE html SYSTEM "about:legacy-compat"> 

Vous pouvez y parvenir avec un processeur XSLT qui suit:

<xsl:output method="html" doctype-system="about:legacy-compat" /> 

Il va générer:

<!DOCTYPE HTML SYSTEM "about:legacy-compat"> 
2

Vous ne pouvez pas incorporer la déclaration <!DOCTYPE HTML> directement dans xslt. Utilisez ce qui suit:

<xsl:text disable-output-escaping='yes'>&lt;!DOCTYPE html></xsl:text> 

à la place. Voir Set HTML5 doctype with XSLT pour un problème similaire.

+3

Ce solution ne fonctionnera qu'avec un processeur/environnement qui prend en charge doe; par exemple, cela ne fonctionnera pas dans Firefox. Voir la question citée pour plus de détails. Notez avec les versions actuelles de Saxon que vous pouvez utiliser '' –