Xml zu xhtml mit xslt und Namespaces

LokiTheDude

Grünschnabel
Hallo Leute,

ich bin gerade dabei mit PHP ein System zu schreiben, in dem Daten in einen xml-Dokument gespeichert werden. Das ganze wird mit DOM durchgeführt. Nachdem alle Daten gespeichert sind, soll das Ganze mittels des XSLTProcessor in ein xhtml-Dokument umgewandelt werden. Funktioniert auch wunderbar.

Da in dem xml-Dokument aber auch direkt xhtml abgespeichert wird, möchte ich der Übersicht halber meine xml-tags von diesen trennen. Ich dachte, dass dafür Namespaces da sind, wenn ich irre bitte sagen. Sprich, alles was ins Menu kommt, hat den xml-tag <meinpraefix:menu />.

Zwecks Namespace-Deklarierungen habe ich schon einige Seiten gelesen, verstehe aber immer noch nicht das System. Was für eine Datei muss ich deklarieren? Wie sage ich meinen xsl-Datein, dass sie nur für diesen Namespace verantwortlich sind?

Lauter Fragen, ich hoffe ihr vesteht was ich meine.
Hoffe auf Antwort.
 
HTML:
<a href="http://www.devmag.net/html/xhtml_einfuehrung.htm">einführung</a>



Code:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes" doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" doctype-system="DTD/xhtml1-strict.dtd"/>
	<xsl:attribute-set name="a">
		<xsl:attribute name="href">
			<xsl:value-of select="/root/a/@href"/>
		</xsl:attribute>
		<xsl:attribute name="class">
			<xsl:value-of select="/root/a/@class"/>
		</xsl:attribute>
	</xsl:attribute-set>
	<xsl:template match="/">
		<html xmlns="http://www.w3.org/1999/xhtml">
			<body>
				<xsl:apply-templates select="root"/>
			</body>
		</html>
	</xsl:template>
	<xsl:template match="a">
		<p>
			<xsl:element name="a">
				<xsl:attribute name="href">
					<xsl:value-of select="@href"/>
				</xsl:attribute>
				<xsl:attribute name="class">
					<xsl:value-of select="@class"/>
				</xsl:attribute>
				<xsl:value-of select="."/>
			</xsl:element>
		</p>
		<!-- oder so -->
		<p>
			<xsl:element name="a" use-attribute-sets="a">
				<xsl:value-of select="."/>
			</xsl:element>
		</p>
	</xsl:template>
</xsl:stylesheet>
 
Zurück