mirror of
				https://gitlab.freedesktop.org/wayland/wayland.git
				synced 2025-11-03 09:01:42 -05:00 
			
		
		
		
	Added xslt processing to give DocBook output diagram image maps/hot-linked areas consistent with those automatically generated by Doxygen. Signed-off-by: Jon A. Cruz <jonc@osg.samsung.com>
		
			
				
	
	
		
			64 lines
		
	
	
	
		
			2.3 KiB
		
	
	
	
		
			XML
		
	
	
	
	
	
			
		
		
	
	
			64 lines
		
	
	
	
		
			2.3 KiB
		
	
	
	
		
			XML
		
	
	
	
	
	
<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>
 |