Mercurial > hg > mpdl-group
view software/mpdl-services/mpiwg-mpdl-cms/build/classes/de/mpg/mpiwg/berlin/mpdl/cms/transform/replaceAnchor.xsl @ 23:e845310098ba
diverse Korrekturen
author | Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de> |
---|---|
date | Tue, 27 Nov 2012 12:35:19 +0100 |
parents | |
children |
line wrap: on
line source
<?xml version="1.0"?> <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xhtml="http://www.w3.org/1999/xhtml" exclude-result-prefixes="xsl xlink xhtml" > <xsl:output method="xml" encoding="utf-8"/> <xsl:template match="@*|node()"> <xsl:copy> <xsl:apply-templates select="@*|node()"/> </xsl:copy> </xsl:template> <!-- insert figure number --> <xsl:template match="*:figure"> <xsl:variable name="number" select="count(./preceding::*:figure) + 1"/> <xsl:element name="{name()}" namespace="{namespace-uri()}"><!-- remove namespace in element and its subnodes --> <xsl:apply-templates select="@*"/> <xsl:attribute name="number"><xsl:value-of select="$number"/></xsl:attribute> <xsl:apply-templates/> </xsl:element> </xsl:template> <!-- insert figure number --> <xsl:template match="*:handwritten"> <xsl:variable name="number" select="count(./preceding::*:handwritten) + 1"/> <xsl:element name="{name()}" namespace="{namespace-uri()}"><!-- remove namespace in element and its subnodes --> <xsl:apply-templates select="@*"/> <xsl:attribute name="number"><xsl:value-of select="$number"/></xsl:attribute> <xsl:apply-templates/> </xsl:element> </xsl:template> <xsl:template match="*:anchor"> <xsl:variable name="type" select="@type"/> <xsl:variable name="href" select="@xlink:href"/> <xsl:choose> <xsl:when test="$type = 'figure'"> <xsl:variable name="figure" select="//*:figure[@xlink:label = $href]"/> <xsl:apply-templates select="$figure"/> </xsl:when> <xsl:when test="$type = 'handwritten'"> <xsl:variable name="handwritten" select="//*:handwritten[@xlink:label = $href]"/> <xsl:apply-templates select="$handwritten"/> </xsl:when> <xsl:when test="$type = 'note'"> <xsl:variable name="note" select="//*:note[@xlink:label = $href]"/> <xsl:sequence select="$note"/> </xsl:when> <xsl:when test="$type = 'table'"> <xsl:variable name="table" select="//xhtml:table[@xlink:label = $href]"/> <xsl:sequence select="$table"/> </xsl:when> <xsl:otherwise> <xsl:copy> <xsl:apply-templates select="@*|node()"/> </xsl:copy> </xsl:otherwise> </xsl:choose> </xsl:template> <!-- remove the anchored divs: div which contain a labeled figure, note, handwritten or table --> <xsl:template match="*:div"> <xsl:variable name="containingElems" select="*:figure|*:note|*:handwritten|xhtml:table"/> <xsl:variable name="hasLabel" select="not(empty($containingElems[1]/@xlink:label))"/> <xsl:choose> <xsl:when test="$hasLabel"></xsl:when> <xsl:otherwise> <xsl:copy> <xsl:apply-templates select="@*|node()"/> </xsl:copy> </xsl:otherwise> </xsl:choose> </xsl:template> </xsl:stylesheet>