Tobias Klepp: Transformation von XML in ein valides XHTML

Hallo zusammen,

ich habe ein XML-File, dass ich in ein valides XHTML-File serverseitig transformieren möchte. So wie unten abgebildet, funktioniert es leider nicht. Ich bekommen von PHP die Fehlermeldung "StartTag: invalid element name in ...". Ist mir auch irgendwie klar, dass ich in meiner Datei zwei Namensräume definiere und das es damit Probleme gibt. Wie kann ich trotzdem ein valides XHTML-File herausbekommen?

<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" />
<xsl:template match="/">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
<title>Layout und Contenttrennung mit XML, XSLT und CSS</title>
<link rel="stylesheet" href="layout.css" type="text/css" />
</head>

<body>
<xsl:apply-templates />
</body>

</html>
</xsl:template>

<xsl:template match="titel">
<h1><xsl:value-of select="." /></h1>
</xsl:template>

<xsl:template match="text">
<div id="box"><p><xsl:value-of select="." /></p></div>
</xsl:template>

<xsl:template match="liste">
<ul class="liste"><xsl:apply-templates /></ul>
</xsl:template>

<xsl:template match="listenpunkt">
<li><xsl:value-of select="." /></li>
</xsl:template>

</xsl:stylesheet>

Vielen Dank! Gruß Tobi

  1. Hallo,

    Ist mir auch irgendwie klar, dass ich in meiner Datei zwei Namensräume definiere und das es damit Probleme gibt. Wie kann ich trotzdem ein valides XHTML-File herausbekommen?

    <?xml version="1.0" encoding="iso-8859-1"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="html" />
    <xsl:template match="/">
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

    XHTML erfordert die Ausgabe-Methode "xml". FPI und SI werden ueber eigene Attribute generiert. So sollte das funktionieren (kommt wegen der Namensraumzuweisung ggf. noch auf den XSLT-Prozessor an -- Sablotron akzeptiert diesen Aufbau AFAIK):

    ...

      
    <xsl:output method="xml"  
    doctype-public="-//W3C//DTD XHTML 1.1//EN"  
    doctype-system="http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"/>  
      
    <xsl:template match="/">  
    <html xmlns="http://www.w3.org/1999/xhtml">  
    <!-- usw. -->
    

    ...

    MfG, Thomas

    1. Hallo Thomas,

      vielen dank! Jetzt tut es. Ganz klasse.

      Gruß Tobias