From: Robert S. <bob...@us...> - 2004-08-09 00:31:15
|
Update of /cvsroot/docbook/xsl/fo In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv20049 Modified Files: docbook.xsl fo.xsl xref.xsl param.xweb param.ent Log Message: Extended full olink support to FO output. Index: docbook.xsl =================================================================== RCS file: /cvsroot/docbook/xsl/fo/docbook.xsl,v retrieving revision 1.30 retrieving revision 1.31 diff -u -U2 -r1.30 -r1.31 --- docbook.xsl 29 Jan 2004 14:09:48 -0000 1.30 +++ docbook.xsl 9 Aug 2004 00:31:05 -0000 1.31 @@ -32,4 +32,6 @@ <xsl:include href="../common/subtitles.xsl"/> <xsl:include href="../common/gentext.xsl"/> +<xsl:include href="../common/olink.xsl"/> +<xsl:include href="../common/targets.xsl"/> <xsl:include href="../common/pi.xsl"/> <xsl:include href="autotoc.xsl"/> @@ -69,4 +71,5 @@ <xsl:include href="ebnf.xsl"/> <xsl:include href="docbookng.xsl"/> +<xsl:include href="../html/chunker.xsl"/> <xsl:include href="fop.xsl"/> @@ -116,93 +119,119 @@ <!-- has been converted to use namespaces. i.e., don't hold your breath --> <xsl:variable name="nons"> - <xsl:apply-templates mode="stripNS"/> + <xsl:apply-templates mode="stripNS"/> </xsl:variable> <xsl:apply-templates select="exsl:node-set($nons)"/> </xsl:when> <xsl:otherwise> - <xsl:variable name="document.element" select="*[1]"/> + <xsl:choose> + <xsl:when test="$rootid != ''"> + <xsl:variable name="root.element" select="key('id', $rootid)"/> + <xsl:choose> + <xsl:when test="count($root.element) = 0"> + <xsl:message terminate="yes"> + <xsl:text>ID '</xsl:text> + <xsl:value-of select="$rootid"/> + <xsl:text>' not found in document.</xsl:text> + </xsl:message> + </xsl:when> + <xsl:when test="not(contains($root.elements, concat(' ', local-name($root.element), ' ')))"> + <xsl:message terminate="yes"> + <xsl:text>ERROR: Document root element ($rootid=</xsl:text> + <xsl:value-of select="$rootid"/> + <xsl:text>) for FO output </xsl:text> + <xsl:text>must be one of the following elements:</xsl:text> + <xsl:value-of select="$root.elements"/> + </xsl:message> + </xsl:when> + <!-- Otherwise proceed --> + <xsl:otherwise> + <xsl:if test="$collect.xref.targets = 'yes' or + $collect.xref.targets = 'only'"> + <xsl:apply-templates select="$root.element" + mode="collect.targets"/> + </xsl:if> + <xsl:if test="$collect.xref.targets != 'only'"> + <xsl:apply-templates select="$root.element" + mode="process.root"/> + </xsl:if> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + <!-- Otherwise process the document root element --> + <xsl:otherwise> + <xsl:variable name="document.element" select="*[1]"/> + <xsl:choose> + <xsl:when test="not(contains($root.elements, + concat(' ', local-name($document.element), ' ')))"> + <xsl:message terminate="yes"> + <xsl:text>ERROR: Document root element for FO output </xsl:text> + <xsl:text>must be one of the following elements:</xsl:text> + <xsl:value-of select="$root.elements"/> + </xsl:message> + </xsl:when> + <!-- Otherwise proceed --> + <xsl:otherwise> + <xsl:if test="$collect.xref.targets = 'yes' or + $collect.xref.targets = 'only'"> + <xsl:apply-templates select="/" + mode="collect.targets"/> + </xsl:if> + <xsl:if test="$collect.xref.targets != 'only'"> + <xsl:apply-templates select="/" + mode="process.root"/> + </xsl:if> + </xsl:otherwise> + </xsl:choose> + </xsl:otherwise> + </xsl:choose> + </xsl:otherwise> + </xsl:choose> +</xsl:template> - <xsl:if test="not(contains($root.elements, - concat(' ', local-name($document.element), ' ')))"> - <xsl:message terminate="yes"> - <xsl:text>ERROR: Document root element for FO output </xsl:text> - <xsl:text>must be one of the following elements:</xsl:text> - <xsl:value-of select="$root.elements"/> - </xsl:message> - </xsl:if> +<xsl:template match="*" mode="process.root"> + <xsl:variable name="document.element" select="self::*"/> + + <xsl:call-template name="root.messages"/> + + <xsl:variable name="title"> + <xsl:choose> + <xsl:when test="$document.element/title[1]"> + <xsl:value-of select="$document.element/title[1]"/> + </xsl:when> + <xsl:otherwise>[could not find document title]</xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <fo:root xsl:use-attribute-sets="root.properties"> + <xsl:attribute name="language"> + <xsl:call-template name="l10n.language"> + <xsl:with-param name="target" select="/*[1]"/> + </xsl:call-template> + </xsl:attribute> + + <xsl:if test="$xep.extensions != 0"> + <xsl:call-template name="xep-document-information"/> + </xsl:if> + <xsl:if test="$axf.extensions != 0"> + <xsl:call-template name="axf-document-information"/> + </xsl:if> - <xsl:call-template name="root.messages"/> + <xsl:call-template name="setup.pagemasters"/> - <xsl:variable name="title"> - <xsl:choose> - <xsl:when test="$document.element/title[1]"> - <xsl:value-of select="$document.element/title[1]"/> - </xsl:when> - <xsl:otherwise>[could not find document title]</xsl:otherwise> - </xsl:choose> + <xsl:if test="$fop.extensions != 0"> + <xsl:apply-templates mode="fop.outline"/> + </xsl:if> + <xsl:if test="$xep.extensions != 0"> + <xsl:variable name="bookmarks"> + <xsl:apply-templates mode="xep.outline"/> </xsl:variable> - - <fo:root xsl:use-attribute-sets="root.properties"> - <xsl:attribute name="language"> - <xsl:call-template name="l10n.language"> - <xsl:with-param name="target" select="/*[1]"/> - </xsl:call-template> - </xsl:attribute> - - <xsl:if test="$xep.extensions != 0"> - <xsl:call-template name="xep-document-information"/> - </xsl:if> - <xsl:if test="$axf.extensions != 0"> - <xsl:call-template name="axf-document-information"/> - </xsl:if> - <xsl:call-template name="setup.pagemasters"/> - <xsl:choose> - <xsl:when test="$rootid != ''"> - <xsl:choose> - <xsl:when test="count(key('id',$rootid)) = 0"> - <xsl:message terminate="yes"> - <xsl:text>ID '</xsl:text> - <xsl:value-of select="$rootid"/> - <xsl:text>' not found in document.</xsl:text> - </xsl:message> - </xsl:when> - <xsl:otherwise> - <xsl:if test="$fop.extensions != 0"> - <xsl:apply-templates select="key('id',$rootid)" mode="fop.outline"/> - </xsl:if> - <xsl:if test="$xep.extensions != 0"> - <xsl:variable name="bookmarks"> - <xsl:apply-templates select="key('id',$rootid)" mode="xep.outline"/> - </xsl:variable> - <xsl:if test="string($bookmarks) != ''"> - <rx:outline xmlns:rx="http://www.renderx.com/XSL/Extensions"> - <xsl:copy-of select="$bookmarks"/> - </rx:outline> - </xsl:if> - </xsl:if> - <xsl:apply-templates select="key('id',$rootid)"/> - </xsl:otherwise> - </xsl:choose> - </xsl:when> - <xsl:otherwise> - <xsl:if test="$fop.extensions != 0"> - <xsl:apply-templates mode="fop.outline"/> - </xsl:if> - <xsl:if test="$xep.extensions != 0"> - <xsl:variable name="bookmarks"> - <xsl:apply-templates mode="xep.outline"/> - </xsl:variable> - <xsl:if test="string($bookmarks) != ''"> - <rx:outline xmlns:rx="http://www.renderx.com/XSL/Extensions"> - <xsl:copy-of select="$bookmarks"/> - </rx:outline> - </xsl:if> - </xsl:if> - <xsl:apply-templates/> - </xsl:otherwise> - </xsl:choose> - </fo:root> - </xsl:otherwise> - </xsl:choose> + <xsl:if test="string($bookmarks) != ''"> + <rx:outline xmlns:rx="http://www.renderx.com/XSL/Extensions"> + <xsl:copy-of select="$bookmarks"/> + </rx:outline> + </xsl:if> + </xsl:if> + <xsl:apply-templates select="$document.element"/> + </fo:root> </xsl:template> @@ -229,12 +258,12 @@ <xsl:when test="namespace-uri(.) = 'http://docbook.org/docbook-ng'"> <xsl:element name="{local-name(.)}"> - <xsl:copy-of select="@*"/> - <xsl:apply-templates mode="stripNS"/> + <xsl:copy-of select="@*"/> + <xsl:apply-templates mode="stripNS"/> </xsl:element> </xsl:when> <xsl:otherwise> <xsl:copy> - <xsl:copy-of select="@*"/> - <xsl:apply-templates mode="stripNS"/> + <xsl:copy-of select="@*"/> + <xsl:apply-templates mode="stripNS"/> </xsl:copy> </xsl:otherwise> Index: fo.xsl =================================================================== RCS file: /cvsroot/docbook/xsl/fo/fo.xsl,v retrieving revision 1.5 retrieving revision 1.6 diff -u -U2 -r1.5 -r1.6 --- fo.xsl 14 Mar 2002 18:43:34 -0000 1.5 +++ fo.xsl 9 Aug 2004 00:31:05 -0000 1.6 @@ -59,4 +59,13 @@ </xsl:template> +<xsl:template name="href.target"> + <xsl:param name="context" select="."/> + <xsl:param name="object" select="."/> + <xsl:text>#</xsl:text> + <xsl:call-template name="object.id"> + <xsl:with-param name="object" select="$object"/> + </xsl:call-template> +</xsl:template> + </xsl:stylesheet> Index: xref.xsl =================================================================== RCS file: /cvsroot/docbook/xsl/fo/xref.xsl,v retrieving revision 1.45 retrieving revision 1.46 diff -u -U2 -r1.45 -r1.46 --- xref.xsl 30 Dec 2003 18:41:06 -0000 1.45 +++ xref.xsl 9 Aug 2004 00:31:05 -0000 1.46 @@ -16,9 +16,4 @@ ******************************************************************** --> -<!-- Create keys for quickly looking up olink targets --> -<xsl:key name="targetdoc-key" match="document" use="@targetdoc" /> -<xsl:key name="targetptr-key" match="div|obj" - use="concat(ancestor::document/@targetdoc, '/', @targetptr)" /> - <!-- ==================================================================== --> @@ -102,5 +97,5 @@ or contains(@xrefstyle, 'Page'))) and ( $insert.xref.page.number = 'yes' - or $insert.xref.page.number = '1') + or $insert.xref.page.number = '1') or local-name($target) = 'para'"> <fo:basic-link internal-destination="{@linkend}" @@ -152,11 +147,15 @@ <xsl:param name="referrer"/> <xsl:param name="xrefstyle"/> + <xsl:param name="verbose" select="1"/> + - <xsl:message> - <xsl:text>Don't know what gentext to create for xref to: "</xsl:text> - <xsl:value-of select="name(.)"/> - <xsl:text>"</xsl:text> - </xsl:message> - <xsl:text>???</xsl:text> + <xsl:if test="$verbose != 0"> + <xsl:message> + <xsl:text>Don't know what gentext to create for xref to: "</xsl:text> + <xsl:value-of select="name(.)"/> + <xsl:text>"</xsl:text> + </xsl:message> + <xsl:text>???</xsl:text> + </xsl:if> </xsl:template> @@ -193,4 +192,5 @@ <xsl:param name="referrer"/> <xsl:param name="xrefstyle"/> + <xsl:param name="verbose" select="1"/> <!-- catch-all for things with (possibly optional) titles --> @@ -199,4 +199,5 @@ <xsl:with-param name="xrefstyle" select="$xrefstyle"/> <xsl:with-param name="referrer" select="$referrer"/> + <xsl:with-param name="verbose" select="$verbose"/> </xsl:apply-templates> </xsl:template> @@ -230,4 +231,5 @@ <xsl:param name="referrer"/> <xsl:param name="xrefstyle"/> + <xsl:param name="verbose"/> <xsl:apply-templates select="." mode="object.xref.markup"> @@ -235,4 +237,5 @@ <xsl:with-param name="xrefstyle" select="$xrefstyle"/> <xsl:with-param name="referrer" select="$referrer"/> + <xsl:with-param name="verbose" select="$verbose"/> </xsl:apply-templates> </xsl:template> @@ -376,4 +379,5 @@ <xsl:param name="referrer"/> <xsl:param name="xrefstyle"/> + <xsl:param name="verbose" select="1"/> <xsl:apply-templates select="." mode="object.xref.markup"> @@ -381,4 +385,5 @@ <xsl:with-param name="xrefstyle" select="$xrefstyle"/> <xsl:with-param name="referrer" select="$referrer"/> + <xsl:with-param name="verbose" select="$verbose"/> </xsl:apply-templates> </xsl:template> @@ -413,4 +418,5 @@ <xsl:param name="referrer"/> <xsl:param name="xrefstyle"/> + <xsl:param name="verbose" select="1"/> <xsl:apply-templates select="." mode="object.xref.markup"> @@ -418,4 +424,5 @@ <xsl:with-param name="xrefstyle" select="$xrefstyle"/> <xsl:with-param name="referrer" select="$referrer"/> + <xsl:with-param name="verbose" select="$verbose"/> </xsl:apply-templates> </xsl:template> @@ -424,4 +431,5 @@ <xsl:param name="referrer"/> <xsl:param name="xrefstyle"/> + <xsl:param name="verbose" select="1"/> <xsl:apply-templates select="." mode="object.xref.markup"> @@ -429,4 +437,5 @@ <xsl:with-param name="xrefstyle" select="$xrefstyle"/> <xsl:with-param name="referrer" select="$referrer"/> + <xsl:with-param name="verbose" select="$verbose"/> </xsl:apply-templates> </xsl:template> @@ -660,5 +669,5 @@ <xsl:choose> <xsl:when test="$ulink.footnotes != 0 and not(ancestor::footnote)"> - <xsl:text> </xsl:text> + <xsl:text> </xsl:text> <fo:footnote> <xsl:call-template name="ulink.footnote.number"/> @@ -719,148 +728,210 @@ </xsl:template> - -<xsl:template match="olink"> - <xsl:param name="target.database" - select="document($target.database.document, /)"/> +<xsl:template match="olink" name="olink"> + <xsl:call-template name="anchor"/> <xsl:variable name="localinfo" select="@localinfo"/> - <!-- Olink that points to internal id can be a link --> - <xsl:variable name="linkend"> - <xsl:choose> - <xsl:when test="@targetdoc and not(@targetptr)" > - <xsl:message>Olink missing @targetptr attribute value</xsl:message> - </xsl:when> - <xsl:when test="not(@targetdoc) and @targetptr" > - <xsl:message>Olink missing @targetdoc attribute value</xsl:message> - </xsl:when> - <xsl:when test="@targetdoc and @targetptr"> - <xsl:if test="$current.docid = @targetdoc"> - <xsl:if test="id(@targetptr)"> - <xsl:value-of select="@targetptr"/> - </xsl:if> - </xsl:if> - </xsl:when> - </xsl:choose> - </xsl:variable> - <xsl:choose> - <xsl:when test="$linkend != ''"> - <fo:basic-link internal-destination="{$linkend}" - xsl:use-attribute-sets="xref.properties"> - <xsl:call-template name="olink.hottext"> + <!-- olinks resolved by stylesheet and target database --> + <xsl:when test="@targetdoc or @targetptr" > + <xsl:variable name="targetdoc.att" select="@targetdoc"/> + <xsl:variable name="targetptr.att" select="@targetptr"/> + + <xsl:variable name="olink.lang"> + <xsl:call-template name="l10n.language"> + <xsl:with-param name="xref-context" select="true()"/> + </xsl:call-template> + </xsl:variable> + + <xsl:variable name="target.database.filename"> + <xsl:call-template name="select.target.database"> + <xsl:with-param name="targetdoc.att" select="$targetdoc.att"/> + <xsl:with-param name="targetptr.att" select="$targetptr.att"/> + <xsl:with-param name="olink.lang" select="$olink.lang"/> + </xsl:call-template> + </xsl:variable> + + <xsl:variable name="target.database" + select="document($target.database.filename, /)"/> + + <xsl:if test="$olink.debug != 0"> + <xsl:message> + <xsl:text>Olink debug: root element of target.database is '</xsl:text> + <xsl:value-of select="local-name($target.database/*[1])"/> + <xsl:text>'.</xsl:text> + </xsl:message> + </xsl:if> + + <xsl:variable name="olink.key"> + <xsl:call-template name="select.olink.key"> + <xsl:with-param name="targetdoc.att" select="$targetdoc.att"/> + <xsl:with-param name="targetptr.att" select="$targetptr.att"/> + <xsl:with-param name="olink.lang" select="$olink.lang"/> <xsl:with-param name="target.database" select="$target.database"/> </xsl:call-template> - </fo:basic-link> - </xsl:when> - <xsl:otherwise> - <xsl:call-template name="olink.hottext"> - <xsl:with-param name="target.database" select="$target.database"/> - </xsl:call-template> - - <!-- Append other document title if appropriate --> - <xsl:if test="@targetdoc and @targetptr and $olink.doctitle != 0 - and $current.docid != '' and $current.docid != @targetdoc"> - <xsl:variable name="doctitle"> - <xsl:variable name="seek.targetdoc" select="@targetdoc"/> - <xsl:for-each select="$target.database" > - <xsl:value-of select="key('targetdoc-key', $seek.targetdoc)/div[1]/ttl" /> - </xsl:for-each> - </xsl:variable> - <xsl:if test="$doctitle != ''"> - <xsl:text> (</xsl:text><xsl:value-of select="$doctitle"/><xsl:text>)</xsl:text> - </xsl:if> + </xsl:variable> + + <xsl:if test="string-length($olink.key) = 0"> + <xsl:message> + <xsl:text>Error: unresolved olink: </xsl:text> + <xsl:text>targetdoc/targetptr = '</xsl:text> + <xsl:value-of select="$targetdoc.att"/> + <xsl:text>/</xsl:text> + <xsl:value-of select="$targetptr.att"/> + <xsl:text>'.</xsl:text> + </xsl:message> </xsl:if> - </xsl:otherwise> - </xsl:choose> -</xsl:template> + <xsl:variable name="href"> + <xsl:call-template name="make.olink.href"> + <xsl:with-param name="olink.key" select="$olink.key"/> + <xsl:with-param name="target.database" select="$target.database"/> + </xsl:call-template> + </xsl:variable> + + <!-- Olink that points to internal id can be a link --> + <xsl:variable name="linkend"> + <xsl:call-template name="olink.as.linkend"> + <xsl:with-param name="olink.key" select="$olink.key"/> + <xsl:with-param name="olink.lang" select="$olink.lang"/> + <xsl:with-param name="target.database" select="$target.database"/> + </xsl:call-template> + </xsl:variable> -<xsl:template name="olink.hottext"> - <xsl:param name="target.database"/> + <xsl:variable name="hottext"> + <xsl:call-template name="olink.hottext"> + <xsl:with-param name="olink.key" select="$olink.key"/> + <xsl:with-param name="olink.lang" select="$olink.lang"/> + <xsl:with-param name="target.database" select="$target.database"/> + </xsl:call-template> + </xsl:variable> - <xsl:choose> - <!-- If it has elements or text (not just PI or comment) --> - <xsl:when test="child::text() or child::*"> - <xsl:apply-templates/> - </xsl:when> - <xsl:when test="@targetdoc and @targetptr"> - <!-- Get the xref text for this record --> - <xsl:variable name="seek.targetdoc" select="@targetdoc"/> - <xsl:variable name="seek.targetptr" select="@targetptr"/> - <xsl:variable name="xref.text" > - <xsl:for-each select="$target.database" > - <xsl:value-of select="key('targetptr-key', concat($seek.targetdoc, '/', $seek.targetptr))/xreftext"/> - </xsl:for-each> + <xsl:variable name="olink.docname.citation"> + <xsl:call-template name="olink.document.citation"> + <xsl:with-param name="olink.key" select="$olink.key"/> + <xsl:with-param name="target.database" select="$target.database"/> + <xsl:with-param name="olink.lang" select="$olink.lang"/> + </xsl:call-template> + </xsl:variable> + + <xsl:variable name="olink.page.citation"> + <xsl:call-template name="olink.page.citation"> + <xsl:with-param name="olink.key" select="$olink.key"/> + <xsl:with-param name="target.database" select="$target.database"/> + <xsl:with-param name="olink.lang" select="$olink.lang"/> + <xsl:with-param name="linkend" select="$linkend"/> + </xsl:call-template> </xsl:variable> <xsl:choose> - <xsl:when test="$use.local.olink.style != 0"> - <!-- Get the element name and lang for this targetptr --> - <xsl:variable name="element" > - <xsl:for-each select="$target.database" > - <xsl:value-of select="key('targetptr-key', concat($seek.targetdoc, '/', $seek.targetptr))/@element"/> - </xsl:for-each> - </xsl:variable> - - <xsl:variable name="lang"> - <xsl:variable name="candidate"> - <xsl:for-each select="$target.database" > - <xsl:value-of select="key('targetptr-key', concat($seek.targetdoc, '/', $seek.targetptr))/@lang"/> - </xsl:for-each> - </xsl:variable> - <xsl:choose> - <xsl:when test="$candidate != ''"> - <xsl:value-of select="$candidate"/> - </xsl:when> - <xsl:otherwise> - <xsl:value-of select="'en'"/> - </xsl:otherwise> - </xsl:choose> - </xsl:variable> - <xsl:variable name="template"> - <xsl:call-template name="gentext.template"> - <xsl:with-param name="context" select="'title'"/> - <xsl:with-param name="name" select="$element"/> - <xsl:with-param name="lang" select="$lang"/> - </xsl:call-template> - </xsl:variable> - <xsl:call-template name="substitute-markup"> - <xsl:with-param name="template" select="$template"/> - <xsl:with-param name="title"> - <xsl:for-each select="$target.database" > - <xsl:value-of select="key('targetptr-key', concat($seek.targetdoc, '/', $seek.targetptr))/ttl"/> - </xsl:for-each> - </xsl:with-param> - <xsl:with-param name="label"> - <xsl:for-each select="$target.database" > - <xsl:value-of select="key('targetptr-key', concat($seek.targetdoc, '/', $seek.targetptr))/@number"/> - </xsl:for-each> - </xsl:with-param> - </xsl:call-template> + <xsl:when test="$linkend != ''"> + <fo:basic-link internal-destination="{$linkend}" + xsl:use-attribute-sets="xref.properties"> + <xsl:copy-of select="$hottext"/> + <xsl:copy-of select="$olink.page.citation"/> + </fo:basic-link> </xsl:when> - <xsl:when test="$xref.text !=''"> - <xsl:value-of select="$xref.text"/> + <xsl:when test="$href != ''"> + <xsl:choose> + <xsl:when test="$xep.extensions != 0"> + <fo:basic-link external-destination="url({$href})" + xsl:use-attribute-sets="olink.properties"> + <xsl:copy-of select="$hottext"/> + </fo:basic-link> + <xsl:copy-of select="$olink.page.citation"/> + <xsl:copy-of select="$olink.docname.citation"/> + </xsl:when> + <xsl:when test="$axf.extensions != 0"> + <fo:basic-link external-destination="{$href}" + xsl:use-attribute-sets="xref.properties" + show-destination="replace"> + <xsl:copy-of select="$hottext"/> + </fo:basic-link> + <xsl:copy-of select="$olink.page.citation"/> + <xsl:copy-of select="$olink.docname.citation"/> + </xsl:when> + <xsl:otherwise> + <fo:basic-link external-destination="{$href}" + xsl:use-attribute-sets="xref.properties" + show-destination="replace"> + <xsl:copy-of select="$hottext"/> + </fo:basic-link> + <xsl:copy-of select="$olink.page.citation"/> + <xsl:copy-of select="$olink.docname.citation"/> + </xsl:otherwise> + </xsl:choose> </xsl:when> <xsl:otherwise> - <xsl:message>Olink error: no generated text for targetdoc/targetptr = <xsl:value-of select="@targetdoc"/>/<xsl:value-of select="@targetptr"/></xsl:message> - <xsl:text>????</xsl:text> + <xsl:copy-of select="$hottext"/> + <xsl:copy-of select="$olink.page.citation"/> + <xsl:copy-of select="$olink.docname.citation"/> </xsl:otherwise> </xsl:choose> </xsl:when> + + <!-- olink never implemented in FO for old olink entity syntax --> <xsl:otherwise> - <xsl:text>????</xsl:text> -<!-- - <xsl:call-template name="olink.outline"> - <xsl:with-param name="outline.base.uri" - select="unparsed-entity-uri(@targetdocent)"/> - <xsl:with-param name="localinfo" select="@localinfo"/> - <xsl:with-param name="return" select="'xreftext'"/> - </xsl:call-template> ---> + <xsl:apply-templates/> </xsl:otherwise> </xsl:choose> </xsl:template> +<xsl:template match="*" mode="insert.olink.docname.markup"> + <xsl:param name="docname" select="''"/> + + <fo:inline font-style="italic"> + <xsl:value-of select="$docname"/> + </fo:inline> + +</xsl:template> + +<!-- This prevents error message when processing olinks with xrefstyle --> +<xsl:template match="olink" mode="object.xref.template"/> + + +<xsl:template name="olink.as.linkend"> + <xsl:param name="olink.key" select="''"/> + <xsl:param name="olink.lang" select="''"/> + <xsl:param name="target.database" select="NotANode"/> + + <xsl:variable name="targetdoc"> + <xsl:value-of select="substring-before($olink.key, '/')"/> + </xsl:variable> + + <xsl:variable name="targetptr"> + <xsl:value-of + select="substring-before(substring-after($olink.key, '/'), '/')"/> + </xsl:variable> + + <xsl:variable name="target.lang"> + <xsl:variable name="candidate"> + <xsl:for-each select="$target.database" > + <xsl:value-of + select="key('targetptr-key', $olink.key)/@lang" /> + </xsl:for-each> + </xsl:variable> + <xsl:choose> + <xsl:when test="$candidate != ''"> + <xsl:value-of select="$candidate"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$olink.lang"/> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <xsl:if test="$current.docid = $targetdoc and + $olink.lang = $target.lang"> + <xsl:variable name="targets" select="key('id',$targetptr)"/> + <xsl:variable name="target" select="$targets[1]"/> + <xsl:if test="$target"> + <xsl:value-of select="$targetptr"/> + </xsl:if> + </xsl:if> + +</xsl:template> + + <xsl:template name="olink.outline"> <xsl:message terminate="yes">Fatal error: what is this supposed to do?</xsl:message> Index: param.xweb =================================================================== RCS file: /cvsroot/docbook/xsl/fo/param.xweb,v retrieving revision 1.78 retrieving revision 1.79 diff -u -U2 -r1.78 -r1.79 --- param.xweb 21 Jun 2004 00:35:34 -0000 1.78 +++ param.xweb 9 Aug 2004 00:31:05 -0000 1.79 @@ -176,8 +176,17 @@ <reference><title>Linking</title> -&target.database.document; -&use.local.olink.style; ¤t.docid; +&collect.xref.targets; +&insert.olink.page.number; +&insert.olink.pdf.frag; +&olink.base.uri; +&olink.debug; &olink.doctitle; +&olink.lang.fallback.sequence; +&olink.properties; +&prefer.internal.olink; +&target.database.document; +&targets.filename; +&use.local.olink.style; </reference> @@ -524,4 +533,5 @@ <src:fragref linkend="callouts.extension.frag"/> <src:fragref linkend="chapter.autolabel.frag"/> +<src:fragref linkend="collect.xref.targets.frag"/> <src:fragref linkend="column.count.back.frag"/> <src:fragref linkend="column.count.body.frag"/> @@ -617,4 +627,11 @@ <src:fragref linkend="normal.para.spacing.frag"/> <src:fragref linkend="olink.doctitle.frag"/> +<src:fragref linkend="olink.base.uri.frag"/> +<src:fragref linkend="olink.debug.frag"/> +<src:fragref linkend="olink.properties.frag"/> +<src:fragref linkend="olink.lang.fallback.sequence.frag"/> +<src:fragref linkend="prefer.internal.olink.frag"/> +<src:fragref linkend="insert.olink.page.number.frag"/> +<src:fragref linkend="insert.olink.pdf.frag.frag"/> <src:fragref linkend="page.height.frag"/> <src:fragref linkend="page.height.portrait.frag"/> @@ -709,4 +726,5 @@ <src:fragref linkend="table.table.properties.frag"/> <src:fragref linkend="target.database.document.frag"/> +<src:fragref linkend="targets.filename.frag"/> <src:fragref linkend="textdata.default.encoding.frag"/> <src:fragref linkend="tex.math.delims.frag"/> Index: param.ent =================================================================== RCS file: /cvsroot/docbook/xsl/fo/param.ent,v retrieving revision 1.68 retrieving revision 1.69 diff -u -U2 -r1.68 -r1.69 --- param.ent 21 Jun 2004 00:35:34 -0000 1.68 +++ param.ent 9 Aug 2004 00:31:05 -0000 1.69 @@ -93,4 +93,13 @@ <!ENTITY normal.para.spacing SYSTEM "../params/normal.para.spacing.xml"> <!ENTITY olink.doctitle SYSTEM "../params/olink.doctitle.xml"> +<!ENTITY olink.base.uri SYSTEM "../params/olink.base.uri.xml"> +<!ENTITY olink.properties SYSTEM "../params/olink.properties.xml"> +<!ENTITY olink.debug SYSTEM "../params/olink.debug.xml"> +<!ENTITY collect.xref.targets SYSTEM "../params/collect.xref.targets.xml"> +<!ENTITY targets.filename SYSTEM "../params/targets.filename.xml"> +<!ENTITY prefer.internal.olink SYSTEM "../params/prefer.internal.olink.xml"> +<!ENTITY insert.olink.pdf.frag SYSTEM "../params/insert.olink.pdf.frag.xml"> +<!ENTITY insert.olink.page.number SYSTEM "../params/insert.olink.page.number.xml"> +<!ENTITY olink.lang.fallback.sequence SYSTEM "../params/olink.lang.fallback.sequence.xml"> <!ENTITY page.height SYSTEM "../params/page.height.xml"> <!ENTITY page.height.portrait SYSTEM "../params/page.height.portrait.xml"> |