Hy, ich hab ein schwerwiegendes problem mit XSLT - im resultierende XHTML-Dokument werden nämli zwei namespaces aufgelistet => XHTML Dokument ungültig
XML-Dokument:
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="personen.xsl"?>
<personen xmlns="http://localhost/personen" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://localhost/personen personen.xsd">
<person id="1">
<name>flo
<alter>20
</person>
<person id="2">
<name>doris
<alter>14
</person>
<person id="3">
<name>bernd
<alter>23
</person>
</personen>
Alles anzeigen
XSL-Dokument
<?xml version='1.0' encoding="UTF-8"?>
<xsl:stylesheet xmlns="http://www.w3.org/1999/xhtml" xmlns:data="http://localhost/personen" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0" default-validation="strict">
<xsl:output method="xhtml" version="1.0" encoding="UTF-8" indent="yes" omit-xml-declaration="no" doctype-public="-//W3C/DTD XHTML 1.0 Strict//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" standalone="no" media-type="text/xhtml"/>
<xsl:template match="/" >
<html>
<head>
<title>Personen
<link rel="stylesheet" type="text/css" href="personen.css" />
</head>
<body>
<table>
<tr>
<th>ID
<th>Name
<th>Alter
</tr>
<xsl:for-each select="data:personen/data:person">
<tr>
<td>
<td>
<td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Alles anzeigen
XSLT beendet ohne Fehler - jedoch hab ich jetzt 2 namespaces im XHTML dokument, deswegen ist dieses ungültig
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html
PUBLIC "-//W3C/DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:data="http://localhost/personen">
<head>
<meta http-equiv="Content-Type" content="text/xhtml; charset=UTF-8"/>
<title>Personen
<link rel="stylesheet" type="text/css" href="personen.css" />
</head>
<body>
<table>
<tr>
<th>ID
<th>Name
<th>Alter
</tr>
<tr>
<td>1
<td>flo
<td>20
</tr>
<tr>
<td>2
<td>doris
<td>14
</tr>
<tr>
<td>3
<td>bernd
<td>23
</tr>
</table>
</body>
</html>
Alles anzeigen
HIER IST MEIN PROBLEM.
Das XHTML-File ist natürlich ungültig, weil 2 Namespaces drinnen vorkommen, der data-namespace muss also raus, aber wie?
Soweit ich mich jetzt schon informieren habe können, kommt alle namespaces, die für das xsl-dokument verwendet werden (außer natürlich der xsi-namespace) auch in das xhtml-dokument ... dieser vorgang wird NAMESPACE FIXUP genannt (wenn ich mich nicht täusche)
Also, wie kann ich das umgehen, dass XSLT mir diesen zweiten namespace reinkopiert.
BITTE BITTE BITTE - help me!
ANMERKUNG: In allen XML-Dokumenten sind irgendwie beim kopieren und einfügen die schließenden Tags verloren gegangen! Alle XML-Dokumente (bis auf den beschriebenen XHTML-Namespace-Fehler sind orginal sowohl wohlgeformt als auch gültig (Xml Schema für Xml, RNG für Xsl, DTD Strict für XHTML)