From 994df6ff07805d4cfccf6e5ff167ce93f3f19ca8 Mon Sep 17 00:00:00 2001
From: Jelmer Vernooij <jelmer@samba.org>
Date: Sun, 1 Aug 2004 16:11:16 +0000
Subject: Couple of large changes to the pearson code, portions by Jochen Hein.
 (This used to be commit dc3e0a5a362c3916bfa7b5104b2a17f0d021a6e1)

---
 docs/xslt/pearson.xsl | 999 +++++++++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 984 insertions(+), 15 deletions(-)

(limited to 'docs/xslt/pearson.xsl')

diff --git a/docs/xslt/pearson.xsl b/docs/xslt/pearson.xsl
index bf362d39ea..6a0eb3f1de 100644
--- a/docs/xslt/pearson.xsl
+++ b/docs/xslt/pearson.xsl
@@ -1,28 +1,1005 @@
 <?xml version='1.0'?>
 <!-- 
 	Convert DocBook to XML validating against the Pearson DTD
-	Published under the GNU GPL
 
+	(C) Jochen Hein
 	(C) Jelmer Vernooij <jelmer@samba.org>			2004
 -->
 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
 	xmlns:exsl="http://exslt.org/common"
+	xmlns:doc="http://nwalsh.com/xsl/documentation/1.0"
+	exclude-result-prefixes="doc"
 	version="1.1"
 	extension-element-prefixes="exsl">
 
 	<xsl:import href="../settings.xsl"/>
 
-	<xsl:output method="xml" indent="yes" encoding="UTF-8" doctype-public="-//Pearson//DTD Books//DE" doctype-system="http://www.pearson.de/pearson.dtd"/>
+	<!-- TODO <entry></entry> -> <entry><p/></entry> -->
+
+	<xsl:output method="xml"
+		encoding="UTF-8"
+		doctype-public="-//Pearson//DTD Books//DE"
+		doctype-system="http://www.pearson.de/pearson.dtd"
+		indent="yes"
+		omit-xml-declaration="no"
+		standalone="no"/>
+
+	<!-- Warn about DocBook elements that are not converted -->
+	<xsl:template match="*">
+		<xsl:message>
+			<xsl:text>No template matches </xsl:text>
+			<xsl:value-of select="name(.)"/>
+			<xsl:text>.</xsl:text>
+		</xsl:message>
+	</xsl:template>
+
+	<!--  
+	====================================================================  
+	-->
+	<!-- Establish strip/preserve whitespace rules -->
+
+	<xsl:preserve-space elements="*"/>
+
+	<xsl:strip-space elements="
+		abstract affiliation anchor answer appendix area areaset areaspec
+		artheader article audiodata audioobject author authorblurb authorgroup
+		beginpage bibliodiv biblioentry bibliography biblioset blockquote book
+		bookbiblio bookinfo callout calloutlist caption caution
+		city pubdate publisher publishername"/>
+
+	<xsl:template name="transform.id.attribute">
+		<xsl:if test="@id != ''">
+			<xsl:attribute name="id">
+				<xsl:value-of select="@id"/>
+			</xsl:attribute>
+		</xsl:if>
+	</xsl:template>
+
+	<xsl:template match="/">
+		<xsl:processing-instruction  
+			name="xml-stylesheet">href="pearson.css"  
+			type="text/css"</xsl:processing-instruction>
+		<xsl:text>
+		</xsl:text>
+		<xsl:comment>
+			<xsl:text>Transformed with pearson.xsl by Jochen Hein</xsl:text>
+		</xsl:comment>
+		<xsl:text>
+		</xsl:text>
+		<!-- Releaseinfo einbauen? -->
+		<xsl:comment>
+			<xsl:apply-templates select=".//releaseinfo" mode="comment"/>
+		</xsl:comment>
+		<xsl:text>
+		</xsl:text>
+		<xsl:apply-templates/>
+	</xsl:template>
 
 	<xsl:template match="book">
-		<xsl:element name="book">
+		<book>
 			<xsl:apply-templates/>
-		</xsl:element>
+		</book>
+	</xsl:template>
+
+	<xsl:template match="bookinfo">
+		<bookinfo>
+			<xsl:apply-templates/>
+		</bookinfo>
 	</xsl:template>
 
+	<xsl:template match="bookinfo/author">
+		<!-- author>
+		<xsl:apply-templates/>
+	</author -->
+</xsl:template>
+
+<xsl:template match="chapter">
+	<chapter>
+		<xsl:call-template name="transform.id.attribute"/>
+		<xsl:apply-templates/>
+	</chapter>
+</xsl:template>
+
+<xsl:template match="chapter/title/command">
+	<xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="index">
+	<xsl:comment> XXX insert index here </xsl:comment>
+	<!-- chapter>
+	<xsl:call-template name="transform.id.attribute"/>
+	<xsl:apply-templates/>
+</chapter -->
+   </xsl:template>
+
+   <xsl:template match="preface">
+	   <preface>
+		   <xsl:call-template name="transform.id.attribute"/>
+		   <xsl:apply-templates/>
+	   </preface>
+   </xsl:template>
+
+   <xsl:template match="section|sect1|sect2|sect3|sect4">
+	   <sect>
+		   <xsl:call-template name="transform.id.attribute"/>
+		   <xsl:apply-templates/>
+	   </sect>
+   </xsl:template>
+
+   <xsl:template match="partintro">
+	   <xsl:copy>
+		   <xsl:apply-templates select="@*|node()"/>
+	   </xsl:copy>
+   </xsl:template>
+
+   <xsl:template match="part">
+	   <appendix>
+		   <xsl:apply-templates/>
+	   </appendix>
+   </xsl:template>
+
+   <xsl:template match="appendix[1]">
+	   <appendix>
+		   <chapter>
+			   <xsl:call-template name="transform.id.attribute"/>
+			   <xsl:apply-templates/>
+		   </chapter>
+		   <xsl:for-each select="following-sibling::appendix">
+			   <chapter>
+				   <xsl:call-template name="transform.id.attribute"/>
+				   <xsl:apply-templates/>
+			   </chapter>
+		   </xsl:for-each>
+	   </appendix>
+   </xsl:template>
+
+   <xsl:template match="appendix[position() != 1]">
+   </xsl:template>
+
+   <xsl:template match="title">
+	   <title><xsl:apply-templates/></title>
+   </xsl:template>
+
+
+   <xsl:template match="para">
+	   <p><xsl:apply-templates/></p>
+	   <!-- p><xsl:apply-templates><value-of  
+			   select="normalize-space()"/></xsl:apply-templates></p -->
+   </xsl:template>
+
+   <xsl:template match="tip">
+	   <tip><xsl:apply-templates/></tip>
+   </xsl:template>
+
+   <xsl:template match="warning|important|caution">
+	   <stop><xsl:apply-templates/></stop>
+   </xsl:template>
+
+   <xsl:template match="note">
+	   <info><xsl:apply-templates/></info>
+   </xsl:template>
+
+   <xsl:template match="emphasis">
+	   <xsl:variable name="role" select="@role"/>
+
+	   <xsl:choose>
+		   <xsl:when test="$role='italic'">
+			   <i><xsl:apply-templates/></i>
+		   </xsl:when>
+		   <xsl:otherwise>
+			   <em><xsl:apply-templates/></em>
+		   </xsl:otherwise>
+	   </xsl:choose>
+   </xsl:template>
+
+   <xsl:template match="ulink">
+	   <xsl:apply-templates/>
+	   <footnote><p><url><xsl:value-of select="@ulink"/></url></p></footnote>
+	</xsl:template>
+
+   <xsl:template match="email">
+	   <url>mailto:<xsl:apply-templates/></url>
+   </xsl:template>
+
+   <xsl:template match="indexterm">
+	   <ie><xsl:apply-templates/></ie>
+   </xsl:template>
+
+   <xsl:template match="primary">
+	   <t><xsl:apply-templates/></t>
+   </xsl:template>
+
+   <xsl:template match="secondary">
+	   <t><xsl:apply-templates/></t>
+   </xsl:template>
+
+   <xsl:template match="see">
+	   <synonym><xsl:apply-templates/></synonym>
+   </xsl:template>
+
+   <xsl:template  
+	   match="footnote"><footnote><xsl:apply-templates/></footnote></xsl:template>
+
+   <xsl:template match="command">
+	   <code><xsl:apply-templates/></code>
+   </xsl:template>
+
+   <xsl:template match="function">
+	   <code><xsl:apply-templates/></code>
+   </xsl:template>
+
+   <xsl:template match="systemitem">
+
+	   <!-- xsl:if test="@role != '' and @role != 'signal'">
+	   <xsl:message>
+		   Warning: role attribute is <xsl:value-of select="@role"/>
+	   </xsl:message>
+   </xsl:if -->
+   <code><xsl:apply-templates/></code>
+   </xsl:template>
+
+   <xsl:template match="sgmltag">
+	   <code><xsl:apply-templates/></code>
+   </xsl:template>
+
+   <xsl:template match="filename">
+	   <code><xsl:apply-templates/></code>
+   </xsl:template>
+
+   <xsl:template match="errorcode">
+	   <code><xsl:apply-templates/></code>
+   </xsl:template>
+
+   <xsl:template match="errortype">
+	   <code><xsl:apply-templates/></code>
+   </xsl:template>
+
+   <xsl:template match="returnvalue">
+	   <code><xsl:apply-templates/></code>
+   </xsl:template>
+
+   <xsl:template match="glosslist|glossary">
+	   <dl><xsl:apply-templates/></dl>
+   </xsl:template>
+
+   <xsl:template match="glossentry">
+	   <dlitem><xsl:apply-templates/></dlitem>
+   </xsl:template>
+
+   <xsl:template match="glossentry/acronym">
+	   <dt><xsl:apply-templates/></dt>
+   </xsl:template>
+
+   <xsl:template match="acronym">
+	   <b><xsl:apply-templates/></b>
+   </xsl:template>
+
+   <xsl:template match="glossterm">
+	   <dt><xsl:apply-templates/></dt>
+   </xsl:template>
+
+   <xsl:template match="glossdef">
+	   <dd><xsl:apply-templates/></dd>
+   </xsl:template>
+
+   <xsl:template match="itemizedlist">
+	   <ul><xsl:apply-templates/></ul>
+   </xsl:template>
+
+   <xsl:template match="varlistentry">
+	   <dlitem>
+		   <dt><xsl:apply-templates select="term"/></dt>
+		   <dd><xsl:apply-templates select="listitem"/></dd>
+	   </dlitem>
+   </xsl:template>
+
+   <xsl:template match="variablelist">
+	   <dl><xsl:apply-templates/></dl>
+   </xsl:template>
+
+   <xsl:template match="simplelist">
+	   <ul>
+		   <xsl:for-each select="member">
+			   <li><p><xsl:apply-templates/></p></li>
+		   </xsl:for-each>
+	   </ul>
+   </xsl:template>
+
+   <xsl:template match="orderedlist">
+	   <xsl:variable name="numeration" select="@numeration"/>
+	   <ol>
+		   <xsl:if test="$numeration != ''">
+			   <xsl:attribute name="type">
+				   <xsl:value-of select="$numeration"/>
+			   </xsl:attribute>
+		   </xsl:if>
+		   <xsl:apply-templates/>
+	   </ol>
+   </xsl:template>
+
+   <xsl:template match="listitem">
+	   <li><xsl:apply-templates/></li>
+   </xsl:template>
+
+   <xsl:template match="firstterm">
+	   <em><xsl:apply-templates/></em>
+   </xsl:template>
+
+   <xsl:template match="literal/systemitem">
+	   <em><xsl:apply-templates/></em>
+   </xsl:template>
+
+   <xsl:template match="superscript">
+	   <sup><xsl:apply-templates/></sup>
+   </xsl:template>
+
+   <xsl:template match="productname">
+	   <xsl:apply-templates/>
+   </xsl:template>
+
+   <xsl:template match="keycombo">
+
+	   <xsl:variable name="action" select="@action"/>
+	   <xsl:variable name="joinchar">
+
+		   <xsl:choose>
+
+			   <xsl:when test="$action='seq'">
+				   <xsl:text> </xsl:text></xsl:when>
+			   <xsl:when test="$action='simul'">+</xsl:when>
+			   <xsl:when test="$action='press'">-</xsl:when>
+			   <xsl:when test="$action='click'">-</xsl:when>
+			   <xsl:when test="$action='double-click'">-</xsl:when>
+			   <xsl:when test="$action='other'"></xsl:when>
+			   <xsl:otherwise>-</xsl:otherwise>
+		   </xsl:choose>
+	   </xsl:variable>
+
+	   <xsl:for-each select="*">
+		   <xsl:if test="position()>1"><xsl:value-of  
+				   select="$joinchar"/></xsl:if>
+		   <xsl:apply-templates select="."/>
+	   </xsl:for-each>
+
+   </xsl:template>
+
+
+   <xsl:template match="keycap">
+	   <key><xsl:apply-templates/></key>
+   </xsl:template>
+
+   <xsl:template match="keycap/replaceable">
+	   <xsl:apply-templates/>
+   </xsl:template>
+
+
+
+   <xsl:template match="menuchoice">
+	   <xsl:variable name="shortcut" select="./shortcut"/>
+	   <xsl:call-template name="process.menuchoice"/>
+	   <xsl:if test="$shortcut">
+		   <xsl:text> (</xsl:text>
+		   <xsl:apply-templates select="$shortcut"/>
+		   <xsl:text>)</xsl:text>
+	   </xsl:if>
+   </xsl:template>
+
+   <xsl:template name="process.menuchoice">
+	   <xsl:param name="nodelist"  
+		   select="guibutton|guiicon|guilabel|guimenu|guimenuitem|guisubmenu|interface"/><!-- not(shortcut) -->
+	   <xsl:param name="count" select="1"/>
+
+	   <xsl:choose>
+		   <xsl:when test="$count>count($nodelist)"></xsl:when>
+		   <xsl:when test="$count=1">
+			   <xsl:apply-templates select="$nodelist[$count=position()]"/>
+			   <xsl:call-template name="process.menuchoice">
+				   <xsl:with-param name="nodelist" select="$nodelist"/>
+				   <xsl:with-param name="count" select="$count+1"/>
+			   </xsl:call-template>
+		   </xsl:when>
+		   <xsl:otherwise>
+			   <xsl:variable name="node" select="$nodelist[$count=position()]"/>
+			   <xsl:choose>
+				   <xsl:when test="name($node)='guimenuitem'
+					   or name($node)='guisubmenu'">
+					   <xsl:text>-&gt;</xsl:text>
+				   </xsl:when>
+				   <xsl:otherwise>+</xsl:otherwise>
+			   </xsl:choose>
+			   <xsl:apply-templates select="$node"/>
+			   <xsl:call-template name="process.menuchoice">
+				   <xsl:with-param name="nodelist" select="$nodelist"/>
+				   <xsl:with-param name="count" select="$count+1"/>
+			   </xsl:call-template>
+		   </xsl:otherwise>
+	   </xsl:choose>
+   </xsl:template>
+
+
+   <xsl:template match="guimenu">
+	   <guiitem><xsl:apply-templates/></guiitem>
+   </xsl:template>
+
+   <xsl:template match="guimenuitem">
+	   <guiitem><xsl:apply-templates/></guiitem>
+   </xsl:template>
+
+	<xsl:template match="guiicon">
+	   <guiitem><xsl:apply-templates/></guiitem>
+   </xsl:template>
+
+   <xsl:template match="guilabel">
+	   <guiitem><xsl:apply-templates/></guiitem>
+   </xsl:template>
+
+   <xsl:template match="guibutton">
+	   <guiitem><xsl:apply-templates/></guiitem>
+   </xsl:template>
+
+   <xsl:template name="transform.epigraph">
+	   <xsl:apply-templates select="para"/>
+	   <xsl:apply-templates select="attribution"/>
+   </xsl:template>
+
+   <xsl:template match="epigraph">
+	   <chapterintro><motto><xsl:call-template  
+				   name="transform.epigraph"/></motto></chapterintro>
+   </xsl:template>
+
+   <xsl:template match="section/epigraph">
+	   <motto><xsl:call-template name="transform.epigraph"/></motto>
+   </xsl:template>
+
+   <xsl:template match="epigraph/para">
+	   <p><em><xsl:apply-templates/></em></p>
+   </xsl:template>
+   <xsl:template match="attribution">
+	   <p><i><xsl:apply-templates/></i></p>
+   </xsl:template>
+
+   <xsl:template match="errorname">
+	   <i><xsl:apply-templates/></i>
+   </xsl:template>
+
+   <xsl:template match="constant">
+	   <b><xsl:apply-templates/></b>
+   </xsl:template>
+
+   <xsl:template match="envar">
+	   <code><xsl:apply-templates/></code>
+   </xsl:template>
+
+   <xsl:template match="literal">
+	   <code><xsl:apply-templates/></code>
+   </xsl:template>
+
+   <xsl:template match="option">
+	   <code><xsl:apply-templates/></code>
+   </xsl:template>
+
+   <xsl:template match="parameter">
+	   <code><xsl:apply-templates/></code>
+   </xsl:template>
+
+   <xsl:template match="application">
+	   <b><xsl:apply-templates/></b>
+   </xsl:template>
+
+   <xsl:template match="screen/userinput">
+	   <b><xsl:apply-templates/></b>
+   </xsl:template>
+
+   <xsl:template match="screen/prompt">
+	   <xsl:apply-templates/>
+   </xsl:template>
+
+   <xsl:template match="prompt">
+	   <code><xsl:apply-templates/></code>
+   </xsl:template>
+
+   <xsl:template match="userinput">
+	   <code><b><xsl:apply-templates/></b></code>
+   </xsl:template>
+
+   <xsl:template match="computeroutput">
+	   <code><xsl:apply-templates/></code>
+   </xsl:template>
+
+   <xsl:template match="screen/computeroutput">
+	   <xsl:apply-templates/>
+   </xsl:template>
+
+   <xsl:template match="replaceable">
+	   <i><xsl:apply-templates/></i>
+   </xsl:template>
+
+   <xsl:template match="userinput/replaceable">
+	   <i><xsl:apply-templates/></i>
+   </xsl:template>
+
+   <xsl:template match="citation"
+	   xmlns:xlink="http://www.w3.org/1999/xlink">
+
+	   <xsl:variable name="target" select="."/>
+	   <xsl:variable name="targets" select="id($target)"/>
+
+	   <!-- xsl:call-template name="check.id.unique">
+	   <xsl:with-param name="linkend" select="$target"/>
+   </xsl:call-template -->
+
+   <xsl:choose>
+	   <xsl:when test="count($targets) = 0">
+		   <xsl:message>
+			   <xsl:text>Citation of nonexistent id: </xsl:text>
+			   <xsl:value-of select="."/>
+		   </xsl:message>
+		   <xsl:text>[??? </xsl:text>
+		   <xsl:value-of select="."/>
+		   <xsl:text>]</xsl:text>
+	   </xsl:when>
+	   <xsl:otherwise>
+		   <xsl:text>[</xsl:text><xsl:value-of  
+			   select="."/><xsl:text>]</xsl:text>
+	   </xsl:otherwise>
+   </xsl:choose>
+
+   </xsl:template>
+
+   <xsl:template match="figure">
+	   <figure>
+		   <xsl:call-template name="transform.id.attribute"/>
+		   <xsl:apply-templates/>
+	   </figure>
+   </xsl:template>
+
+   <xsl:template match="graphic">
+	   <xsl:message>
+		   <xsl:text>Obsolete tag "graphic" found.</xsl:text>
+	   </xsl:message>
+
+	   <figureref>
+		   <xsl:attribute name="fileref">
+			   <xsl:value-of select="@fileref"/>
+		   </xsl:attribute>
+	   </figureref>
+   </xsl:template>
+
+   <xsl:template match="mediaobject">
+	   <xsl:apply-templates/>
+   </xsl:template>
+
+   <xsl:template match="imageobject">
+	   <xsl:apply-templates/>
+   </xsl:template>
+
+   <xsl:template match="imagedata">
+	   <xsl:variable name="scale" select="@scale"/>
+	   <figureref>
+		   <xsl:attribute name="fileref">
+			   <xsl:value-of select="@fileref"/>
+		   </xsl:attribute>
+		   <xsl:if test="$scale != ''">
+			   <xsl:attribute name="scale"><xsl:value-of  
+					   select="$scale"/>%</xsl:attribute>
+		   </xsl:if>
+	   </figureref>
+   </xsl:template>
+
+   <xsl:template match="example">
+	   <screen>
+		   <xsl:call-template name="transform.id.attribute"/>
+		   <xsl:apply-templates/>
+	   </screen>
+   </xsl:template>
+
+   <xsl:template match="listing">
+	   <screen>
+		   <xsl:call-template name="transform.id.attribute"/>
+		   <xsl:apply-templates/>    </screen>
+   </xsl:template>
+
+   <xsl:template name="check.title.not.empty">
+	   <xsl:variable name="title" select="."/>
+	   <xsl:if test="$title=''">
+		   <xsl:message>title tag is empty!</xsl:message>
+	   </xsl:if>
+   </xsl:template>
+
+   <xsl:template match="figure/title">
+	   <xsl:call-template name="check.title.not.empty"/>
+	   <description><xsl:apply-templates/></description>
+   </xsl:template>
+   <xsl:template match="listing/title">
+	   <xsl:call-template name="check.title.not.empty"/>
+	   <description><xsl:apply-templates/></description>
+   </xsl:template>
+   <xsl:template match="example/title">
+	   <xsl:call-template name="check.title.not.empty"/>
+	   <description><xsl:apply-templates/></description>
+   </xsl:template>
+
+   <xsl:template match="literallayout">
+	   <screentext><xsl:apply-templates/></screentext>
+   </xsl:template>
+   <xsl:template match="screen">
+	   <screentext><xsl:apply-templates/></screentext>
+   </xsl:template>
+
+   <xsl:template match="programlisting">
+	   <listing>
+		   <xsl:if test="title != ''">
+			   <xsl:description><xsl:value-of select="title"/></xsl:description>
+		   </xsl:if>
+		   <listingcode>
+			   <xsl:apply-templates/>
+		   </listingcode>
+		</listing>
+   </xsl:template>
+
+   <!-- Tabellen -->
+   <xsl:template match="table">
+	   <table>
+		   <xsl:call-template name="transform.id.attribute"/>
+		   <xsl:apply-templates/>
+	   </table>
+   </xsl:template>
+   <xsl:template match="table/title">
+	   <description><xsl:apply-templates/></description>
+   </xsl:template>
+
+   <xsl:template match="tgroup">
+	   <tgroup>
+		   <xsl:attribute name="cols">
+			   <xsl:value-of select="@cols"/></xsl:attribute>
+		   <xsl:apply-templates/>
+	   </tgroup>
+   </xsl:template>
+   <xsl:template match="thead">
+	   <thead><xsl:apply-templates/></thead>
+   </xsl:template>
+   <xsl:template match="tbody">
+	   <tbody><xsl:apply-templates/></tbody>
+   </xsl:template>
+   <xsl:template match="row">
+	   <row><xsl:apply-templates/></row>
+   </xsl:template>
+   <xsl:template match="entry">
+	   <entry><p><xsl:apply-templates/></p></entry>
+   </xsl:template>
+   <xsl:template match="colspec">
+	   <colspec><xsl:copy-of select="@*"/><xsl:apply-templates/></colspec>
+   </xsl:template>
+
+   <!-- xref nach pearson-equivalent - Einige Ideen stammen von Norm -->
+
+   <xsl:template name="object.id">
+	   <xsl:param name="object" select="."/>
+	   <xsl:choose>
+		   <xsl:when test="$object/@id">
+			   <xsl:value-of select="$object/@id"/>
+		   </xsl:when>
+		   <xsl:otherwise>
+			   <xsl:value-of select="generate-id($object)"/>
+		   </xsl:otherwise>
+	   </xsl:choose>
+   </xsl:template>
+
+   <xsl:template name="anchor">
+	   <xsl:param name="node" select="."/>
+	   <xsl:param name="conditional" select="1"/>
+	   <xsl:variable name="id">
+		   <xsl:call-template name="object.id">
+			   <xsl:with-param name="object" select="$node"/>
+		   </xsl:call-template>
+	   </xsl:variable>
+	   <xsl:if test="$conditional = 0 or $node/@id">
+		   <a name="{$id}"/>
+	   </xsl:if>
+   </xsl:template>
+
+   <xsl:template name="check.id.unique">
+	   <xsl:param name="linkend"></xsl:param>
+	   <xsl:if test="$linkend != ''">
+		   <xsl:variable name="targets" select="id($linkend)"/>
+		   <xsl:variable name="target" select="$targets[1]"/>
+
+		   <xsl:if test="count($targets)=0">
+			   <xsl:message>
+				   <xsl:text>Error: no ID for constraint linkend: </xsl:text>
+				   <xsl:value-of select="$linkend"/>
+				   <xsl:text>.</xsl:text>
+			   </xsl:message>
+		   </xsl:if>
+
+		   <xsl:if test="count($targets)>1">
+			   <xsl:message>
+				   <xsl:text>Warning: multiple "IDs" for constraint linkend:  
+				   </xsl:text>
+				   <xsl:value-of select="$linkend"/>
+				   <xsl:text>.</xsl:text>
+			   </xsl:message>
+		   </xsl:if>
+	   </xsl:if>
+   </xsl:template>
+
+   <xsl:template match="xref|link"
+	   xmlns:xlink="http://www.w3.org/1999/xlink">
+	   <xsl:variable name="linkend" select="@linkend"/>
+	   <xsl:variable name="targets" select="id(@linkend)"/>
+	   <xsl:variable name="target" select="$targets[1]"/>
+	   <xsl:variable name="refelem" select="local-name($target)"/>
+
+	   <xsl:call-template name="check.id.unique">
+		   <xsl:with-param name="linkend" select="$linkend"/>
+	   </xsl:call-template>
+
+	   <xsl:call-template name="anchor"/>
+
+	   <xsl:choose>
+		   <xsl:when test="count($targets) = 0">
+			   <xsl:message>
+				   <xsl:text>XRef to nonexistent id: </xsl:text>
+				   <xsl:value-of select="@linkend"/>
+			   </xsl:message>
+			   <xsl:text>[??? </xsl:text>
+			   <xsl:value-of select="@linkend"/>
+			   <xsl:text>]</xsl:text>
+		   </xsl:when>
+		   <xsl:when test="count($targets) > 1">
+			   <xsl:message>Uh, multiple linkends
+				   <xsl:value-of select="@linkend"/>
+			   </xsl:message>
+		   </xsl:when>
+	   </xsl:choose>
+
+	   <xsl:choose>
+		   <xsl:when test='$refelem = "chapter" or $refelem = "preface"'>
+			   <xsl:text>Kapitel </xsl:text>
+		   </xsl:when>
+		   <xsl:when test='$refelem = "section" or $refelem = "sect1" or $refelem = "sect2" or $refelem = "sect3" or $refelem = "sect4"'>
+			   <xsl:text>Abschnitt </xsl:text>
+		   </xsl:when>
+		   <xsl:when test='$refelem = "figure"'>
+			   <xsl:text>Abbildung </xsl:text>
+		   </xsl:when>
+		   <xsl:when test='$refelem = "example"'>
+			   <!-- xsl:choose>
+			   <xsl:when test="$target/@role='listing'">
+				   <xsl:text>Listing </xsl:text>
+			   </xsl:when>
+			   <xsl:otherwise -->
+				   <xsl:text>Listing </xsl:text>
+				   <!-- /xsl:otherwise>
+			   </xsl:choose -->
+		   </xsl:when>
+		   <xsl:when test='$refelem = "table"'>
+			   <xsl:text>Tabelle </xsl:text>
+		   </xsl:when>
+		   <xsl:when test='$refelem = "appendix"'>
+			   <xsl:text>Anhang </xsl:text>
+		   </xsl:when>
+		   <xsl:otherwise>
+			   <xsl:message>
+				   <xsl:text>Cant't handle xref to </xsl:text>
+				   <xsl:value-of select="$refelem"/>
+				   <xsl:text>:</xsl:text>
+				   <xsl:value-of select="@linkend"/>
+			   </xsl:message>
+			   <xsl:text>(??? $refelem)</xsl:text>
+		   </xsl:otherwise>
+	   </xsl:choose>
+
+	   <xref>
+		   <xsl:attribute name="xlink:href"
+			   xmlns:xlink="http://www.w3.org/1999/xlink">
+			   <!-- xsl:attribute name="id" -->
+			   <xsl:value-of select="@linkend"/>
+		   </xsl:attribute>
+	   </xref>
+   </xsl:template>
+
+   <xsl:template match="quote">"<xsl:apply-templates/>"</xsl:template>
+   <!-- xsl:template  
+   match="quote"><quote><xsl:apply-templates/></quote></xsl:template -->
+
+
+   <!-- Literaturverzeichnis -->
+   <xsl:template match="author">
+	   <xsl:apply-templates/>,
+   </xsl:template>
+   <xsl:template match="othername">
+	   <xsl:apply-templates/>
+   </xsl:template>
+   <xsl:template match="firstname">
+	   <xsl:apply-templates/><xsl:text> </xsl:text>
+   </xsl:template>
+   <xsl:template match="surname">
+	   <xsl:apply-templates/>
+   </xsl:template>
+   <xsl:template match="copyright">
+	   <!-- empty -->
+   </xsl:template>
+   <xsl:template match="edition">
+	   <!-- empty -->
+   </xsl:template>
+   <xsl:template match="publisher">
+	   <!-- empty -->
+   </xsl:template>
+   <xsl:template match="pubdate">
+	   <xsl:apply-templates/>
+   </xsl:template>
+   <xsl:template match="isbn">
+	   ISBN <xsl:apply-templates/>
+   </xsl:template>
+
+   <!-- Literaturverzeichnis -->
+   <xsl:template match="bibliography">
+	   <sect>
+		   <xsl:apply-templates/>
+	   </sect>
+   </xsl:template>
+
+   <xsl:template name="process.bibliomixed">
+
+	   <xsl:variable name="bibid" select="id(@id)"/>
+	   <dlitem><dt>[<xsl:value-of select="@id"/>]</dt>
+		   <dd><p><xsl:apply-templates select=".//title"/>,
+				   <xsl:if test="count(.//subtitle)>0">
+					   <xsl:apply-templates select=".//subtitle"/>,
+				   </xsl:if>
+				   <xsl:apply-templates select=".//author"/>
+				   <xsl:apply-templates select=".//publisher"/>
+				   <xsl:apply-templates select=".//pubdate"/>
+				   <xsl:if test="count(.//isbn)>0">
+					   <xsl:text>, </xsl:text>
+					   <xsl:apply-templates select=".//isbn"/>
+				   </xsl:if>
+				   <xsl:text>.</xsl:text></p>
+			   <xsl:call-template name="process.abstract" select=".//abstract"/>
+		   </dd>
+	   </dlitem>
+   </xsl:template>
+
+   <xsl:template match="bibliomixed[1]">
+	   <dl><xsl:call-template name="process.bibliomixed"/>
+		   <xsl:for-each select="following-sibling::bibliomixed">
+			   <xsl:call-template name="process.bibliomixed"/>
+		   </xsl:for-each>
+	   </dl>
+   </xsl:template>
+
+
+   <xsl:template match="bibliomixed/title">
+	   <i><xsl:apply-templates/></i>
+   </xsl:template>
+
+   <xsl:template match="biblioentry/title">
+	   <i><xsl:apply-templates/></i>
+   </xsl:template>
+
+   <xsl:template match="bibliomixed/subtitle">
+	   <xsl:apply-templates/>
+   </xsl:template>
+
+   <xsl:template match="bibliomixed/publisher">
+	   <xsl:apply-templates/>
+   </xsl:template>
+
+   <xsl:template match="publishername">
+	   <xsl:apply-templates/>,
+   </xsl:template>
+   <xsl:template match="publisher/address">
+	   <xsl:apply-templates/>
+   </xsl:template>
+   <xsl:template match="city">
+	   <xsl:apply-templates/>,
+   </xsl:template>
+
+   <xsl:template name="process.abstract">
+	   <xsl:apply-templates select="abstract//para"/>
+   </xsl:template>
+   <xsl:template match="bibliomixed">
+	   <!-- empty -->
+   </xsl:template>
+
+   <xsl:template match="chapterinfo">
+	   <!-- empty -->
+   </xsl:template>
+
+   <xsl:template match="sectioninfo">
+	   <!-- empty -->
+   </xsl:template>
+
+   <xsl:template match="prefaceinfo">
+	   <!-- empty -->
+   </xsl:template>
+
+   <xsl:template match="appendixinfo">
+	   <!-- empty -->
+   </xsl:template>
+
+   <xsl:template match="releaseinfo">
+	   <xsl:comment><xsl:apply-templates/></xsl:comment>
+   </xsl:template>
+
+   <xsl:template match="releaseinfo" mode="comment">
+	   <xsl:text>
+	   </xsl:text>
+	   <xsl:apply-templates/>
+   </xsl:template>
+
+   <xsl:template match="trademark">
+	   <xsl:apply-templates/>
+   </xsl:template>
+
+   <xsl:template match="processing-instruction('linebreak')">
+	   <br/>
+   </xsl:template>
+
+   <xsl:template match="processing-instruction('pearson')">
+	   <xsl:copy/>
+   </xsl:template>
+
+   <xsl:template match="procedure">
+	   <xsl:element name="step">
+		   <xsl:apply-templates/>
+	   </xsl:element>
+   </xsl:template>
+
+   <xsl:template match="procedure/step">
+	   <xsl:apply-templates/><!--FIXME-->
+   </xsl:template>
+
+   <xsl:template match="toc">
+	   <xsl:element name="toc">
+		   <xsl:attribute name="role">
+			   <xsl:text>sect</xsl:text>
+		   </xsl:attribute>
+	   </xsl:element>
+   </xsl:template>
+
+   <xsl:template match="lot">
+	   <xsl:element name="toc">
+		   <xsl:attribute name="role">
+			   <xsl:text>table</xsl:text>
+		   </xsl:attribute>
+	   </xsl:element>
+   </xsl:template>
+
+   <xsl:template match="lof">
+	   <xsl:element name="toc">
+		   <xsl:attribute name="role">
+			   <xsl:text>figure</xsl:text>
+		   </xsl:attribute>
+	   </xsl:element>
+   </xsl:template>
+
+   <xsl:template match="blockquote">
+	   <motto><xsl:apply-templates/></motto>
+   </xsl:template>
+
 	<xsl:template match="authorgroup">
 		<xsl:apply-templates/>
 	</xsl:template>
+</xsl:stylesheet>
+
+
+<!--
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+	xmlns:exsl="http://exslt.org/common"
+	version="1.1"
+	extension-element-prefixes="exsl">
+
+
+	<xsl:output method="xml" indent="yes" encoding="UTF-8" doctype-public="-//Pearson//DTD Books//DE" doctype-system="http://www.pearson.de/pearson.dtd"/>
+
+	<xsl:template match="book">
+		<xsl:element name="book">
+			<xsl:apply-templates/>
+		</xsl:element>
+	</xsl:template>
 
 	<xsl:template match="pubdate">
 		<xsl:element name="publdate">
@@ -74,13 +1051,13 @@
 	</xsl:template>
 
 	<xsl:template match="link">
-		<!--FIXME
+		FIXME
 		<xsl:element name="xref">
 			<xsl:attribute name="xlink:href">
 				<xsl:value-of select="@linkend"/>
 			</xsl:attribute>
 			<xsl:apply-templates/>
-		</xsl:element>-->
+		</xsl:element>
 	</xsl:template>
 	
 	<xsl:template match="acronym"/>
@@ -103,12 +1080,4 @@
 		</xsl:element>
 	</xsl:template>
 
-
-
-	<xsl:template match="@*|node()">
-		<xsl:copy>
-			<xsl:apply-templates select="@*|node()"/>
-		</xsl:copy>
-	</xsl:template>
-
-</xsl:stylesheet>
+</xsl:stylesheet>-->
-- 
cgit