2011-06-13 13 views
8

Possible Duplicate:
Set HTML5 doctype with XSLTCómo salida <! DOCTYPE html> XSLT con

Soy nuevo en XSLT y estoy tratando de producir un documento HTML 5.

<?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> 

y Firefox me da el error

"XML Parsing Error: not well-formed 
Location: file:///E:/XSLT-XML-Shema/shipping-transform.xsl 
Line Number 6, Column 4: <!DOCTYPE html> 

Si es sólo <html> funciona bien. ¿Cómo soluciono esto y por qué ocurre?

--EDIT--

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output method="html" doctype-system="about:legacy-compact" /> 
<xsl:template match="/"> 
     <!DOCTYPE html> 

     <head> 
       <meta charset="utf-8" /> 
      <title>Sample Corporation #1</title> 
      </head> 
      <body> 
      Hello this is a test<br /> 
      Goodbye! 
      </body> 
      </html> 
</xsl:template> 

</xsl:stylesheet> 
+0

Es un posible duplicado, pero ese hilo es difícil de leer. Porque "Soy nuevo en XSLT" aún más difícil. –

Respuesta

25

Si desea absolutamente la forma contraída, su única opción es la de disable-output-escapingxsl:text como vinculados en los comentarios anteriores. Creo que esto es un poco sucio, y más, hay que indicar que dentro de una plantilla:

solución más limpia alternativa
<xsl:template match="/"> 
    <xsl:text disable-output-escaping="yes">&lt;!DOCTYPE html&gt;</xsl:text> 
</xsl:template> 

, W3C define para HTML5 una cadena legado DOCTYPE específica que puede ser utilizado por los generadores de HTML que puede' t muestra el doctype en el formato más corto. Entonces, para quedarse con XSLT puro, puede usar:

<xsl:stylesheet version="1.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 

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

    <xsl:template match="/"> 
     <html> 
      <head> 
       <meta charset="utf-8" /> 
       <title>Sample Corporation #1</title> 
      </head> 
      <body> 
       Hello this is a test<br /> 
       Goodbye! 
      </body> 
     </html> 
    </xsl:template> 

</xsl:stylesheet> 
+0

Todavía el mismo problema, ¿lo estoy haciendo bien? –

+0

@ quest4knowledge: elimine '' debajo de la plantilla raíz y ¡listo! –

+1

Creo que el procesador XSLT en Firefox no es compatible con disable-output-escaping (que es una característica opcional y obsoleta en XSLT 2.0). –

Cuestiones relacionadas