]> granicus.if.org Git - docbook-dsssl/commitdiff
Stylesheets to allow sgmltag and parameter to link automatically to documentation
authorNorman Walsh <ndw@nwalsh.com>
Thu, 19 Sep 2002 22:05:34 +0000 (22:05 +0000)
committerNorman Walsh <ndw@nwalsh.com>
Thu, 19 Sep 2002 22:05:34 +0000 (22:05 +0000)
xsl/docsrc/.cvsignore [new file with mode: 0644]
xsl/docsrc/Makefile
xsl/docsrc/doc-link-docbook.xsl [new file with mode: 0644]
xsl/docsrc/docbook-elements.xsl [new file with mode: 0644]
xsl/docsrc/make-xsl-params.pl [new file with mode: 0755]
xsl/docsrc/tdg-link.xsl [new file with mode: 0644]
xsl/docsrc/xsl-param-link.xsl [new file with mode: 0644]

diff --git a/xsl/docsrc/.cvsignore b/xsl/docsrc/.cvsignore
new file mode 100644 (file)
index 0000000..79cc3a4
--- /dev/null
@@ -0,0 +1 @@
+xsl-params.xsl
index 04d8ab8aabb593276203ab3933164962b7689a7a..b4e7e3f6dfcc594a1de9f0cbf160eb0bf3a49994 100644 (file)
@@ -1,6 +1,6 @@
 DIRS=common html fo template tools
 
-all:
+all: xsl-params.xsl
        for i in $(DIRS) __bogus__; do \
                if [ $$i != __bogus__ ] ; then \
                        echo "$(MAKE) -C $$i"; $(MAKE) -C $$i; \
@@ -13,3 +13,6 @@ clean:
                        echo "$(MAKE) -C $$i clean"; $(MAKE) -C $$i clean; \
                fi \
        done
+
+xsl-params.xsl: make-xsl-params.pl
+       perl $< > $@
diff --git a/xsl/docsrc/doc-link-docbook.xsl b/xsl/docsrc/doc-link-docbook.xsl
new file mode 100644 (file)
index 0000000..ec26c59
--- /dev/null
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+                version="1.0">
+
+<xsl:import href="../html/docbook.xsl"/>
+<xsl:include href="tdg-link.xsl"/>
+<xsl:include href="xsl-param-link.xsl"/>
+
+</xsl:stylesheet>
diff --git a/xsl/docsrc/docbook-elements.xsl b/xsl/docsrc/docbook-elements.xsl
new file mode 100644 (file)
index 0000000..7dfc3d5
--- /dev/null
@@ -0,0 +1,419 @@
+<?xml version="1.0"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+                xmlns:exsl="http://exslt.org/common"
+                version="1.0">
+
+<xsl:variable name="docbook-element-list">
+  <simplelist>
+    <member>abbrev</member>
+    <member>abstract</member>
+    <member>accel</member>
+    <member>ackno</member>
+    <member>acronym</member>
+    <member>action</member>
+    <member>address</member>
+    <member>affiliation</member>
+    <member>alt</member>
+    <member>anchor</member>
+    <member>answer</member>
+    <member>appendix</member>
+    <member>appendixinfo</member>
+    <member>application</member>
+    <member>area</member>
+    <member>areaset</member>
+    <member>areaspec</member>
+    <member>arg</member>
+    <member>article</member>
+    <member>articleinfo</member>
+    <member>artpagenums</member>
+    <member>attribution</member>
+    <member>audiodata</member>
+    <member>audioobject</member>
+    <member>author</member>
+    <member>authorblurb</member>
+    <member>authorgroup</member>
+    <member>authorinitials</member>
+    <member>beginpage</member>
+    <member>bibliocoverage</member>
+    <member>bibliodiv</member>
+    <member>biblioentry</member>
+    <member>bibliography</member>
+    <member>bibliographyinfo</member>
+    <member>biblioid</member>
+    <member>bibliomisc</member>
+    <member>bibliomixed</member>
+    <member>bibliomset</member>
+    <member>bibliorelation</member>
+    <member>biblioset</member>
+    <member>bibliosource</member>
+    <member>blockinfo</member>
+    <member>blockquote</member>
+    <member>book</member>
+    <member>bookinfo</member>
+    <member>bridgehead</member>
+    <member>callout</member>
+    <member>calloutlist</member>
+    <member>caption</member>
+    <member>caution</member>
+    <member>chapter</member>
+    <member>chapterinfo</member>
+    <member>citation</member>
+    <member>citebiblioid</member>
+    <member>citerefentry</member>
+    <member>citetitle</member>
+    <member>city</member>
+    <member>classname</member>
+    <member>classsynopsis</member>
+    <member>classsynopsisinfo</member>
+    <member>cmdsynopsis</member>
+    <member>co</member>
+    <member>collab</member>
+    <member>collabname</member>
+    <member>colophon</member>
+    <member>colspec</member>
+    <member>command</member>
+    <member>computeroutput</member>
+    <member>confdates</member>
+    <member>confgroup</member>
+    <member>confnum</member>
+    <member>confsponsor</member>
+    <member>conftitle</member>
+    <member>constant</member>
+    <member>constraint</member>
+    <member>constraintdef</member>
+    <member>constructorsynopsis</member>
+    <member>contractnum</member>
+    <member>contractsponsor</member>
+    <member>contrib</member>
+    <member>copyright</member>
+    <member>coref</member>
+    <member>corpauthor</member>
+    <member>corpname</member>
+    <member>country</member>
+    <member>database</member>
+    <member>date</member>
+    <member>dedication</member>
+    <member>destructorsynopsis</member>
+    <member>edition</member>
+    <member>editor</member>
+    <member>email</member>
+    <member>emphasis</member>
+    <member>entry</member>
+    <member>entrytbl</member>
+    <member>envar</member>
+    <member>epigraph</member>
+    <member>equation</member>
+    <member>errorcode</member>
+    <member>errorname</member>
+    <member>errortext</member>
+    <member>errortype</member>
+    <member>example</member>
+    <member>exceptionname</member>
+    <member>fax</member>
+    <member>fieldsynopsis</member>
+    <member>figure</member>
+    <member>filename</member>
+    <member>firstname</member>
+    <member>firstterm</member>
+    <member>footnote</member>
+    <member>footnoteref</member>
+    <member>foreignphrase</member>
+    <member>formalpara</member>
+    <member>funcdef</member>
+    <member>funcparams</member>
+    <member>funcprototype</member>
+    <member>funcsynopsis</member>
+    <member>funcsynopsisinfo</member>
+    <member>function</member>
+    <member>glossary</member>
+    <member>glossaryinfo</member>
+    <member>glossdef</member>
+    <member>glossdiv</member>
+    <member>glossentry</member>
+    <member>glosslist</member>
+    <member>glosssee</member>
+    <member>glossseealso</member>
+    <member>glossterm</member>
+    <member>graphic</member>
+    <member>graphicco</member>
+    <member>group</member>
+    <member>guibutton</member>
+    <member>guiicon</member>
+    <member>guilabel</member>
+    <member>guimenu</member>
+    <member>guimenuitem</member>
+    <member>guisubmenu</member>
+    <member>hardware</member>
+    <member>highlights</member>
+    <member>holder</member>
+    <member>honorific</member>
+    <member>imagedata</member>
+    <member>imageobject</member>
+    <member>imageobjectco</member>
+    <member>important</member>
+    <member>index</member>
+    <member>indexdiv</member>
+    <member>indexentry</member>
+    <member>indexinfo</member>
+    <member>indexterm</member>
+    <member>informalequation</member>
+    <member>informalexample</member>
+    <member>informalfigure</member>
+    <member>informaltable</member>
+    <member>initializer</member>
+    <member>inlineequation</member>
+    <member>inlinegraphic</member>
+    <member>inlinemediaobject</member>
+    <member>interface</member>
+    <member>interfacename</member>
+    <member>invpartnumber</member>
+    <member>isbn</member>
+    <member>issn</member>
+    <member>issuenum</member>
+    <member>itemizedlist</member>
+    <member>itermset</member>
+    <member>jobtitle</member>
+    <member>keycap</member>
+    <member>keycode</member>
+    <member>keycombo</member>
+    <member>keysym</member>
+    <member>keyword</member>
+    <member>keywordset</member>
+    <member>label</member>
+    <member>legalnotice</member>
+    <member>lhs</member>
+    <member>lineage</member>
+    <member>lineannotation</member>
+    <member>link</member>
+    <member>listitem</member>
+    <member>literal</member>
+    <member>literallayout</member>
+    <member>lot</member>
+    <member>lotentry</member>
+    <member>manvolnum</member>
+    <member>markup</member>
+    <member>medialabel</member>
+    <member>mediaobject</member>
+    <member>mediaobjectco</member>
+    <member>member</member>
+    <member>menuchoice</member>
+    <member>methodname</member>
+    <member>methodparam</member>
+    <member>methodsynopsis</member>
+    <member>modespec</member>
+    <member>modifier</member>
+    <member>mousebutton</member>
+    <member>msg</member>
+    <member>msgaud</member>
+    <member>msgentry</member>
+    <member>msgexplan</member>
+    <member>msginfo</member>
+    <member>msglevel</member>
+    <member>msgmain</member>
+    <member>msgorig</member>
+    <member>msgrel</member>
+    <member>msgset</member>
+    <member>msgsub</member>
+    <member>msgtext</member>
+    <member>nonterminal</member>
+    <member>note</member>
+    <member>objectinfo</member>
+    <member>olink</member>
+    <member>ooclass</member>
+    <member>ooexception</member>
+    <member>oointerface</member>
+    <member>option</member>
+    <member>optional</member>
+    <member>orderedlist</member>
+    <member>orgdiv</member>
+    <member>orgname</member>
+    <member>otheraddr</member>
+    <member>othercredit</member>
+    <member>othername</member>
+    <member>pagenums</member>
+    <member>para</member>
+    <member>paramdef</member>
+    <member>parameter</member>
+    <member>part</member>
+    <member>partinfo</member>
+    <member>partintro</member>
+    <member>personblurb</member>
+    <member>personname</member>
+    <member>phone</member>
+    <member>phrase</member>
+    <member>pob</member>
+    <member>postcode</member>
+    <member>preface</member>
+    <member>prefaceinfo</member>
+    <member>primary</member>
+    <member>primaryie</member>
+    <member>printhistory</member>
+    <member>procedure</member>
+    <member>production</member>
+    <member>productionrecap</member>
+    <member>productionset</member>
+    <member>productname</member>
+    <member>productnumber</member>
+    <member>programlisting</member>
+    <member>programlistingco</member>
+    <member>prompt</member>
+    <member>property</member>
+    <member>pubdate</member>
+    <member>publisher</member>
+    <member>publishername</member>
+    <member>pubsnumber</member>
+    <member>qandadiv</member>
+    <member>qandaentry</member>
+    <member>qandaset</member>
+    <member>question</member>
+    <member>quote</member>
+    <member>refclass</member>
+    <member>refdescriptor</member>
+    <member>refentry</member>
+    <member>refentryinfo</member>
+    <member>refentrytitle</member>
+    <member>reference</member>
+    <member>referenceinfo</member>
+    <member>refmeta</member>
+    <member>refmiscinfo</member>
+    <member>refname</member>
+    <member>refnamediv</member>
+    <member>refpurpose</member>
+    <member>refsect1</member>
+    <member>refsect1info</member>
+    <member>refsect2</member>
+    <member>refsect2info</member>
+    <member>refsect3</member>
+    <member>refsect3info</member>
+    <member>refsection</member>
+    <member>refsectioninfo</member>
+    <member>refsynopsisdiv</member>
+    <member>refsynopsisdivinfo</member>
+    <member>releaseinfo</member>
+    <member>remark</member>
+    <member>replaceable</member>
+    <member>returnvalue</member>
+    <member>revdescription</member>
+    <member>revhistory</member>
+    <member>revision</member>
+    <member>revnumber</member>
+    <member>revremark</member>
+    <member>rhs</member>
+    <member>row</member>
+    <member>sbr</member>
+    <member>screen</member>
+    <member>screenco</member>
+    <member>screeninfo</member>
+    <member>screenshot</member>
+    <member>secondary</member>
+    <member>secondaryie</member>
+    <member>sect1</member>
+    <member>sect1info</member>
+    <member>sect2</member>
+    <member>sect2info</member>
+    <member>sect3</member>
+    <member>sect3info</member>
+    <member>sect4</member>
+    <member>sect4info</member>
+    <member>sect5</member>
+    <member>sect5info</member>
+    <member>section</member>
+    <member>sectioninfo</member>
+    <member>see</member>
+    <member>seealso</member>
+    <member>seealsoie</member>
+    <member>seeie</member>
+    <member>seg</member>
+    <member>seglistitem</member>
+    <member>segmentedlist</member>
+    <member>segtitle</member>
+    <member>seriesvolnums</member>
+    <member>set</member>
+    <member>setindex</member>
+    <member>setindexinfo</member>
+    <member>setinfo</member>
+    <member>sgmltag</member>
+    <member>shortaffil</member>
+    <member>shortcut</member>
+    <member>sidebar</member>
+    <member>sidebarinfo</member>
+    <member>simpara</member>
+    <member>simplelist</member>
+    <member>simplemsgentry</member>
+    <member>simplesect</member>
+    <member>spanspec</member>
+    <member>state</member>
+    <member>step</member>
+    <member>street</member>
+    <member>structfield</member>
+    <member>structname</member>
+    <member>subject</member>
+    <member>subjectset</member>
+    <member>subjectterm</member>
+    <member>subscript</member>
+    <member>substeps</member>
+    <member>subtitle</member>
+    <member>superscript</member>
+    <member>surname</member>
+    <member>symbol</member>
+    <member>synopfragment</member>
+    <member>synopfragmentref</member>
+    <member>synopsis</member>
+    <member>systemitem</member>
+    <member>table</member>
+    <member>tbody</member>
+    <member>term</member>
+    <member>tertiary</member>
+    <member>tertiaryie</member>
+    <member>textdata</member>
+    <member>textobject</member>
+    <member>tfoot</member>
+    <member>tgroup</member>
+    <member>thead</member>
+    <member>tip</member>
+    <member>title</member>
+    <member>titleabbrev</member>
+    <member>toc</member>
+    <member>tocback</member>
+    <member>tocchap</member>
+    <member>tocentry</member>
+    <member>tocfront</member>
+    <member>toclevel1</member>
+    <member>toclevel2</member>
+    <member>toclevel3</member>
+    <member>toclevel4</member>
+    <member>toclevel5</member>
+    <member>tocpart</member>
+    <member>token</member>
+    <member>trademark</member>
+    <member>type</member>
+    <member>ulink</member>
+    <member>userinput</member>
+    <member>varargs</member>
+    <member>variablelist</member>
+    <member>varlistentry</member>
+    <member>varname</member>
+    <member>videodata</member>
+    <member>videoobject</member>
+    <member>void</member>
+    <member>volumenum</member>
+    <member>warning</member>
+    <member>wordasword</member>
+    <member>xref</member>
+    <member>year</member>
+  </simplelist>
+</xsl:variable>
+
+<xsl:variable name="docbook-elements"
+              select="exsl:node-set($docbook-element-list)/simplelist"/>
+
+<xsl:template name="is-docbook-element">
+  <xsl:param name="element" select="''"/>
+
+  <xsl:choose>
+    <xsl:when test="$docbook-elements/member[. = $element]">1</xsl:when>
+    <xsl:otherwise>0</xsl:otherwise>
+  </xsl:choose>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/xsl/docsrc/make-xsl-params.pl b/xsl/docsrc/make-xsl-params.pl
new file mode 100755 (executable)
index 0000000..467ee5f
--- /dev/null
@@ -0,0 +1,69 @@
+#!/usr/bin/perl -- # -*- Perl -*- 
+
+# Must be run from the "docssrc" directory
+
+print <<EOF1;
+<?xml version="1.0"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+                xmlns:exsl="http://exslt.org/common"
+                version="1.0">
+
+
+<xsl:variable name="xsl-html-parameters-list">
+  <simplelist>
+EOF1
+
+open (F, "../html/param.xsl");
+read (F, $_, -s "../html/param.xsl");
+close (F);
+foreach my $param (/<xsl:param name="[^\"]+"/gs) {
+    $param =~ /name=\"(.*)\"/;
+    print "    <member>$1</member>\n", 
+}
+
+print <<EOF2;
+  </simplelist>
+</xsl:variable>
+
+<xsl:variable name="xsl-fo-parameters-list">
+  <simplelist>
+EOF2
+
+open (F, "../fo/param.xsl");
+read (F, $_, -s "../fo/param.xsl");
+close (F);
+foreach my $param (/<xsl:param name="[^\"]+"/gs) {
+    $param =~ /name=\"(.*)\"/;
+    print "    <member>$1</member>\n", 
+}
+
+print <<EOF3;
+  </simplelist>
+</xsl:variable>
+
+<xsl:variable name="xsl-html-parameters"
+              select="exsl:node-set(\$xsl-html-parameters-list)/simplelist"/>
+
+<xsl:variable name="xsl-fo-parameters"
+              select="exsl:node-set(\$xsl-fo-parameters-list)/simplelist"/>
+
+<xsl:template name="is-html-parameter">
+  <xsl:param name="param" select="''"/>
+
+  <xsl:choose>
+    <xsl:when test="\$xsl-html-parameters/member[. = \$param]">1</xsl:when>
+    <xsl:otherwise>0</xsl:otherwise>
+  </xsl:choose>
+</xsl:template>
+
+<xsl:template name="is-fo-parameter">
+  <xsl:param name="param" select="''"/>
+
+  <xsl:choose>
+    <xsl:when test="\$xsl-fo-parameters/member[. = \$param]">1</xsl:when>
+    <xsl:otherwise>0</xsl:otherwise>
+  </xsl:choose>
+</xsl:template>
+
+</xsl:stylesheet>
+EOF3
diff --git a/xsl/docsrc/tdg-link.xsl b/xsl/docsrc/tdg-link.xsl
new file mode 100644 (file)
index 0000000..7bd55a7
--- /dev/null
@@ -0,0 +1,55 @@
+<?xml version="1.0"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+                version="1.0">
+
+<xsl:include href="docbook-elements.xsl"/>
+
+<xsl:param name="tdg-baseuri" select="'http://www.docbook.org/tdg/en/html/'"/>
+
+<xsl:template match="sgmltag">
+  <xsl:variable name="tagmarkup">
+    <xsl:apply-imports/>
+  </xsl:variable>
+
+  <xsl:choose>
+    <xsl:when test="not(@class) or @class='element'">
+      <xsl:variable name="base-element">
+        <xsl:choose>
+          <xsl:when test="contains(normalize-space(.), ' ')">
+            <xsl:value-of select="substring-before(normalize-space(.), ' ')"/>
+          </xsl:when>
+          <xsl:otherwise>
+            <xsl:value-of select="normalize-space(.)"/>
+          </xsl:otherwise>
+        </xsl:choose>
+      </xsl:variable>
+
+      <xsl:variable name="element"
+                    select="translate($base-element,
+                                      'ABCDEFGHIJKLMNOPQRSTUVWXYZ',
+                                      'abcdefghijklmnopqrstuvwxyz')"/>
+
+      <xsl:variable name="isdocbook">
+        <xsl:call-template name="is-docbook-element">
+          <xsl:with-param name="element" select="$element"/>
+        </xsl:call-template>
+      </xsl:variable>
+
+      <xsl:choose>
+        <xsl:when test="$isdocbook != 0">
+          <a href="{concat($tdg-baseuri, normalize-space(.))}.html">
+            <xsl:copy-of select="$tagmarkup"/>
+          </a>
+        </xsl:when>
+        <xsl:otherwise>
+          <xsl:copy-of select="$tagmarkup"/>
+        </xsl:otherwise>
+      </xsl:choose>
+    </xsl:when>
+    <xsl:otherwise>
+      <xsl:copy-of select="$tagmarkup"/>
+    </xsl:otherwise>
+  </xsl:choose>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/xsl/docsrc/xsl-param-link.xsl b/xsl/docsrc/xsl-param-link.xsl
new file mode 100644 (file)
index 0000000..f518320
--- /dev/null
@@ -0,0 +1,47 @@
+<?xml version="1.0"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+                version="1.0">
+
+<xsl:include href="xsl-params.xsl"/>
+
+<xsl:param name="html-baseuri"
+           select="'http://docbook.sourceforge.net/release/xsl/current/doc/html/'"/>
+
+<xsl:param name="fo-baseuri"
+           select="'http://docbook.sourceforge.net/release/xsl/current/doc/fo/'"/>
+
+<xsl:template match="parameter">
+  <xsl:variable name="markup">
+    <xsl:apply-imports/>
+  </xsl:variable>
+
+  <xsl:variable name="ishtml">
+    <xsl:call-template name="is-html-parameter">
+      <xsl:with-param name="param" select="normalize-space(.)"/>
+    </xsl:call-template>
+  </xsl:variable>
+
+  <xsl:variable name="isfo">
+    <xsl:call-template name="is-fo-parameter">
+      <xsl:with-param name="param" select="normalize-space(.)"/>
+    </xsl:call-template>
+  </xsl:variable>
+
+  <xsl:choose>
+    <xsl:when test="$ishtml != 0">
+      <a href="{concat($html-baseuri, normalize-space(.))}.html">
+        <xsl:copy-of select="$markup"/>
+      </a>
+    </xsl:when>
+    <xsl:when test="$isfo != 0">
+      <a href="{concat($fo-baseuri, normalize-space(.))}.html">
+        <xsl:copy-of select="$markup"/>
+      </a>
+    </xsl:when>
+    <xsl:otherwise>
+      <xsl:copy-of select="$markup"/>
+    </xsl:otherwise>
+  </xsl:choose>
+</xsl:template>
+
+</xsl:stylesheet>