[PATCH sgml-doctools] Set stylesheet to provide XML profiling support

Gaetan Nadon memsize at videotron.ca
Fri Nov 5 18:22:02 PDT 2010


From: Matt Dew <matt at osource.org>

Produces the same generated files when profiling is not used.

Signed-off-by: Gaetan Nadon <memsize at videotron.ca>
---
 Makefile.am                     |    9 +-
 Xorg_profile-chunk-html.xsl     |   17 ++
 Xorg_profile-chunk-xhtml.xsl    |   17 ++
 Xorg_profile-no-chunk-html.xsl  |   17 ++
 Xorg_profile-no-chunk-xhtml.xsl |   17 ++
 Xorg_profile-pdf.xsl            |   17 ++
 Xorg_profile-txt.xsl            |   23 +++
 xorg.xsl                        |  346 +++++++++++++++++++++++++++++++++++----
 8 files changed, 433 insertions(+), 30 deletions(-)
 create mode 100644 Xorg_profile-chunk-html.xsl
 create mode 100644 Xorg_profile-chunk-xhtml.xsl
 create mode 100644 Xorg_profile-no-chunk-html.xsl
 create mode 100644 Xorg_profile-no-chunk-xhtml.xsl
 create mode 100644 Xorg_profile-pdf.xsl
 create mode 100644 Xorg_profile-txt.xsl

diff --git a/Makefile.am b/Makefile.am
index 049abac..152b440 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -21,7 +21,14 @@
 
 sgmldir = $(prefix)/share/sgml/X11
 
-dist_sgml_DATA = defs.ent xorg.css xorg.xsl
+dist_sgml_DATA = 			\
+	defs.ent			\
+	xorg.xsl			\
+	xorg.css			\
+	Xorg_profile-chunk-xhtml.xsl	\
+	Xorg_profile-no-chunk-xhtml.xsl	\
+	Xorg_profile-pdf.xsl		\
+	Xorg_profile-txt.xsl
 
 pkgconfigdir = $(datadir)/pkgconfig
 pkgconfig_DATA = xorg-sgml-doctools.pc
diff --git a/Xorg_profile-chunk-html.xsl b/Xorg_profile-chunk-html.xsl
new file mode 100644
index 0000000..8de16d1
--- /dev/null
+++ b/Xorg_profile-chunk-html.xsl
@@ -0,0 +1,17 @@
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
+<!-- This file is just a placeholder.
+
+     When docbook .xsl and .dtd files are installed locally, catalog files are
+     also installed that point to them.  In these catalog files are rewrite rules
+     that instruct xslt processors, xsltproc in our case, how to substitute
+     local copies of the docbook files for the online versions.
+     Setting XML_CATALOG_FILE tells xsltproc where the master catalog file is.
+
+     The preferred way to refer to the online files would be to directly pass
+     the xsl location to xsltproc.  However, we use xmlto and xmlto requires
+     a local file.   Therefore we use this localfile, to serve as a pointer
+     to the online version.
+
+-->
+<xsl:include href="http://docbook.sourceforge.net/release/xsl/current/html/profile-chunk.xsl"/>
+</xsl:stylesheet>
diff --git a/Xorg_profile-chunk-xhtml.xsl b/Xorg_profile-chunk-xhtml.xsl
new file mode 100644
index 0000000..856e967
--- /dev/null
+++ b/Xorg_profile-chunk-xhtml.xsl
@@ -0,0 +1,17 @@
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
+<!-- This file is just a placeholder.
+
+     When docbook .xsl and .dtd files are installed locally, catalog files are
+     also installed that point to them.  In these catalog files are rewrite rules
+     that instruct xslt processors, xsltproc in our case, how to substitute
+     local copies of the docbook files for the online versions.
+     Setting XML_CATALOG_FILE tells xsltproc where the master catalog file is.
+
+     The preferred way to refer to the online files would be to directly pass
+     the xsl location to xsltproc.  However, we use xmlto and xmlto requires
+     a local file.   Therefore we use this localfile, to serve as a pointer
+     to the online version.
+
+-->
+<xsl:include href="http://docbook.sourceforge.net/release/xsl/current/xhtml/profile-chunk.xsl"/>
+</xsl:stylesheet>
diff --git a/Xorg_profile-no-chunk-html.xsl b/Xorg_profile-no-chunk-html.xsl
new file mode 100644
index 0000000..0a529d3
--- /dev/null
+++ b/Xorg_profile-no-chunk-html.xsl
@@ -0,0 +1,17 @@
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
+<!-- This file is just a placeholder.
+
+     When docbook .xsl and .dtd files are installed locally, catalog files are
+     also installed that point to them.  In these catalog files are rewrite rules
+     that instruct xslt processors, xsltproc in our case, how to substitute
+     local copies of the docbook files for the online versions.
+     Setting XML_CATALOG_FILE tells xsltproc where the master catalog file is.
+
+     The preferred way to refer to the online files would be to directly pass
+     the xsl location to xsltproc.  However, we use xmlto and xmlto requires
+     a local file.   Therefore we use this localfile, to serve as a pointer
+     to the online version.
+
+-->
+<xsl:import href="http://docbook.sourceforge.net/release/xsl/current/html/profile-docbook.xsl"/>
+</xsl:stylesheet>
diff --git a/Xorg_profile-no-chunk-xhtml.xsl b/Xorg_profile-no-chunk-xhtml.xsl
new file mode 100644
index 0000000..00e4f97
--- /dev/null
+++ b/Xorg_profile-no-chunk-xhtml.xsl
@@ -0,0 +1,17 @@
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
+<!-- This file is just a placeholder.
+
+     When docbook .xsl and .dtd files are installed locally, catalog files are
+     also installed that point to them.  In these catalog files are rewrite rules
+     that instruct xslt processors, xsltproc in our case, how to substitute
+     local copies of the docbook files for the online versions.
+     Setting XML_CATALOG_FILE tells xsltproc where the master catalog file is.
+
+     The preferred way to refer to the online files would be to directly pass
+     the xsl location to xsltproc.  However, we use xmlto and xmlto requires
+     a local file.   Therefore we use this localfile, to serve as a pointer
+     to the online version.
+
+-->
+<xsl:import href="http://docbook.sourceforge.net/release/xsl/current/xhtml/profile-docbook.xsl"/>
+</xsl:stylesheet>
diff --git a/Xorg_profile-pdf.xsl b/Xorg_profile-pdf.xsl
new file mode 100644
index 0000000..8b4fe11
--- /dev/null
+++ b/Xorg_profile-pdf.xsl
@@ -0,0 +1,17 @@
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
+<!-- This file is just a placeholder.
+
+     When docbook .xsl and .dtd files are installed locally, catalog files are
+     also installed that point to them.  In these catalog files are rewrite rules
+     that instruct xslt processors, xsltproc in our case, how to substitute
+     local copies of the docbook files for the online versions.
+     Setting XML_CATALOG_FILE tells xsltproc where the master catalog file is.
+
+     The preferred way to refer to the online files would be to directly pass
+     the xsl location to xsltproc.  However, we use xmlto and xmlto requires
+     a local file.   Therefore we use this localfile, to serve as a pointer
+     to the online version.
+
+-->
+<xsl:import href="http://docbook.sourceforge.net/release/xsl/current/fo/profile-docbook.xsl"/>
+</xsl:stylesheet>
diff --git a/Xorg_profile-txt.xsl b/Xorg_profile-txt.xsl
new file mode 100644
index 0000000..852c693
--- /dev/null
+++ b/Xorg_profile-txt.xsl
@@ -0,0 +1,23 @@
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
+<!-- This file is just a placeholder.
+
+     When docbook .xsl and .dtd files are installed locally, catalog files are
+     also installed that point to them.  In these catalog files are rewrite rules
+     that instruct xslt processors, xsltproc in our case, how to substitute
+     local copies of the docbook files for the online versions.
+     Setting XML_CATALOG_FILE tells xsltproc where the master catalog file is.
+
+     The preferred way to refer to the online files would be to directly pass
+     the xsl location to xsltproc.  However, we use xmlto and xmlto requires
+     a local file.   Therefore we use this localfile, to serve as a pointer
+     to the online version.
+
+-->
+<!-- This stylesheet is used to allow profiling for text output.  There is no
+     stylesheet specific to txt for profiling so we use the html one instead.
+
+     We are specifically using html/profile-docbook.xsl. This may change in the
+     future if we determine a better stylesheet to use.
+-->
+<xsl:import href="http://docbook.sourceforge.net/release/xsl/current/html/profile-docbook.xsl"/>
+</xsl:stylesheet>
diff --git a/xorg.xsl b/xorg.xsl
index 0adcdf1..8b1896c 100644
--- a/xorg.xsl
+++ b/xorg.xsl
@@ -1,32 +1,307 @@
-<?xml version="1.0" encoding="utf-8"?>
 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+                xmlns:saxon="http://icl.com/saxon"
+                exclude-result-prefixes="saxon"
                 version="1.0">
-  <!--
-Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
-
-Permission is hereby granted, free of charge, to any person obtaining a
-copy of this software and associated documentation files (the "Software"),
-to deal in the Software without restriction, including without limitation
-the rights to use, copy, modify, merge, publish, distribute, sublicense,
-and/or sell copies of the Software, and to permit persons to whom the
-Software is furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice (including the next
-paragraph) shall be included in all copies or substantial portions of the
-Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
-THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-DEALINGS IN THE SOFTWARE.
-   -->
-
-  <!--
-    Shared stylesheet for X.Org documentation formatted in DocBook/XML
-    -->
+
+
+<xsl:param name="bibliography.numbered" select="1"/>
+
+<!-- Should be base URI for imagedata and so on fixed? -->
+<xsl:param name="profile.baseuri.fixup" select="true()"/>
+
+<!-- Copy all non-element nodes -->
+<xsl:template match="@*|text()|comment()|processing-instruction()" mode="profile">
+  <xsl:copy/>
+</xsl:template>
+
+<!-- Profile elements based on input parameters -->
+<xsl:template match="*" mode="profile">
+
+
+  <xsl:variable name="firstsnap.content">
+    <xsl:if test="@firstsnap">
+      <xsl:call-template name="cross.compare">
+        <xsl:with-param name="a" select="$profile.firstsnap"/>
+        <xsl:with-param name="b" select="@firstsnap"/>
+      </xsl:call-template>
+    </xsl:if>
+  </xsl:variable>
+  <xsl:variable name="firstsnap.ok" select="not(@firstsnap) or not($profile.firstsnap) or
+                                     $firstsnap.content != '' or @firstsnap = ''"/>
+
+  <xsl:variable name="latersnap.content">
+    <xsl:if test="@latersnap">
+      <xsl:call-template name="cross.compare">
+        <xsl:with-param name="a" select="$profile.latersnap"/>
+        <xsl:with-param name="b" select="@latersnap"/>
+      </xsl:call-template>
+    </xsl:if>
+  </xsl:variable>
+  <xsl:variable name="latersnap.ok" select="not(@latersnap) or not($profile.latersnap) or
+                                     $latersnap.content != '' or @latersnap = ''"/>
+
+  <xsl:variable name="snapshot.content">
+    <xsl:if test="@snapshot">
+      <xsl:call-template name="cross.compare">
+        <xsl:with-param name="a" select="$profile.snapshot"/>
+        <xsl:with-param name="b" select="@snapshot"/>
+      </xsl:call-template>
+    </xsl:if>
+  </xsl:variable>
+  <xsl:variable name="snapshot.ok" select="not(@snapshot) or not($profile.snapshot) or
+                                     $snapshot.content != '' or @snapshot = ''"/>
+
+  <xsl:variable name="notsnapshot.content">
+    <xsl:if test="@notsnapshot">
+      <xsl:call-template name="cross.compare">
+        <xsl:with-param name="a" select="$profile.notsnapshot"/>
+        <xsl:with-param name="b" select="@notsnapshot"/>
+      </xsl:call-template>
+    </xsl:if>
+  </xsl:variable>
+  <xsl:variable name="notsnapshot.ok" select="not(@notsnapshot) or not($profile.notsnapshot) or
+                                     $notsnapshot.content != '' or @notsnapshot = ''"/>
+
+  <xsl:variable name="relcandidate.content">
+    <xsl:if test="@relcandidate">
+      <xsl:call-template name="cross.compare">
+        <xsl:with-param name="a" select="$profile.relcandidate"/>
+        <xsl:with-param name="b" select="@relcandidate"/>
+      </xsl:call-template>
+    </xsl:if>
+  </xsl:variable>
+  <xsl:variable name="relcandidate.ok" select="not(@relcandidate) or not($profile.relcandidate) or
+                                     $relcandidate.content != '' or @relcandidate = ''"/>
+
+  <xsl:variable name="release.content">
+    <xsl:if test="@release">
+      <xsl:call-template name="cross.compare">
+        <xsl:with-param name="a" select="$profile.release"/>
+        <xsl:with-param name="b" select="@release"/>
+      </xsl:call-template>
+    </xsl:if>
+  </xsl:variable>
+  <xsl:variable name="release.ok" select="not(@release) or not($profile.release) or
+                                     $release.content != '' or @release = ''"/>
+
+  <xsl:variable name="firstrel.content">
+    <xsl:if test="@firstrel">
+      <xsl:call-template name="cross.compare">
+        <xsl:with-param name="a" select="$profile.firstrel"/>
+        <xsl:with-param name="b" select="@firstrel"/>
+      </xsl:call-template>
+    </xsl:if>
+  </xsl:variable>
+  <xsl:variable name="firstrel.ok" select="not(@firstrel) or not($profile.firstrel) or
+                                     $firstrel.content != '' or @firstrel = ''"/>
+
+  <xsl:variable name="earlyrel.content">
+    <xsl:if test="@earlyrel">
+      <xsl:call-template name="cross.compare">
+        <xsl:with-param name="a" select="$profile.earlyrel"/>
+        <xsl:with-param name="b" select="@earlyrel"/>
+      </xsl:call-template>
+    </xsl:if>
+  </xsl:variable>
+  <xsl:variable name="earlyrel.ok" select="not(@earlyrel) or not($profile.earlyrel) or
+                                     $earlyrel.content != '' or @earlyrel = ''"/>
+
+  <xsl:variable name="laterrel.content">
+    <xsl:if test="@laterrel">
+      <xsl:call-template name="cross.compare">
+        <xsl:with-param name="a" select="$profile.laterrel"/>
+        <xsl:with-param name="b" select="@laterrel"/>
+      </xsl:call-template>
+    </xsl:if>
+  </xsl:variable>
+  <xsl:variable name="laterrel.ok" select="not(@laterrel) or not($profile.laterrel) or
+                                     $laterrel.content != '' or @laterrel = ''"/>
+
+  <xsl:variable name="majorrel.content">
+    <xsl:if test="@majorrel">
+      <xsl:call-template name="cross.compare">
+        <xsl:with-param name="a" select="$profile.majorrel"/>
+        <xsl:with-param name="b" select="@majorrel"/>
+      </xsl:call-template>
+    </xsl:if>
+  </xsl:variable>
+  <xsl:variable name="majorrel.ok" select="not(@majorrel) or not($profile.majorrel) or
+                                     $majorrel.content != '' or @majorrel = ''"/>
+
+  <xsl:variable name="minorrel.content">
+    <xsl:if test="@minorrel">
+      <xsl:call-template name="cross.compare">
+        <xsl:with-param name="a" select="$profile.minorrel"/>
+        <xsl:with-param name="b" select="@minorrel"/>
+      </xsl:call-template>
+    </xsl:if>
+  </xsl:variable>
+  <xsl:variable name="minorrel.ok" select="not(@minorrel) or not($profile.minorrel) or
+                                     $minorrel.content != '' or @minorrel = ''"/>
+
+  <xsl:variable name="fullrel.content">
+    <xsl:if test="@fullrel">
+      <xsl:call-template name="cross.compare">
+        <xsl:with-param name="a" select="$profile.fullrel"/>
+        <xsl:with-param name="b" select="@fullrel"/>
+      </xsl:call-template>
+    </xsl:if>
+  </xsl:variable>
+  <xsl:variable name="fullrel.ok" select="not(@fullrel) or not($profile.fullrel) or
+                                     $fullrel.content != '' or @fullrel = ''"/>
+
+  <xsl:variable name="fullbinaries.content">
+    <xsl:if test="@fullbinaries">
+      <xsl:call-template name="cross.compare">
+        <xsl:with-param name="a" select="$profile.fullbinaries"/>
+        <xsl:with-param name="b" select="@fullbinaries"/>
+      </xsl:call-template>
+    </xsl:if>
+  </xsl:variable>
+  <xsl:variable name="fullbinaries.ok" select="not(@fullbinaries) or not($profile.fullbinaries) or
+                                     $fullbinaries.content != '' or @fullbinaries = ''"/>
+
+  <xsl:variable name="updaterel.content">
+    <xsl:if test="@updaterel">
+      <xsl:call-template name="cross.compare">
+        <xsl:with-param name="a" select="$profile.updaterel"/>
+        <xsl:with-param name="b" select="@updaterel"/>
+      </xsl:call-template>
+    </xsl:if>
+  </xsl:variable>
+  <xsl:variable name="updaterel.ok" select="not(@updaterel) or not($profile.updaterel) or
+                                     $updaterel.content != '' or @updaterel = ''"/>
+
+  <xsl:variable name="prevrelwasupdate.content">
+    <xsl:if test="@prevrelwasupdate">
+      <xsl:call-template name="cross.compare">
+        <xsl:with-param name="a" select="$profile.prevrelwasupdate"/>
+        <xsl:with-param name="b" select="@prevrelwasupdate"/>
+      </xsl:call-template>
+    </xsl:if>
+  </xsl:variable>
+  <xsl:variable name="prevrelwasupdate.ok" select="not(@prevrelwasupdate) or not($profile.prevrelwasupdate) or
+                                     $prevrelwasupdate.content != '' or @prevrelwasupdate = ''"/>
+
+  <xsl:variable name="haverelnotes.content">
+    <xsl:if test="@haverelnotes">
+      <xsl:call-template name="cross.compare">
+        <xsl:with-param name="a" select="$profile.haverelnotes"/>
+        <xsl:with-param name="b" select="@haverelnotes"/>
+      </xsl:call-template>
+    </xsl:if>
+  </xsl:variable>
+  <xsl:variable name="haverelnotes.ok" select="not(@haverelnotes) or not($profile.haverelnotes) or
+                                     $haverelnotes.content != '' or @haverelnotes = ''"/>
+
+  <xsl:variable name="attribute.content">
+    <xsl:if test="@*[local-name()=$profile.attribute]">
+      <xsl:call-template name="cross.compare">
+        <xsl:with-param name="a" select="$profile.value"/>
+        <xsl:with-param name="b" select="@*[local-name()=$profile.attribute]"/>
+      </xsl:call-template>
+    </xsl:if>
+  </xsl:variable>
+  <xsl:variable name="attribute.ok"
+                select="not(@*[local-name()=$profile.attribute]) or
+                        not($profile.value) or $attribute.content != '' or
+                        @*[local-name()=$profile.attribute] = '' or
+                        not($profile.attribute)"/>
+
+<!-- Xorg specific tags -->
+  <xsl:variable name="os.content">
+    <xsl:if test="@os">
+      <xsl:call-template name="cross.compare">
+        <xsl:with-param name="a" select="$profile.os"/>
+        <xsl:with-param name="b" select="@os"/>
+      </xsl:call-template>
+    </xsl:if>
+  </xsl:variable>
+  <xsl:variable name="os.ok" select="not(@os) or not($profile.os) or
+                                     $os.content != '' or @os = ''"/>
+
+<!-- End of Xorg specific tags -->
+
+  <xsl:if test="$firstsnap.ok and
+                $latersnap.ok and
+                $snapshot.ok and
+                $notsnapshot.ok and
+                $relcandidate.ok and
+                $release.ok and
+                $firstrel.ok and
+                $earlyrel.ok and
+                $laterrel.ok and
+                $majorrel.ok and
+                $minorrel.ok and
+                $fullrel.ok and
+                $fullbinaries.ok and
+                $updaterel.ok and
+                $prevrelwasupdate.ok and
+                $os.ok and
+                $haverelnotes.ok">
+    <xsl:copy>
+      <xsl:apply-templates mode="profile" select="@*"/>
+
+      <!-- Entity references must be replaced with filereferences for temporary tree -->
+      <xsl:if test="@entityref and $profile.baseuri.fixup">
+        <xsl:attribute name="fileref">
+          <xsl:value-of select="unparsed-entity-uri(@entityref)"/>
+        </xsl:attribute>
+      </xsl:if>
+
+      <!-- xml:base is eventually added to the root element -->
+      <xsl:if test="not(../..) and $profile.baseuri.fixup">
+        <xsl:call-template name="add-xml-base"/>
+      </xsl:if>
+
+      <xsl:apply-templates select="node()" mode="profile"/>
+    </xsl:copy>
+  </xsl:if>
+</xsl:template>
+
+<!-- Returns non-empty string if list in $b contains one ore more values from list $a -->
+<xsl:template name="cross.compare">
+  <xsl:param name="a"/>
+  <xsl:param name="b"/>
+  <xsl:param name="sep" select="$profile.separator"/>
+  <xsl:variable name="head" select="substring-before(concat($a, $sep), $sep)"/>
+  <xsl:variable name="tail" select="substring-after($a, $sep)"/>
+  <xsl:if test="contains(concat($sep, $b, $sep), concat($sep, $head, $sep))">1</xsl:if>
+  <xsl:if test="$tail">
+    <xsl:call-template name="cross.compare">
+      <xsl:with-param name="a" select="$tail"/>
+      <xsl:with-param name="b" select="$b"/>
+    </xsl:call-template>
+  </xsl:if>
+</xsl:template>
+
+<!--
+<xsl:param name="bibliography.numbered" select="1"/>
+-->
+
+<!-- *********************** -->
+<!-- Profiling parameters -->
+
+<xsl:param name="profile.firstsnap" select="''"/>
+<xsl:param name="profile.latersnap" select="''"/>
+<xsl:param name="profile.snapshot" select="''"/>
+<xsl:param name="profile.notsnapshot" select="''"/>
+<xsl:param name="profile.relcandidate" select="''"/>
+<xsl:param name="profile.release" select="''"/>
+<xsl:param name="profile.firstrel" select="''"/>
+<xsl:param name="profile.earlyrel" select="''"/>
+<xsl:param name="profile.laterrel" select="''"/>
+<xsl:param name="profile.majorrel" select="''"/>
+<xsl:param name="profile.minorrel" select="''"/>
+<xsl:param name="profile.fullrel" select="''"/>
+<xsl:param name="profile.fullbinaries" select="''"/>
+<xsl:param name="profile.updaterel" select="''"/>
+<xsl:param name="profile.prevrelwasupdate" select="''"/>
+<xsl:param name="profile.haverelnotes" select="''"/>
+<xsl:param name="profile.attribute" select="''"/>
+<xsl:param name="profile.separator" select="';'"/>
+
+<!-- HTML specific styling goes under here -->
   <xsl:param name="html.cleanup" select="1"/>
   <xsl:param name="html.stylesheet" select="'xorg.css'"/>
   <xsl:param name="chunker.output.indent">yes</xsl:param>
@@ -37,7 +312,20 @@ DEALINGS IN THE SOFTWARE.
   <xsl:param name="abstract.notitle.enabled" select="1"/>
   <xsl:param name="variablelist.as.table" select="1"/>
   <xsl:param name="use.svg" select="1"/>
+  <xsl:param name="ulink.show" select="0"/>
+  <!-- <xsl:param name="html.stylesheet" select="'xorg.css'"/> -->
+
+  <xsl:param name="index.links.to.section" select="1"/>
+
+<!--  PDF specific styling goes under here -->
+<xsl:attribute-set name="xref.properties">
+  <xsl:attribute name="color">
+    <xsl:choose>
+      <xsl:when test="self::xref">blue</xsl:when>
+      <xsl:otherwise>inherit</xsl:otherwise>
+    </xsl:choose>
+  </xsl:attribute>
+</xsl:attribute-set>
+
 
-  <!-- Index links should point to indexterm location, not start of section -->
-  <xsl:param name="index.links.to.section" select="0"/>
 </xsl:stylesheet>
-- 
1.6.0.4



More information about the xorg-devel mailing list