Xslt xpath xhtml

Aus crazylinux.de
Zur Navigation springen Zur Suche springen

Problem: xhtml parsen und teile wieder als xhtml bereitstellen, das ganze über xslt-Transformation. In diesem Fall soll der Inhalt eines Div (id=content-top) ausgeschnitten werden.

xsl:

<?xml version="1.0"?>

<xsl:stylesheet version="2.0" xmlns:xhtml="http://www.w3.org/1999/xhtml"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:fn="http://www.w3.org/2005/02/xpath-functions"
xmlns:xdt="http://www.w3.org/2005/02/xpath-datatypes" >

<xsl:output method="html"/>

<xsl:template match="//*[local-name()='div'][@id='content-top']">
<xsl:copy-of select="."/>
</xsl:template>

<xsl:template match="@*|text()">
</xsl:template>

<xsl:template match="*|@*">
<xsl:apply-templates/>
</xsl:template>

</xsl:stylesheet>


Default-Templates

Wird für ein Element keine passende Regel gefunden, so treten im Prozessor eingebaute "Default-Templates" in Kraft:

<xsl:template match="*|/">
<xsl:apply-templates>
</xsl:template>

<xsl:template match="@*|text()">
<xsl:value-of select=".">
</xsl:template>

<xsl:template match="comment()|processing-instruction()"/>

Bei Elementknoten ohne passende Regel werden also mit deren Kindknoten fortgefahren; Texte und Attribute werden mittels value-of (wird später erklärt) durch ihren Wert ersetzt; Kommentare und PIs werden ignoriert.

Danke an Thomas für die Unterstützung.