]> granicus.if.org Git - docbook-dsssl/commitdiff
Support HTML longdesc using textobject content
authorNorman Walsh <ndw@nwalsh.com>
Tue, 16 Oct 2001 20:44:21 +0000 (20:44 +0000)
committerNorman Walsh <ndw@nwalsh.com>
Tue, 16 Oct 2001 20:44:21 +0000 (20:44 +0000)
xsl/html/Makefile
xsl/html/graphics.xsl
xsl/html/param.ent
xsl/html/param.xweb
xsl/params/html.longdesc.link.xml [new file with mode: 0644]
xsl/params/html.longdesc.xml [new file with mode: 0644]

index e4e27e8d70fa8f774a54a592f94ad0f744162f70..0def7ef605c3c5b52ef5d8ece36940bb5a8f8e5c 100644 (file)
@@ -1,6 +1,126 @@
 XSLT=../../cvstools/saxon
 XJPARSE=../../cvstools/xjparse
 
+PARAMS=../params/admon.graphics.xml \
+       ../params/admon.graphics.extension.xml \
+       ../params/admon.graphics.path.xml \
+       ../params/admon.style.xml \
+       ../params/annotate.toc.xml \
+       ../params/author.othername.in.middle.xml \
+       ../params/base.dir.xml \
+       ../params/biblioentry.item.separator.xml \
+       ../params/bibliography.collection.xml \
+       ../params/bridgehead.in.toc.xml \
+       ../params/callout.defaultcolumn.xml \
+       ../params/callout.graphics.xml \
+       ../params/callout.graphics.extension.xml \
+       ../params/callout.graphics.number.limit.xml \
+       ../params/callout.graphics.path.xml \
+       ../params/callout.list.table.xml \
+       ../params/callout.unicode.xml \
+       ../params/callout.unicode.font.xml \
+       ../params/callout.unicode.number.limit.xml \
+       ../params/callout.unicode.start.character.xml \
+       ../params/callouts.extension.xml \
+       ../params/chapter.autolabel.xml \
+       ../params/chunk.first.sections.xml \
+       ../params/chunk.sections.xml \
+       ../params/citerefentry.link.xml \
+       ../params/css.decoration.xml \
+       ../params/default.encoding.xml \
+       ../params/default.table.width.xml \
+       ../params/emphasis.propagates.style.xml \
+       ../params/formal.procedures.xml \
+       ../params/funcsynopsis.decoration.xml \
+       ../params/funcsynopsis.style.xml \
+       ../params/function.parens.xml \
+       ../params/generate.appendix.toc.xml \
+       ../params/generate.article.toc.xml \
+       ../params/generate.book.toc.xml \
+       ../params/generate.chapter.toc.xml \
+       ../params/generate.component.toc.xml \
+       ../params/generate.division.toc.xml \
+       ../params/generate.index.xml \
+       ../params/generate.part.toc.xml \
+       ../params/generate.preface.toc.xml \
+       ../params/generate.qandadiv.toc.xml \
+       ../params/generate.qandaset.toc.xml \
+       ../params/generate.reference.toc.xml \
+       ../params/generate.section.toc.xml \
+       ../params/generate.section.toc.level.xml \
+       ../params/generate.set.toc.xml \
+       ../params/graphic.default.extension.xml \
+       ../params/html.base.xml \
+       ../params/html.longdesc.xml \
+       ../params/html.longdesc.link.xml \
+       ../params/html.ext.xml \
+       ../params/html.stylesheet.xml \
+       ../params/html.stylesheet.type.xml \
+       ../params/inherit.keywords.xml \
+       ../params/label.from.part.xml \
+       ../params/linenumbering.everyNth.xml \
+       ../params/linenumbering.extension.xml \
+       ../params/linenumbering.separator.xml \
+       ../params/linenumbering.width.xml \
+       ../params/link.mailto.url.xml \
+       ../params/make.single.year.ranges.xml \
+       ../params/make.year.ranges.xml \
+       ../params/nominal.table.width.xml \
+       ../params/part.autolabel.xml \
+       ../params/phrase.propagates.style.xml \
+       ../params/preface.autolabel.xml \
+       ../params/process.empty.source.toc.xml \
+       ../params/process.source.toc.xml \
+       ../params/qanda.defaultlabel.xml \
+       ../params/qanda.inherit.numeration.xml \
+       ../params/qandadiv.autolabel.xml \
+       ../params/refentry.generate.name.xml \
+       ../params/refentry.separator.xml \
+       ../params/refentry.xref.manvolnum.xml \
+       ../params/root.filename.xml \
+       ../params/rootid.xml \
+       ../params/runinhead.default.title.end.punct.xml \
+       ../params/runinhead.title.end.punct.xml \
+       ../params/saxon.callouts.xml \
+       ../params/saxon.character.representation.xml \
+       ../params/saxon.linenumbering.xml \
+       ../params/saxon.tablecolumns.xml \
+       ../params/section.autolabel.xml \
+       ../params/section.label.includes.component.label.xml \
+       ../params/show.comments.xml \
+       ../params/show.revisionflag.xml \
+       ../params/spacing.paras.xml \
+       ../params/stylesheet.result.type.xml \
+       ../params/suppress.navigation.xml \
+       ../params/tablecolumns.extension.xml \
+       ../params/textinsert.extension.xml \
+       ../params/toc.list.type.xml \
+       ../params/toc.section.depth.xml \
+       ../params/ulink.target.xml \
+       ../params/use.extensions.xml \
+       ../params/use.id.as.filename.xml \
+       ../params/use.id.function.xml \
+       ../params/using.chunker.xml \
+       ../params/appendix.autolabel.xml \
+       ../params/olink.fragid.xml \
+       ../params/olink.outline.ext.xml \
+       ../params/olink.pubid.xml \
+       ../params/olink.sysid.xml \
+       ../params/olink.resolver.xml \
+       ../params/refentry.separator.xml \
+       ../params/shade.verbatim.xml \
+       ../params/shade.verbatim.style.xml \
+       ../params/ebnf.table.bgcolor.xml \
+       ../params/ebnf.table.border.xml \
+       ../params/autotoc.label.separator.xml \
+       ../params/chunk.datafile.xml \
+       ../params/saxon.character.representation.xml \
+       ../params/generate.legalnotice.link.xml \
+       ../params/table.borders.with.css.xml \
+       ../params/table.border.thickness.xml \
+       ../params/table.border.style.xml \
+       ../params/table.border.color.xml
+
 all: titlepage.templates.xsl param.xsl
 
 xml: param.xml
@@ -10,10 +130,10 @@ html: param.html
 param.html: param.xml
        $(XSLT) $< ../docsrc/lrefentry.xsl $@
 
-param.xml: param.xweb
+param.xml: param.xweb $(PARAMS)
        $(XSLT) $< ../../litprog/wdocbook.xsl $@
 
-param.xsl: param.xweb
+param.xsl: param.xweb $(PARAMS)
        $(XSLT) $< ../../litprog/xtangle.xsl $@
 
 titlepage.templates.xsl: titlepage.templates.xml ../template/titlepage.xsl
index e2adc5dde0d29d571ed231e73771346ca7715791..059042424203a81e38148e7f87ced02b5f2b5060 100644 (file)
@@ -72,6 +72,7 @@
   <!-- handle them all in one place.                             -->
   <xsl:param name="tag" select="'img'"/>
   <xsl:param name="alt"/>
+  <xsl:param name="longdesc"/>
 
   <xsl:variable name="filename">
     <xsl:choose>
     <xsl:attribute name="src">
       <xsl:value-of select="$filename"/>
     </xsl:attribute>
-
     <xsl:if test="$align != ''">
       <xsl:attribute name="align">
         <xsl:value-of select="$align"/>
         <xsl:value-of select="$alt"/>
       </xsl:attribute>
     </xsl:if>
+    <xsl:if test="$longdesc != ''">
+      <xsl:attribute name="longdesc">
+        <xsl:value-of select="$longdesc"/>
+      </xsl:attribute>
+    </xsl:if>
   </xsl:element>
 </xsl:template>
 
       </xsl:choose>
     </xsl:when>
     <xsl:otherwise>
+      <xsl:variable name="longdesc.uri">
+        <xsl:call-template name="longdesc.uri">
+          <xsl:with-param name="mediaobject"
+                          select="ancestor::imageobject/parent::*"/>
+        </xsl:call-template>
+      </xsl:variable>
+
       <xsl:call-template name="process.image">
         <xsl:with-param name="alt">
           <xsl:apply-templates select="(../../textobject/phrase)[1]"/>
         </xsl:with-param>
+        <xsl:with-param name="longdesc">
+          <xsl:call-template name="write.longdesc">
+            <xsl:with-param name="mediaobject"
+                            select="ancestor::imageobject/parent::*"/>
+          </xsl:call-template>
+        </xsl:with-param>
       </xsl:call-template>
+
+      <xsl:if test="$html.longdesc &gt; 0
+                    and $html.longdesc.link &gt; 0">
+        <xsl:call-template name="longdesc.link">
+          <xsl:with-param name="longdesc.uri" select="$longdesc.uri"/>
+        </xsl:call-template>
+      </xsl:if>
     </xsl:otherwise>
   </xsl:choose>
 </xsl:template>
 
 <!-- ==================================================================== -->
 
+<xsl:template name="longdesc.uri">
+  <xsl:param name="mediaobject" select="."/>
+
+  <xsl:if test="$html.longdesc">
+    <xsl:if test="$mediaobject/textobject[not(phrase)]">
+      <xsl:variable name="image-id">
+        <xsl:call-template name="object.id">
+          <xsl:with-param name="object" select="$mediaobject"/>
+        </xsl:call-template>
+      </xsl:variable>
+      <xsl:variable name="filename">
+        <xsl:call-template name="make-relative-filename">
+          <xsl:with-param name="base.dir" select="$base.dir"/>
+          <xsl:with-param name="base.name"
+                          select="concat('ld-',$image-id,$html.ext)"/>
+        </xsl:call-template>
+      </xsl:variable>
+
+      <xsl:value-of select="$filename"/>
+    </xsl:if>
+  </xsl:if>
+</xsl:template>
+
+<xsl:template name="write.longdesc">
+  <xsl:param name="mediaobject" select="."/>
+  <xsl:if test="$html.longdesc">
+    <xsl:if test="$mediaobject/textobject[not(phrase)]">
+      <xsl:variable name="filename">
+        <xsl:call-template name="longdesc.uri">
+          <xsl:with-param name="mediaobject" select="$mediaobject"/>
+        </xsl:call-template>
+      </xsl:variable>
+
+      <xsl:value-of select="$filename"/>
+
+      <xsl:call-template name="write.chunk">
+        <xsl:with-param name="filename" select="$filename"/>
+        <xsl:with-param name="content">
+          <html>
+            <head>
+              <title>Long Description</title>
+            </head>
+            <body>
+              <xsl:call-template name="body.attributes"/>
+              <xsl:for-each select="$mediaobject/textobject[not(phrase)]">
+                <xsl:apply-templates select="./*"/>
+              </xsl:for-each>
+            </body>
+          </html>
+        </xsl:with-param>
+      </xsl:call-template>
+    </xsl:if>
+  </xsl:if>
+</xsl:template>
+
+<xsl:template name="longdesc.link">
+  <xsl:param name="longdesc.uri" select="''"/>
+  <div class="longdesc-link" align="right">
+    <br clear="all"/>
+    <span style="font-size: 8pt;">
+      <xsl:text>[</xsl:text>
+      <a href="{$longdesc.uri}" target="longdesc">D</a>
+      <xsl:text>]</xsl:text>
+    </span>
+  </div>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
 <xsl:template match="videoobject">
   <xsl:apply-templates select="videodata"/>
 </xsl:template>
index 3db540069b1703d353f775ba0f467893e6a86ad7..df8012afc57ac6e6c7eb9e8ae623cd9d77dd56af 100644 (file)
@@ -48,6 +48,8 @@
 <!ENTITY generate.set.toc SYSTEM "../params/generate.set.toc.xml">
 <!ENTITY graphic.default.extension SYSTEM "../params/graphic.default.extension.xml">
 <!ENTITY html.base SYSTEM "../params/html.base.xml">
+<!ENTITY html.longdesc SYSTEM "../params/html.longdesc.xml">
+<!ENTITY html.longdesc.link SYSTEM "../params/html.longdesc.link.xml">
 <!ENTITY html.ext SYSTEM "../params/html.ext.xml">
 <!ENTITY html.stylesheet SYSTEM "../params/html.stylesheet.xml">
 <!ENTITY html.stylesheet.type SYSTEM "../params/html.stylesheet.type.xml">
 <!ENTITY olink.sysid SYSTEM "../params/olink.sysid.xml">
 <!ENTITY olink.resolver SYSTEM "../params/olink.resolver.xml">
 <!ENTITY refentry.separator SYSTEM "../params/refentry.separator.xml">
-<!ENTITY refentry.titlepage SYSTEM "../params/refentry.titlepage.xml">
 <!ENTITY shade.verbatim SYSTEM "../params/shade.verbatim.xml">
 <!ENTITY shade.verbatim.style SYSTEM "../params/shade.verbatim.style.xml">
 <!ENTITY ebnf.table.bgcolor SYSTEM "../params/ebnf.table.bgcolor.xml">
index 196095b9c7a73aac49856c36c0c1daec05888c94..5348244ac430c0bf3e42533f8d14558612ca9e66 100644 (file)
@@ -151,6 +151,8 @@ to be incomplete. Don't forget to read the source, too :-)</para>
 &emphasis.propagates.style;
 &phrase.propagates.style;
 &stylesheet.result.type;
+&html.longdesc;
+&html.longdesc.link;
 </reference>
 
 <reference><title>XSLT Processing</title>
@@ -308,6 +310,8 @@ around all these parameters.</para>
 <src:fragref linkend="graphic.default.extension"/>
 <src:fragref linkend="html.base"/>
 <src:fragref linkend="html.ext"/>
+<src:fragref linkend="html.longdesc"/>
+<src:fragref linkend="html.longdesc.link"/>
 <src:fragref linkend="html.stylesheet"/>
 <src:fragref linkend="html.stylesheet.type"/>
 <src:fragref linkend="inherit.keywords"/>
diff --git a/xsl/params/html.longdesc.link.xml b/xsl/params/html.longdesc.link.xml
new file mode 100644 (file)
index 0000000..522d5d2
--- /dev/null
@@ -0,0 +1,29 @@
+<refentry>
+<refmeta>
+<refentrytitle>html.longdesc.link</refentrytitle>
+<refmiscinfo role="type">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>html.longdesc.link</refname>
+<refpurpose>Should a link to the longdesc be included in the HTML?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment id="html.longdesc.link">
+<xsl:param name="html.longdesc.link" select="$html.longdesc"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsect1><title>Description</title>
+
+<para>If non-zero, links will be created to the
+HTML files created for the
+<sgmltag class="attribute">longdesc</sgmltag> attribute. It makes no
+sense to turn enable this option without also enabling the
+<parameter>$html.longdesc</parameter> parameter.</para>
+
+<para>The <literal>longdesc.link</literal> named template is called
+to construct the link.</para>
+
+</refsect1>
+</refentry>
diff --git a/xsl/params/html.longdesc.xml b/xsl/params/html.longdesc.xml
new file mode 100644 (file)
index 0000000..f8adab8
--- /dev/null
@@ -0,0 +1,27 @@
+<refentry>
+<refmeta>
+<refentrytitle>html.longdesc</refentrytitle>
+<refmiscinfo role="type">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>html.longdesc</refname>
+<refpurpose>Should longdesc URIs be created?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment id="html.longdesc">
+<xsl:param name="html.longdesc" select="1"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsect1><title>Description</title>
+
+<para>If non-zero, HTML files will be created for the
+<sgmltag class="attribute">longdesc</sgmltag> attribute. These files
+are created from the <sgmltag>textobject</sgmltag>s in
+<sgmltag>mediaobject</sgmltag>s and
+<sgmltag>inlinemediaobject</sgmltag>.
+</para>
+
+</refsect1>
+</refentry>