10 Stimmen

Wie man <!DOCTYPE html> mit XSLT ausgibt

Mögliches Duplikat:
HTML5-Doctype mit XSLT festlegen

Ich bin neu in xslt und versuche, ein HTML 5-Dokument zu erstellen.

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

und Firefox gibt mir die Fehlermeldung

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

Wenn es sich nur um <html> Es funktioniert gut. Wie kann ich das beheben und warum passiert das?

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

26voto

Emiliano Poggi Punkte 23692

Wenn Sie unbedingt die vertragliche Form wünschen, bleibt Ihnen nur die Möglichkeit, die disable-output-escaping von xsl:text wie in den Kommentaren oben verlinkt. Ich denke, das ist ein bisschen schmutzig, und mehr, müssen Sie es innerhalb einer Vorlage angeben:

<xsl:template match="/">
    <xsl:text disable-output-escaping="yes">&lt;!DOCTYPE html&gt;</xsl:text>
</xsl:template>

Als alternative saubere Lösung definiert das W3C für HTML5 einen speziellen DOCTYPE-Legacy-String, der von HTML-Generatoren verwendet werden kann, die den Doctype nicht im kürzeren Format anzeigen können. Um also bei reinem XSLT zu bleiben, können Sie verwenden:

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X