/[volute]/trunk/projects/ivoapub/ivoatex/tth-ivoa.xslt
ViewVC logotype

Diff of /trunk/projects/ivoapub/ivoatex/tth-ivoa.xslt

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 5933 by msdemlei, Tue Feb 23 11:08:26 2021 UTC revision 5934 by msdemlei, Tue Feb 23 11:38:05 2021 UTC
# Line 1  Line 1 
1  <?xml version="1.0"?>  <?xml version="1.0"?>
2  <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"  <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
3          xmlns="http://www.w3.org/1999/xhtml"    xmlns="http://www.w3.org/1999/xhtml"
4          version="1.0">    version="1.0">
5    
6    <!-- The parameter docbase is the location where the final document    <!-- The parameter docbase is the location where the final document
7         will be served from.  This will always have the following value         will be served from.  This will always have the following value
# Line 37  Line 37 
37        </xsl:element>        </xsl:element>
38        <xsl:call-template name="selectDoctypeStyle"/>        <xsl:call-template name="selectDoctypeStyle"/>
39    
40                          <xsl:apply-templates select="//span[@class='customcss']"/>        <xsl:apply-templates select="//span[@class='customcss']"/>
41    
42                          <style type="text/css">        <style type="text/css">
43                                  <xsl:text disable-output-escaping="yes">          <xsl:text disable-output-escaping="yes">
44                                  div#versionstatement, div#dateline {          div#versionstatement, div#dateline {
45                                          color: #005A9C;            color: #005A9C;
46                                          font-size: 150%;            font-size: 150%;
47                                  }          }
48    
49                                  p.parsep {          p.parsep {
50                                          overflow: hidden;            overflow: hidden;
51                                          height: 0pt;            height: 0pt;
52                                          margin-top:0.5ex;            margin-top:0.5ex;
53                                          margin-bottom:0.5ex;            margin-bottom:0.5ex;
54                                  }          }
55    
56                                  div.generated {          div.generated {
57                                          padding-left: 5mm;            padding-left: 5mm;
58                                          border-left: 4pt solid #dddddd;            border-left: 4pt solid #dddddd;
59                                  }          }
60    
61                                  div.admonition {          div.admonition {
62                                          width: 30em;            width: 30em;
63                                          position: relative;            position: relative;
64                                          float: right;            float: right;
65                                          background-color: #dddddd;            background-color: #dddddd;
66                                          font-size: 80%;            font-size: 80%;
67                                          margin: 1ex;            margin: 1ex;
68                                          padding: 3pt;            padding: 3pt;
69                                          overflow: auto;            overflow: auto;
70                                  }          }
71                                            
72                                  p.admonition-type {          p.admonition-type {
73                                          background-color: #444444;            background-color: #444444;
74                                          color: #ffffff;            color: #ffffff;
75                                          margin-top: 0px;            margin-top: 0px;
76                                          padding-left: 5pt;            padding-left: 5pt;
77                                          padding-top: 5pt;            padding-top: 5pt;
78                                          padding-bottom: 5pt;            padding-bottom: 5pt;
79                                          font-weight: bold;            font-weight: bold;
80                                  }          }
81    
82                                  a.tth_citation, a.tth_citeref {          a.tth_citation, a.tth_citeref {
83                                          color: #002A5C;            color: #002A5C;
84                                          text-decoration: none;            text-decoration: none;
85                                  }          }
86    
87                                  .xmlel {          .xmlel {
88                                          font-family: monospace;            font-family: monospace;
89                                          font-style: italic;            font-style: italic;
90                                  }          }
91    
92                                  .vorent {          .vorent {
93                                          font-variant: small-caps;            font-variant: small-caps;
94                                  }          }
95    
96                                  table {          table {
97                                          border-collapse: collapse;            border-collapse: collapse;
98                                          border-spacing: 0px;            border-spacing: 0px;
99                                  }          }
100    
101                                  table.tabular {          table.tabular {
102                                          margin-top: 2ex;            margin-top: 2ex;
103                                          margin-bottom: 1ex;            margin-bottom: 1ex;
104                                          margin-left: 0.5em;            margin-left: 0.5em;
105                                  }          }
106    
107                                  table.tabular > * > tr > td, table.tabular > tr > td {          table.tabular > * > tr > td, table.tabular > tr > td {
108                                          border-top: 1pt solid gray;            border-top: 1pt solid gray;
109                                          border-bottom: 1pt solid gray;            border-bottom: 1pt solid gray;
110                                          padding: 2pt;            padding: 2pt;
111                                  }          }
112    
113                                  dt {          dt {
114                                          margin-top: 0.5ex;            margin-top: 0.5ex;
115                                  }          }
116    
117                                  .redaction {          .redaction {
118                                          background-color: #ffff33;            background-color: #ffff33;
119                                  }          }
120    
121                                  span.nolinkurl {          span.nolinkurl {
122                                          font-family: monospace;            font-family: monospace;
123                                  }          }
124    
125                                  .basicstyle__footnotesize {          .basicstyle__footnotesize {
126                                          font-size: 80%;            font-size: 80%;
127                                  }          }
128    
129                                  pre {          pre {
130                                   counter-reset: pre_line;              counter-reset: pre_line;
131                                  }          }
132    
133                                  pre span {          pre span {
134                                   counter-increment: pre_line;              counter-increment: pre_line;
135                                  }          }
136    
137                                  div.numbers_left pre span:before {          div.numbers_left pre span:before {
138                                   content: counter(pre_line);              content: counter(pre_line);
139                                   text-align: right;              text-align: right;
140                                   user-select: none;              user-select: none;
141                                   min-width: 1.5em;              min-width: 1.5em;
142                                   display: inline-block;              display: inline-block;
143                                   padding-right: 1em;              padding-right: 1em;
144                                  }          }
145    
146                                  img.archdiag {          img.archdiag {
147                                    display: block;            display: block;
148                                    width: 90%;            width: 90%;
149            margin-left: auto;            margin-left: auto;
150            margin-right: auto;            margin-right: auto;
151            max-width: 19cm;            max-width: 19cm;
152          }          }
153    
154          ul.authors, ul.previousversions, ul.editors {          ul.authors, ul.previousversions, ul.editors {
155                  list-style-type: none;            list-style-type: none;
156                  padding-left: 0pt;            padding-left: 0pt;
157                  margin-top: 2pt;            margin-top: 2pt;
158                  margin-bottom: 2pt;            margin-bottom: 2pt;
159          }          }
160    
161                                  div.caption {          div.caption {
162                                          font-style: italic;            font-style: italic;
163                                          margin-top: 3mm;            margin-top: 3mm;
164                                          margin-bottom: 6mm;            margin-bottom: 6mm;
165                                  }          }
166    
167          body div {          body div {
168                  max-width: 21cm;            max-width: 21cm;
169          }          }
170                          </xsl:text></style>        </xsl:text></style>
171    
172        <xsl:apply-templates/>        <xsl:apply-templates/>
173      </xsl:copy>      </xsl:copy>
174    </xsl:template>    </xsl:template>
175    
176          <xsl:template match="div[@id='titlepage']">    <xsl:template match="div[@id='titlepage']">
177      <xsl:copy>      <xsl:copy>
178        <table cellspacing="0" cellpadding="0" width="450">        <table cellspacing="0" cellpadding="0" width="450">
179        <tr>        <tr>
# Line 191  Line 191 
191        </table>        </table>
192        <br/>        <br/>
193      </xsl:copy>      </xsl:copy>
194                        
195                  <h1><xsl:value-of select="h1[@align='center']"/></h1>      <h1><xsl:value-of select="h1[@align='center']"/></h1>
196                  <div id="versionstatement">      <div id="versionstatement">
197                          Version <xsl:value-of select="span[@id='version']"/>        Version <xsl:value-of select="span[@id='version']"/>
198                  </div>      </div>
199                  <div id="dateline">      <div id="dateline">
200                          <xsl:apply-templates select="span[@id='doctype']" mode="humanreadable"/>        <xsl:apply-templates select="span[@id='doctype']" mode="humanreadable"/>
201                          <xsl:text> </xsl:text>        <xsl:text> </xsl:text>
202                          <xsl:apply-templates select="span[@id='docdate']"/>        <xsl:apply-templates select="span[@id='docdate']"/>
203                  </div>      </div>
204                  <dl id="docmeta">      <dl id="docmeta">
205    
206                          <dt>Working Group</dt>        <dt>Working Group</dt>
207                          <xsl:copy-of select="dd[@id='ivoagroup']"/>        <xsl:copy-of select="dd[@id='ivoagroup']"/>
208    
209                          <dt>This Version</dt>        <dt>This Version</dt>
210                          <dd>        <dd>
211                                  <xsl:call-template name="currentlink"/>          <xsl:call-template name="currentlink"/>
212                          </dd>        </dd>
213    
214                          <dt>Latest Version</dt>        <dt>Latest Version</dt>
215                          <dd>        <dd>
216                                  <xsl:call-template name="latestlink"/>          <xsl:call-template name="latestlink"/>
217                          </dd>        </dd>
218    
219                          <dt>Previous Versions</dt>        <dt>Previous Versions</dt>
220                          <dd>        <dd>
221                                  <ul class="previousversions">          <ul class="previousversions">
222                                          <xsl:apply-templates select="li[@class='previousversion']"/>            <xsl:apply-templates select="li[@class='previousversion']"/>
223                                  </ul>          </ul>
224                          </dd>        </dd>
225    
226                          <dt>Author(s)</dt>        <dt>Author(s)</dt>
227                          <dd>        <dd>
228                                  <ul class="authors">          <ul class="authors">
229                                          <xsl:apply-templates select="li[@class='author']"/>            <xsl:apply-templates select="li[@class='author']"/>
230                                  </ul>          </ul>
231                          </dd>        </dd>
232                                  
233                          <dt>Editor(s)</dt>        <dt>Editor(s)</dt>
234                          <dd>                          <dd>
235                                  <ul class="editors">          <ul class="editors">
236                                          <xsl:apply-templates select="li[@class='editor']"/>            <xsl:apply-templates select="li[@class='editor']"/>
237                                  </ul>          </ul>
238                          </dd>        </dd>
239                                            
240                          <xsl:if test="span[@id='vcsRev']">        <xsl:if test="span[@id='vcsRev']">
241                                  <dt>Version Control</dt>          <dt>Version Control</dt>
242                                  <dd>Revision <xsl:value-of select="span[@id='vcsRev']"          <dd>Revision <xsl:value-of select="span[@id='vcsRev']"
243                                          /><xsl:if test="span[@id='vcsDate']">, last change            /><xsl:if test="span[@id='vcsDate']">, last change
244                                                  <xsl:value-of select="span[@id='vcsDate']"/>              <xsl:value-of select="span[@id='vcsDate']"/>
245                                  </xsl:if>          </xsl:if>
246                                  <xsl:if test="span[@id='vcsURL']"><br/>          <xsl:if test="span[@id='vcsURL']"><br/>
247                                          <a>            <a>
248                                                  <xsl:attribute name="href">              <xsl:attribute name="href">
249                                                          <xsl:value-of select="span[@id='vcsURL']"/>                <xsl:value-of select="span[@id='vcsURL']"/>
250                                                  </xsl:attribute>Source file in VCS</a>              </xsl:attribute>Source file in VCS</a>
251                                  </xsl:if>          </xsl:if>
252                                  </dd>          </dd>
253                          </xsl:if>        </xsl:if>
254                  </dl>      </dl>
255          </xsl:template>    </xsl:template>
256    
257    <xsl:template match="a/@name">    <xsl:template match="a/@name">
258      <xsl:if test="not(starts-with(., 'CITE'))">      <xsl:if test="not(starts-with(., 'CITE'))">
# Line 269  Line 269 
269    <xsl:template match="style[./@type='text/css']">    <xsl:template match="style[./@type='text/css']">
270    </xsl:template>    </xsl:template>
271    
272          <xsl:template match="span[@class='customcss']">    <xsl:template match="span[@class='customcss']">
273                  <link type="text/css" rel="stylesheet">      <link type="text/css" rel="stylesheet">
274                          <xsl:attribute name="href"><xsl:value-of select="@ref"/></xsl:attribute>        <xsl:attribute name="href"><xsl:value-of select="@ref"/></xsl:attribute>
275                  </link>      </link>
276          </xsl:template>    </xsl:template>
277    
278    <xsl:template match="dd/div[./@class='p']">    <xsl:template match="dd/div[./@class='p']">
279    </xsl:template>    </xsl:template>
280    
281    <xsl:template match="span[@id='doctype']" mode="humanreadable">    <xsl:template match="span[@id='doctype']" mode="humanreadable">
282          <xsl:variable name="doctype" select="."/>      <xsl:variable name="doctype" select="."/>
283      <xsl:choose>      <xsl:choose>
284        <xsl:when test="$doctype='WD'">        <xsl:when test="$doctype='WD'">
285          <xsl:text>IVOA Working Draft </xsl:text>          <xsl:text>IVOA Working Draft </xsl:text>
# Line 294  Line 294 
294          <xsl:text>IVOA Note </xsl:text>          <xsl:text>IVOA Note </xsl:text>
295        </xsl:when>        </xsl:when>
296        <xsl:when test="$doctype='PEN'">        <xsl:when test="$doctype='PEN'">
297          <xsl:text>Proposed Endorsed Note </xsl:text>           <xsl:text>Proposed Endorsed Note </xsl:text>
298        </xsl:when>        </xsl:when>
299        <xsl:when test="$doctype='EN'">        <xsl:when test="$doctype='EN'">
300          <xsl:text>Endorsed Note </xsl:text>           <xsl:text>Endorsed Note </xsl:text>
301        </xsl:when>        </xsl:when>
302        <xsl:otherwise>        <xsl:otherwise>
303          <xsl:message terminate='yes'>doctype must be one of          <xsl:message terminate='yes'>doctype must be one of
# Line 308  Line 308 
308    </xsl:template>    </xsl:template>
309    
310    <xsl:template match="div[@id='statusOfThisDocument']">    <xsl:template match="div[@id='statusOfThisDocument']">
311          <xsl:variable name="doctype" select="."/>      <xsl:variable name="doctype" select="."/>
312        <p id="statusdecl"><em>        <p id="statusdecl"><em>
313            <xsl:choose>            <xsl:choose>
314                <xsl:when test="$doctype='NOTE'">                <xsl:when test="$doctype='NOTE'">
# Line 346  Line 346 
346                    interoperability inside the Astronomical Community.                    interoperability inside the Astronomical Community.
347                </xsl:when>                </xsl:when>
348                <xsl:when test="$doctype='PEN'">                <xsl:when test="$doctype='PEN'">
349                                                                  This is an IVOA Proposed Endorsed Note for review by IVOA                  This is an IVOA Proposed Endorsed Note for review by IVOA
350                                          members and other interested parties. It is appropriate to                  members and other interested parties. It is appropriate to
351                                          reference this document only as a Proposed Endorsed Note that                  reference this document only as a Proposed Endorsed Note that
352                                          is under review and may change before it is endorsed or may                    is under review and may change before it is endorsed or may  
353                                          not be endorsed.                  not be endorsed.
354                </xsl:when>                </xsl:when>
355                <xsl:when test="$doctype='EN'">                <xsl:when test="$doctype='EN'">
356                        This document is an IVOA Endorsed Note. It has been reviewed                  This document is an IVOA Endorsed Note. It has been reviewed
357                        and endorsed by the IVOA Technical Coordination Group as a                  and endorsed by the IVOA Technical Coordination Group as a
358                        stable, citable document which constitutes valuable information                  stable, citable document which constitutes valuable information
359                        for the IVOA community and beyond.                  for the IVOA community and beyond.
360                </xsl:when>                </xsl:when>
361                <xsl:otherwise>                <xsl:otherwise>
362                    <xsl:message terminate='yes'>Invalid document                    <xsl:message terminate='yes'>Invalid document
# Line 366  Line 366 
366        </em></p>        </em></p>
367    
368        <p>A list of current IVOA Recommendations and other technical documents        <p>A list of current IVOA Recommendations and other technical documents
369                                  can be found in the <a href="http://www.ivoa.net/documents">IVOA          can be found in the <a href="http://www.ivoa.net/documents">IVOA
370                                  document repository</a>.</p>          document repository</a>.</p>
371    </xsl:template>    </xsl:template>
372    
373          <xsl:template name="selectDoctypeStyle">    <xsl:template name="selectDoctypeStyle">
374          <xsl:variable name="doctype" select="//span[@id='doctype']"/>      <xsl:variable name="doctype" select="//span[@id='doctype']"/>
375      <link rel="stylesheet" type="text/css">      <link rel="stylesheet" type="text/css">
376        <xsl:attribute name="href">        <xsl:attribute name="href">
377          <xsl:choose>          <xsl:choose>
# Line 389  Line 389 
389              >http://www.ivoa.net/misc/ivoa_note.css</xsl:when>              >http://www.ivoa.net/misc/ivoa_note.css</xsl:when>
390         </xsl:choose>         </xsl:choose>
391       </xsl:attribute>       </xsl:attribute>
392          </link>       </link>
393    </xsl:template>    </xsl:template>
394    
395          <!-- To somewhat support keyval-style arguments (as in, e.g., listings)    <!-- To somewhat support keyval-style arguments (as in, e.g., listings)
396                  this allows translating them into css classes.  Essentially,      this allows translating them into css classes.  Essentially,
397                  generate a div with a keyvals attribute; see lstlisting in tthdefs -->      generate a div with a keyvals attribute; see lstlisting in tthdefs -->
398              
399          <xsl:template match="*[@keyvals]">    <xsl:template match="*[@keyvals]">
400                  <div>      <div>
401                          <xsl:attribute name="class">        <xsl:attribute name="class">
402                                  <xsl:value-of select="translate(@keyvals, ',=\\', ' __')"/>          <xsl:value-of select="translate(@keyvals, ',=\\', ' __')"/>
403                          </xsl:attribute>        </xsl:attribute>
404                          <xsl:apply-templates/>        <xsl:apply-templates/>
405                  </div>      </div>
406          </xsl:template>    </xsl:template>
407    
408          <!-- In verbatim listings, we may want to play tricks with lines.    <!-- In verbatim listings, we may want to play tricks with lines.
409               So, let's mark them up with spans. -->         So, let's mark them up with spans. -->
410              
411          <xsl:template name="split-into-lines">    <xsl:template name="split-into-lines">
412                  <xsl:param name="arg"/>      <xsl:param name="arg"/>
413                  <span class="verbline"><xsl:value-of      <span class="verbline"><xsl:value-of
414                          select="substring-before($arg, '&#xa;')"/>        select="substring-before($arg, '&#xa;')"/>
415                          <xsl:text>&#xa;</xsl:text>        <xsl:text>&#xa;</xsl:text>
416                  </span>      </span>
417                        
418                  <xsl:if test="substring-after($arg, '&#xa;')">      <xsl:if test="substring-after($arg, '&#xa;')">
419                          <xsl:call-template name="split-into-lines">        <xsl:call-template name="split-into-lines">
420                                  <xsl:with-param name="arg" select="substring-after($arg, '&#xa;')"/>          <xsl:with-param name="arg" select="substring-after($arg, '&#xa;')"/>
421                          </xsl:call-template>        </xsl:call-template>
422                  </xsl:if>      </xsl:if>
423          </xsl:template>    </xsl:template>
424    
425          <xsl:template match="pre">    <xsl:template match="pre">
426                  <pre>      <pre>
427                          <xsl:copy-of select="@*"/>        <xsl:copy-of select="@*"/>
428                          <xsl:call-template name="split-into-lines">        <xsl:call-template name="split-into-lines">
429                                  <xsl:with-param name="arg" select="."/>          <xsl:with-param name="arg" select="."/>
430                          </xsl:call-template>        </xsl:call-template>
431                  </pre>      </pre>
432          </xsl:template>    </xsl:template>
433    
434    <!-- Make a link to the current version on the ivoa doc server.    <!-- Make a link to the current version on the ivoa doc server.
435         The format of the URI here is as mandated by the IVOA         The format of the URI here is as mandated by the IVOA
436         Document Standards Standard Document (ahem). -->         Document Standards Standard Document (ahem). -->
437    <xsl:template name="currentlink">    <xsl:template name="currentlink">
438                  <xsl:variable name="docdate" select="span[@id='docdate']"/>      <xsl:variable name="docdate" select="span[@id='docdate']"/>
439      <xsl:variable name="currenturl">      <xsl:variable name="currenturl">
440        <xsl:value-of select="$docbase"/>        <xsl:value-of select="$docbase"/>
441        <xsl:value-of select="//span[@id='docname']"/>        <xsl:value-of select="//span[@id='docname']"/>
442        <xsl:text>/</xsl:text>        <xsl:text>/</xsl:text>
443        <xsl:value-of select="concat(        <xsl:value-of select="concat(
444          substring($docdate, 1, 4),          substring($docdate, 1, 4),
445          substring($docdate, 6, 2),          substring($docdate, 6, 2),
446          substring($docdate, 9, 2))"/>          substring($docdate, 9, 2))"/>
447      </xsl:variable>      </xsl:variable>
448      <xsl:element name="a">      <xsl:element name="a">
449        <xsl:attribute name="class">currentlink</xsl:attribute>        <xsl:attribute name="class">currentlink</xsl:attribute>
# Line 459  Line 459 
459         doc server, to the versioned URL. -->         doc server, to the versioned URL. -->
460    <xsl:template name="latestlink">    <xsl:template name="latestlink">
461      <xsl:variable name="currenturl">      <xsl:variable name="currenturl">
462              <xsl:value-of select="$docbase"/>        <xsl:value-of select="$docbase"/>
463        <xsl:value-of select="//span[@id='docname']"/>        <xsl:value-of select="//span[@id='docname']"/>
464      </xsl:variable>      </xsl:variable>
465      <xsl:element name="a">      <xsl:element name="a">
# Line 471  Line 471 
471      </xsl:element>      </xsl:element>
472    </xsl:template>    </xsl:template>
473    
474          <!-- I want to style the role diagram; ideally, we'd add a class    <!-- I want to style the role diagram; ideally, we'd add a class
475                  through LaTeX, but TTH doesn't have a straightforward facility      through LaTeX, but TTH doesn't have a straightforward facility
476                  for doing this.  Hence, I'm adding a class manually. -->      for doing this.  Hence, I'm adding a class manually. -->
477    <xsl:template match="img[@src='role_diagram.svg']">    <xsl:template match="img[@src='role_diagram.svg']">
478          <xsl:copy>      <xsl:copy>
479                  <xsl:attribute name="class">archdiag</xsl:attribute>        <xsl:attribute name="class">archdiag</xsl:attribute>
480                  <xsl:apply-templates select="@*|node()"/>        <xsl:apply-templates select="@*|node()"/>
481          </xsl:copy>      </xsl:copy>
482    </xsl:template>    </xsl:template>
483    
484          <!-- tth has given up detecting p elements in TeX source and hacks in    <!-- tth has given up detecting p elements in TeX source and hacks in
485               div class="p" elements as paragraph separators.  These         div class="p" elements as paragraph separators.  These
486               are potentially very confusing to browsers.  We hence         are potentially very confusing to browsers.  We hence
487               replace them with hopefully less confusing constructs -->         replace them with hopefully less confusing constructs -->
488          <xsl:template match="div[@class='p']">    <xsl:template match="div[@class='p']">
489                  <p class="parsep"><span> </span></p>      <p class="parsep"><span> </span></p>
490          </xsl:template>    </xsl:template>
491    
492          <xsl:template match="body">    <xsl:template match="body">
493                  <xsl:apply-templates/>      <xsl:apply-templates/>
494          </xsl:template>    </xsl:template>
495    
496  </xsl:stylesheet>  </xsl:stylesheet>

Legend:
Removed from v.5933  
changed lines
  Added in v.5934

msdemlei@ari.uni-heidelberg.de
ViewVC Help
Powered by ViewVC 1.1.26