Hallo Chris,
ich versuche ein XHTML-Dokument mittels XSLT zu "erweitern" - sprich, beim Auftauchen eines bestimmten Elements möchte ich dieses mit einem Container-Element einfassen.
Probiere es so:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:html="http://www.w3.org/1999/xhtml" xmlns="http://www.w3.org/1999/xhtml"
exclude-result-prefixes="html">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="html:p">
<div class="paragraph">
<xsl:copy-of select="."/>
</div>
</xsl:template>
</xsl:stylesheet>
Einerseits kommt das Identity-Template zum Einsatz, welches alle Inhalte 1:1 in die Ausgabe übernimmt und anderseits sollen p-Elemente gesondert behandelt werden, welche wiederum im Default-XML-Namespace liegen. Der Zugriff darauf erfolgt hier mittels html:p (Prefix beliebig wählbar). Die nochmalige Verwendung von xmlns="http://www.w3.org/1999/xhtml" als Default-Namensraum im Stylesheet vermeidet die Ausgabe von xmlns="" bei den neu erzeugten div-Elementen.
Grüße,
Thomas