source: docs/Balisage13/balisage-1-3-xsl/balisage-proceedings-html.xsl @ 4857

Last change on this file since 4857 was 3040, checked in by ksherdy, 6 years ago

Added .css files to output directory. Formatting updates.

File size: 16.0 KB
Line 
1<?xml version="1.0"?>
2<!-- ============================================================= -->
3<!-- MODULE:    Balisage Conference Paper XSLT                     -->
4<!-- VERSION:   1.2                                                -->
5<!-- DATE:      April, 2010                                        -->
6<!--                                                               -->
7<!-- ============================================================= -->
8
9<!-- ============================================================= -->
10<!-- SYSTEM:    Balisage: The Markup Conference papers             -->
11<!--                                                               -->
12<!-- PURPOSE:   Created for HTML production of papers in the       -->
13<!--            Proceedings of Balisage: The Markup Conference     -->
14<!--                                                               -->
15<!-- CREATED BY:                                                   -->
16<!--            Mulberry Technologies, Inc. (wap)                  -->
17<!--            17 West Jefferson Street, Suite 207                -->
18<!--            Rockville, MD  20850  USA                          -->
19<!--            Phone:  +1 301/315-9631                            -->
20<!--            Fax:    +1 301/315-8285                            -->
21<!--            e-mail: info@mulberrytech.com                      -->
22<!--            WWW:    http://www.mulberrytech.com                -->
23<!--                                                               -->
24<!-- ============================================================= -->
25
26<!-- ============================================================= -->
27<!--                    DESIGN CONSIDERATIONS                      -->
28<!-- ============================================================= -->
29<!--
30  This stylesheet is designed to handle the subset of Docbook V5
31  defined by the Balisage-1-2.dtd. It is implemented in XSLT 1.0
32  without extensions, and should work in any XSLT 1.0 processor.
33 
34  This stylesheet depends on balisage-html.xsl (in the same
35  subdirectory) to provide for basic display logic; use that
36  stylesheet alone for a simple "preview" rendition of a Balisage
37  paper. Use this stylesheet if you want to see a paper as it
38  would appear in the published Conference Proceedings
39  (at http://balisage.net/Proceedings/index.html).                 -->
40
41<!-- ============================================================= -->
42<!--                    OWNERSHIP AND LICENSES                     -->
43<!-- ============================================================= -->
44<!--
45 
46  This stylesheet was developed by, and is copyright 2010
47  Mulberry Technologies, Inc. It is released for use by authors in
48  production of papers submitted to Balisage: The Markup Conference
49  (http://www.balisage.net)                                        -->
50<!-- ============================================================= -->
51<xsl:stylesheet version="1.0"
52  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
53  xmlns:d="http://docbook.org/ns/docbook"
54  exclude-result-prefixes="d">
55
56  <xsl:import href="balisage-html.xsl"/>
57
58  <xsl:output method="html" encoding="UTF-8"
59    doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN"
60    doctype-system="http://www.w3.org/TR/html4/loose.dtd" />
61
62  <xsl:param name="css-file" select="'balisage-proceedings.css'"/>
63
64  <xsl:param name="balisage-logo"
65    select="'http://balisage.net/Logo/BalisageSeries-logo.png'"/>
66 
67  <xsl:variable name="stylesheet-version">1.2</xsl:variable>
68 
69  <xsl:variable name="open-icon" select="'minus.png'"/>
70 
71  <xsl:variable name="closed-icon" select="'plus.png'"/>
72
73  <xsl:variable name="ex-icon" select="'eks.png'"/>
74 
75  <xsl:variable name="control" select="/control"/>
76  <!-- $control contains a 'control' document element if the source
77       document is a control file -->
78 
79  <xsl:template match="d:article">
80    <html lang="en">
81      <head>
82        <title>
83          <xsl:call-template name="html-title"/>
84        </title>
85        <link rel="stylesheet" href="{$css-file}" type="text/css"/>
86        <meta name="generator"
87          content="Balisage Conference Proceedings XSLT (v{$stylesheet-version})"/>
88        <xsl:call-template name="proceedings-meta"/>
89        <xsl:call-template name="script"/>
90      </head>
91      <body>
92        <xsl:call-template name="inline-citations"/>
93        <xsl:call-template name="page-apparatus"/>
94        <div id="main">
95          <div class="article">
96            <xsl:call-template name="article-contents"/>
97          </div>
98          <xsl:call-template name="page-footer"/>
99        </div>
100      </body>
101    </html>
102  </xsl:template>
103 
104  <!-- only used in the production stylesheet: -->
105  <xsl:template name="proceedings-meta"/>
106 
107  <xsl:template name="inline-citations">
108    <!-- generates inline popup boxes for citation references -->
109    <xsl:apply-templates select="//d:bibliomixed" mode="inline-citation"/>
110  </xsl:template>
111 
112  <xsl:template name="page-apparatus">
113    <div id="mast">
114      <xsl:call-template name="mast-contents"/>
115    </div>
116    <div id="navbar">
117      <!-- The navigation bar is blank in this preview -->
118    </div>
119    <xsl:call-template name="page-header"/>
120  </xsl:template>
121 
122  <xsl:template name="mast-contents">
123    <div class="content">
124      <xsl:apply-templates mode="titlepage" select="d:title | d:subtitle"/>
125      <xsl:apply-templates mode="titlepage" select="/d:article/d:info/d:author"/>
126      <xsl:apply-templates mode="mast" select="/d:article/d:info/d:legalnotice"/>
127      <xsl:apply-templates select="/d:article/d:info/d:abstract" mode="mast"/>
128      <xsl:call-template name="toc"/>
129      <xsl:apply-templates select="/d:article/d:info/d:author" mode="mast"/>
130    </div>
131  </xsl:template>
132 
133  <xsl:template name="page-header">
134    <div id="balisage-header" style="background-color: #6699CC">
135      <a class="quiet" href="http://www.balisage.net">
136        <img style="float:right;border:none" alt="Balisage logo" height="130"
137          src="{$balisage-logo}"/>
138      </a>
139      <h2 class="page-header">Balisage: The Markup Conference</h2>
140      <h1 class="page-header">Proceedings preview</h1>
141    </div>
142  </xsl:template>
143 
144  <xsl:template name="article-contents">
145    <xsl:apply-templates select="d:title | d:subtitle" mode="titlepage"/>
146    <xsl:apply-templates/>
147    <xsl:call-template name="footnotes"/>
148  </xsl:template>
149 
150  <xsl:template name="page-footer">
151    <xsl:call-template name="author-keywords"/>
152    <div id="balisage-footer">
153      <h3 style="font-family: serif; margin:0.25em; font-style: italic">
154        <xsl:text>Balisage Series on Markup Technologies</xsl:text>
155      </h3>
156    </div>
157  </xsl:template>
158 
159  <xsl:template name="author-keywords">
160    <xsl:for-each
161      select="/d:article/d:info/d:keywordset[@role='author'][d:keyword[normalize-space(.)]]">
162      <div id="author-keywords">
163        <h5 class="keywords">
164          <span class="label">Author's keywords for this paper: </span>
165          <xsl:for-each select="d:keyword[normalize-space()]">
166            <span class="keyword">
167              <xsl:apply-templates/>
168            </span>
169            <xsl:if test="not(position() = last())">; </xsl:if>
170          </xsl:for-each>
171        </h5>
172      </div>
173    </xsl:for-each>
174  </xsl:template> 
175 
176  <xsl:template match="d:author" mode="mast">
177    <xsl:if test="normalize-space(d:personblurb)">
178    <div class="mast-box">
179      <p class="title">
180        <a href="javascript:toggle('{generate-id()}')" class="linkbox">
181          <img class="toc-icon" src="{$closed-icon}" alt="expand"
182            id="icon-{generate-id()}"/>
183        </a>
184        <xsl:text> </xsl:text>
185        <span onclick="javascript:toggle('{generate-id()}');return true">
186          <xsl:apply-templates select="d:personname"/>
187        </span>
188      </p>
189      <div class="folder" id="folder-{generate-id()}" style="display:none">
190        <xsl:apply-templates select="d:email" mode="titlepage"/>
191        <xsl:apply-templates select="d:affiliation" mode="titlepage"/>
192        <xsl:apply-templates select="d:personblurb" mode="titlepage"/>
193      </div>
194    </div>
195    </xsl:if>
196  </xsl:template>
197 
198  <xsl:template match="d:legalnotice" mode="mast">
199    <div class="legalnotice-block">
200      <xsl:apply-templates/>
201    </div>
202  </xsl:template>
203 
204  <xsl:template match="d:abstract" mode="mast">
205    <div class="mast-box">
206      <p class="title">
207        <a href="javascript:toggle('{generate-id()}')" class="quiet">
208          <img class="toc-icon" src="{$closed-icon}" alt="expand"
209            id="icon-{generate-id()}"/>
210        </a>
211        <xsl:text> </xsl:text>
212        <span onclick="javascript:toggle('{generate-id()}');return true">Abstract</span>
213      </p>
214      <div class="folder" id="folder-{generate-id()}" style="display:none">
215        <xsl:apply-templates/>
216      </div>
217    </div>
218  </xsl:template>
219
220 
221 
222  <!-- overrides templates in balisage-html.xsl to make popups for
223       links to bibliographic references -->
224 
225
226  <xsl:template match="d:bibliomixed" mode="xref">
227    <xsl:param name="xref-id" select="'xxx'"/>
228    <xsl:param name="text-contents">
229      <xsl:apply-templates select="." mode="label-text"/>
230    </xsl:param>
231    <xsl:variable name="cite-id">
232      <xsl:text>cite-</xsl:text>
233      <xsl:apply-templates select="." mode="id"/>
234    </xsl:variable>
235    <a class="xref" id="{$xref-id}"
236      href="javascript:showcite('{$cite-id}','{$xref-id}')">
237      <xsl:copy-of select="$text-contents"/>
238    </a>
239  </xsl:template>
240 
241  <xsl:template match="d:bibliomixed" mode="inline-citation">
242    <xsl:variable name="cite-id">
243      <xsl:text>cite-</xsl:text>
244      <xsl:apply-templates select="." mode="id"/>
245    </xsl:variable>
246    <div class="inline-citation" id="{$cite-id}" style="display:none;width: 240px">
247      <a class="quiet" href="javascript:hidecite('{$cite-id}')" style="font-size:90%">
248        <img src="{$ex-icon}" alt="[x]" style="float:right;clear:both;margin:1px"/>
249      </a>
250      <p style="margin:0ex">
251        <xsl:apply-templates/>
252      </p>
253    </div>
254  </xsl:template>
255 
256  <!--
257  <xsl:template match="d:bibliography" mode="popup">
258    <xsl:apply-templates select="d:bibliomixed" mode="popup"/>
259  </xsl:template>
260  <xsl:template match="d:bibliomixed" mode="popup">
261    <xsl:variable name="id">
262      <xsl:text>cite-</xsl:text>
263      <xsl:apply-templates select="." mode="id"/>
264    </xsl:variable>   
265  </xsl:template> 
266  -->
267
268 
269  <xsl:template name="script">
270    <script type="text/javascript">
271      <xsl:text>
272    function toggle(folderID) {
273      folder = document.getElementById("folder-"+folderID);
274      icon = document.getElementById("icon-"+folderID)
275      // need to:
276      //   switch folder.style.display between 'none' and 'block'
277      //   switch between collapse and expand icons
278      if (folder.style.display != "block") {
279        folder.style.display = "block";
280        icon.src = "</xsl:text>
281  <xsl:value-of select="$open-icon"/>
282  <xsl:text>" ;
283        icon.alt = "collapse" ;
284      }
285      else {
286        folder.style.display = "none";
287        icon.src = "</xsl:text>
288  <xsl:value-of select="$closed-icon"/>
289  <xsl:text>" ;
290        icon.alt = "expand" ;
291      };
292      return;
293    }
294
295   function hidecite(citeID) {
296     cite = document.getElementById(citeID);
297     cite.style.display = "none";
298     return;
299   }
300   
301   function showcite(citeID,anchorID) {
302     cite = document.getElementById(citeID);
303
304     citeLeft = cite.style.left;
305     citeTop = cite.style.top;
306     
307     if (citeLeft != (getLeft(anchorID)+"px") ||
308         citeTop != (getTop(anchorID)+"px")) {
309       cite.style.display = "none";
310     }
311     
312     if (cite.style.display != "table-cell") {
313        movebox(citeID, anchorID);
314        cite.style.display = "table-cell";
315     }
316     else {
317       cite.style.display = "none";
318     };
319     return;
320   }
321
322   function movebox(citeID, anchorID) {
323
324     cite = document.getElementById(citeID);
325     
326     // alert(cite.offsetWidth + " by " + cite.offsetHeight)
327     
328     horizontalOffset = getLeft(anchorID);
329     // horizontalOffset = (inMain(anchorID)) ?
330     // (horizontalOffset - 260) : (horizontalOffset + 20)
331     // (horizontalOffset - (20 + cite.offsetWidth)) : (horizontalOffset + 20)
332
333     verticalOffset = getTop(anchorID);
334     // verticalOffset = (inMain(anchorID)) ?
335     // (verticalOffset - 20) : (verticalOffset + 20)
336     // (verticalOffset - (20 + cite.offsetHeight)) : (verticalOffset + 20)
337
338     /*
339     horizontalOffset = getAbsoluteLeft(anchorID) - getScrollLeft(anchorID) + 20;
340     if (inMain(anchorID)) {
341       horizontalOffset = horizontalOffset - 300;
342     }
343     verticalOffset = getAbsoluteTop(anchorID) - getScrollTop(anchorID) - 40;
344     if (inMain(anchorID)) {
345       verticalOffset = verticalOffset - 300;
346     }
347     */
348     
349     cite.style.left = horizontalOffset + "px";
350     cite.style.top = verticalOffset + "px";
351   }
352   
353   function getLeft(objectID) {
354     var left = getAbsoluteLeft(objectID) - getScrollLeft(objectID);
355     left = (inMain(objectID)) ? (left - 260) : (left + 20)   
356     return left;
357   }
358   
359   function getTop(objectID) {
360     var top = getAbsoluteTop(objectID) - getScrollTop(objectID);
361     top = (inMain(objectID)) ? (top - 50) : (top + 20)
362     return top;     
363   }
364   
365   function getAbsoluteLeft(objectId) {
366   // Get an object left position from the upper left viewport corner
367     o = document.getElementById(objectId)
368     oLeft = o.offsetLeft            // Get left position from the parent object
369     while(o.offsetParent!=null) {   // Parse the parent hierarchy up to the document element
370       oParent = o.offsetParent    // Get parent object reference
371       oLeft += oParent.offsetLeft // Add parent left position
372       o = oParent
373      }
374    return oLeft
375    }
376
377    function getAbsoluteTop(objectId) {
378    // Get an object top position from the upper left viewport corner
379      o = document.getElementById(objectId)
380      oTop = o.offsetTop            // Get top position from the parent object
381      while(o.offsetParent!=null) { // Parse the parent hierarchy up to the document element
382        oParent = o.offsetParent  // Get parent object reference
383        oTop += oParent.offsetTop // Add parent top position
384        o = oParent
385      }
386    return oTop
387    }
388
389   function getScrollLeft(objectId) {
390     // Get a left scroll position
391     o = document.getElementById(objectId)
392     oLeft = o.scrollLeft            // Get left position from the parent object
393     while(o.offsetParent!=null) {   // Parse the parent hierarchy up to the document element
394       oParent = o.offsetParent    // Get parent object reference
395       oLeft += oParent.scrollLeft // Add parent left position
396       o = oParent
397      }
398    return oLeft
399    }
400
401    function getScrollTop(objectId) {
402    // Get a right scroll position
403      o = document.getElementById(objectId)
404      oTop = o.scrollTop            // Get top position from the parent object
405      while(o.offsetParent!=null) { // Parse the parent hierarchy up to the document element
406        oParent = o.offsetParent  // Get parent object reference
407        oTop += oParent.scrollTop // Add parent top position
408        o = oParent
409      }
410    return oTop
411    }
412
413    function inMain(objectId) {
414    // returns true if in div#main
415      o = document.getElementById(objectId)
416      while(o.parentNode != null) { // Parse the parent hierarchy up to div#main
417        oParent = o.parentNode
418        if (o.id == "main") { return true; }
419        o = oParent;
420      }
421    return false;
422    }
423
424
425   /*
426   function showcite(citeID) {
427      cite = document.getElementById(citeID);
428      if (cite.style.display != "table-cell") {
429        cite.style.display = "table-cell";
430      }
431      else {
432        cite.style.display = "none";
433      };
434      return;
435    }
436    */
437
438      </xsl:text>
439    </script>
440  </xsl:template>
441 
442</xsl:stylesheet>
Note: See TracBrowser for help on using the repository browser.