| <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> |