diff options
Diffstat (limited to 'doc/publican/xsl/merge-mapcoords.xsl')
| -rw-r--r-- | doc/publican/xsl/merge-mapcoords.xsl | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/doc/publican/xsl/merge-mapcoords.xsl b/doc/publican/xsl/merge-mapcoords.xsl new file mode 100644 index 0000000..7adaca3 --- /dev/null +++ b/doc/publican/xsl/merge-mapcoords.xsl @@ -0,0 +1,64 @@ +<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> + <xsl:param name="basedir"/> + <xsl:output method="xml" encoding="utf-8" indent="yes"/> + <!-- --> + <!-- Template for the root so we can add a DOCTYPE --> + <xsl:template match="/"> + <xsl:text disable-output-escaping="yes"><![CDATA[<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [ +<!ENTITY % BOOK_ENTITIES SYSTEM "Wayland.ent"> +%BOOK_ENTITIES; +]> +]]></xsl:text> + <xsl:apply-templates select="@*|node()"/> + </xsl:template> + <!-- --> + <xsl:template match="@*|node()"> + <xsl:copy> + <xsl:apply-templates select="@*|node()"/> + </xsl:copy> + </xsl:template> + <!-- --> + <!-- suppress existing image map areas --> + <xsl:template match="area"/> + <!-- --> + <xsl:template match="areaspec[area][name(..)='imageobjectco']"> + <xsl:element name="areaspec"> + <xsl:apply-templates select="@*"/> + <xsl:text>
</xsl:text> + <xsl:variable name="pngfile" select="../imageobject/imagedata/@fileref"/> + <xsl:variable name="mapfile" select="concat(substring($pngfile, 1, string-length($pngfile)-3), 'map')"/> + <xsl:variable name="maproot" select="document(concat($basedir, '/', $mapfile))"/> + <!-- --> + <!-- now emit the needed areas --> + <xsl:for-each select="area"> + <xsl:variable name="anchor" select="."/> + <xsl:variable name="other" select="($maproot)//area[@href=($anchor)/@x_steal]"/> + <xsl:choose> + <xsl:when test="$other"> + <xsl:text>	 </xsl:text> + <xsl:element name="area"> + <xsl:attribute name="id"> + <xsl:value-of select="@id"/> + </xsl:attribute> + <xsl:attribute name="linkends"> + <xsl:value-of select="@linkends"/> + </xsl:attribute> + <xsl:attribute name="coords"> + <xsl:value-of select="($other)/@coords"/> + </xsl:attribute> + </xsl:element> + </xsl:when> + <xsl:otherwise> + <xsl:text>	 </xsl:text> + <xsl:comment> + <xsl:value-of select="concat('Warning: unable to locate area tagged ', ($anchor)/@x_steal)"/> + </xsl:comment> + </xsl:otherwise> + </xsl:choose> + <xsl:text>
</xsl:text> + </xsl:for-each> + <!-- --> + <xsl:text>	 </xsl:text> + </xsl:element> + </xsl:template> +</xsl:stylesheet> |
