source: rfc2629xslt/clean-for-DTD.xslt @ 2082

Last change on this file since 2082 was 1699, checked in by julian.reschke@…, 7 years ago

bump up document dates and update to latest version of rfc2629.xslt

  • Property svn:eol-style set to native
File size: 24.0 KB
RevLine 
[6]1<!--
2    Strip rfc2629.xslt extensions, generating XML input for MTR's xml2rfc
3
[1303]4    Copyright (c) 2006-2011, Julian Reschke (julian.reschke@greenbytes.de)
[6]5    All rights reserved.
6
7    Redistribution and use in source and binary forms, with or without
8    modification, are permitted provided that the following conditions are met:
9
10    * Redistributions of source code must retain the above copyright notice,
11      this list of conditions and the following disclaimer.
12    * Redistributions in binary form must reproduce the above copyright notice,
13      this list of conditions and the following disclaimer in the documentation
14      and/or other materials provided with the distribution.
15    * Neither the name of Julian Reschke nor the names of its contributors
16      may be used to endorse or promote products derived from this software
17      without specific prior written permission.
18
19    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
20    AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21    IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
22    ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
23    LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
24    CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
25    SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26    INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
27    CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
28    ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29    POSSIBILITY OF SUCH DAMAGE.
30-->
31
32<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
33                version="1.0"
34                xmlns:ed="http://greenbytes.de/2002/rfcedit"
35                xmlns:grddl="http://www.w3.org/2003/g/data-view#"
[272]36                xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
[6]37                xmlns:x="http://purl.org/net/xml2rfc/ext"
38                xmlns:xhtml="http://www.w3.org/1999/xhtml"
[272]39                exclude-result-prefixes="ed grddl rdf x xhtml"
[6]40>
41
42<!-- re-use some of the default RFC2629.xslt rules -->
43<xsl:import href="rfc2629.xslt"/>
44
45<!-- undo strip-space decls -->
46<xsl:preserve-space elements="*"/>
47
48<!-- generate DTD-valid output, override all values imported from rfc2629.xslt -->
49<xsl:output doctype-system="rfc2629.dtd" doctype-public="" method="xml" version="1.0" encoding="UTF-8" cdata-section-elements="artwork" />
50
51<!-- kick into cleanup mode -->
52<xsl:template match="/">
53  <xsl:text>&#10;</xsl:text>
54  <xsl:comment>
55    This XML document is the output of clean-for-DTD.xslt; a tool that strips
56    extensions to RFC2629(bis) from documents for processing with xml2rfc.
57</xsl:comment>
58  <xsl:apply-templates select="/" mode="cleanup"/>
59</xsl:template>
60
61<!-- rules for identity transformations -->
62
63<xsl:template match="processing-instruction()" mode="cleanup">
64  <xsl:text>&#10;</xsl:text>
[30]65  <xsl:copy/>
[6]66</xsl:template>
67
68<xsl:template match="comment()|@*" mode="cleanup"><xsl:copy/></xsl:template>
69
70<xsl:template match="text()" mode="cleanup"><xsl:copy/></xsl:template>
71
72<xsl:template match="/" mode="cleanup">
73        <xsl:copy><xsl:apply-templates select="node()" mode="cleanup" /></xsl:copy>
74</xsl:template>
75
76<xsl:template match="*" mode="cleanup">
77  <xsl:element name="{local-name()}">
78        <xsl:apply-templates select="node()|@*" mode="cleanup" />
79  </xsl:element>
80</xsl:template>
81
82
83<!-- remove PI extensions -->
84
85<xsl:template match="processing-instruction('rfc-ext')" mode="cleanup"/>
[681]86<xsl:template match="processing-instruction('BEGININC')" mode="cleanup"/>
87<xsl:template match="processing-instruction('ENDINC')" mode="cleanup"/>
[6]88
89<!-- add issues appendix -->
90
91<xsl:template match="back" mode="cleanup">
92  <back>
93    <xsl:apply-templates select="node()|@*" mode="cleanup" />
94    <xsl:if test="not(/*/@ed:suppress-issue-appendix='yes') and //ed:issue[@status='closed']">
95      <section title="Resolved issues (to be removed by RFC Editor before publication)">
96        <t>
97          Issues that were either rejected or resolved in this version of this
98          document.
99        </t>
100        <xsl:apply-templates select="//ed:issue[@status='closed']" mode="issues" />
101      </section>
102    </xsl:if>
103    <xsl:if test="not(/*/@ed:suppress-issue-appendix='yes') and //ed:issue[@status='open']">
104      <section title="Open issues (to be removed by RFC Editor prior to publication)">
105        <xsl:apply-templates select="//ed:issue[@status!='closed']" mode="issues" />
106      </section>
107    </xsl:if>
108  </back>
109</xsl:template>
110
111
112
113
114<!-- extensions -->
115
[272]116<xsl:template match="x:abnf-char-sequence" mode="cleanup">
117  <xsl:choose>
118    <xsl:when test="substring(.,1,1) != '&quot;' or substring(.,string-length(.),1) != '&quot;'">
119      <xsl:call-template name="error">
120        <xsl:with-param name="msg" select="'contents of x:abnf-char-sequence needs to be quoted.'" />
121      </xsl:call-template>
122    </xsl:when>
123    <xsl:otherwise>
124      <xsl:text>%x</xsl:text>
125      <xsl:call-template name="to-abnf-char-sequence">
126        <xsl:with-param name="chars" select="substring(.,2,string-length(.)-2)"/>
127      </xsl:call-template>
128    </xsl:otherwise>
129  </xsl:choose>
130</xsl:template>
131
[6]132<xsl:template match="x:anchor-alias" mode="cleanup"/>
133
134<xsl:template match="x:bcp14" mode="cleanup">
135  <xsl:apply-templates/>
136</xsl:template>
137
138<xsl:template match="x:assign-section-number" mode="cleanup"/> 
139<xsl:template match="x:link" mode="cleanup"/>
140<xsl:template match="x:source" mode="cleanup"/>
[1522]141<xsl:template match="x:feedback" mode="cleanup"/>
[6]142
[285]143<xsl:template match="x:parse-xml" mode="cleanup">
144  <xsl:apply-templates/>
145</xsl:template>
146
[981]147<xsl:template match="x:prose" mode="cleanup">
148  <xsl:variable name="text" select="."/>
149  <xsl:comment>Converted from rfc2629.xslt x:prose extension</xsl:comment>
150  <xsl:choose>
151    <xsl:when test="contains($text,' ')">
152      <seriesInfo name="{substring-before($text,' ')}" value="{substring-after($text,' ')}"/>
153    </xsl:when>
154    <xsl:otherwise>
155      <seriesInfo name="" value="{$text}"/>
156    </xsl:otherwise>
157  </xsl:choose>
158</xsl:template>
159
[6]160<xsl:template match="x:ref" mode="cleanup">
[1699]161  <xsl:variable name="val" select="normalize-space(.)"/>
162  <xsl:variable name="target" select="//*[@anchor and (@anchor=$val or x:anchor-alias/@value=$val)][not(ancestor::ed:del)] | //reference/x:source[x:defines=$val]"/>
163  <xsl:if test="count($target)>1">
164    <xsl:message terminate="yes">FATAL: multiple x:ref targets found for <xsl:value-of select="$val"/>.</xsl:message>
165  </xsl:if>
[6]166  <xsl:choose>
[1699]167    <xsl:when test="$target/self::x:source">
168      <!-- drop it-->
169      <xsl:value-of select="."/>
170    </xsl:when>
[6]171    <xsl:when test="$target">
172      <xsl:variable name="current" select="."/>
173      <xsl:for-each select="$target">
174        <!-- make it the context -->
175        <xsl:choose>
176          <xsl:when test="self::preamble">
177            <!-- it's not an element we can link to -->
[588]178            <xsl:call-template name="warning">
179              <xsl:with-param name="inline" select="'no'"/>
180              <xsl:with-param name="msg">couldn't create the link as <xsl:value-of select="name()"/> does not support the anchor attribute.</xsl:with-param>
181            </xsl:call-template>
[6]182            <xsl:value-of select="$current"/>
183          </xsl:when>
184          <xsl:otherwise>
185            <xref target="{$target/@anchor}" format="none"><xsl:value-of select="$current"/></xref>
186          </xsl:otherwise>
187        </xsl:choose>
188      </xsl:for-each>
189    </xsl:when>
190    <xsl:otherwise>
[588]191      <xsl:call-template name="warning">
192        <xsl:with-param name="inline" select="'no'"/>
[1699]193        <xsl:with-param name="msg">internal link target for '<xsl:value-of select="$val"/>' does not exist.</xsl:with-param>
[588]194      </xsl:call-template>
[6]195      <xsl:value-of select="."/>
196    </xsl:otherwise>
197  </xsl:choose>
198</xsl:template>
199
200<xsl:template match="x:blockquote" mode="cleanup">
201  <t><list>
202    <xsl:apply-templates mode="cleanup" />
203  </list></t>
204</xsl:template>
205
206<xsl:template match="x:h" mode="cleanup">
207  <xsl:apply-templates mode="cleanup" />
208</xsl:template>
209
[329]210<xsl:template match="x:highlight" mode="cleanup">
211  <xsl:apply-templates mode="cleanup" />
212</xsl:template>
213
[6]214<xsl:template match="x:lt" mode="cleanup">
215  <t>
216    <xsl:apply-templates select="@hangText|@anchor" mode="cleanup"/>
217    <xsl:for-each select="t">
218      <xsl:apply-templates mode="cleanup"/>
219      <xsl:if test="position()!=last()">
220        <vspace blankLines="1"/>
221      </xsl:if>
222    </xsl:for-each>
223  </t>
224</xsl:template>
225
[329]226<xsl:template match="x:note" mode="cleanup">
227  <t>
228    <list>
229      <xsl:apply-templates mode="cleanup"/>
230    </list>
231  </t>
232</xsl:template>
233
[6]234<xsl:template match="x:q" mode="cleanup">
235  <xsl:text>"</xsl:text>
236  <xsl:apply-templates mode="cleanup"/>
237  <xsl:text>"</xsl:text>
238</xsl:template>
239
240<xsl:template match="x:dfn" mode="cleanup">
[502]241  <!-- help xml2rfc to keep dfn and following text on the same page -->
242  <xsl:if test="not(preceding-sibling::x:dfn) and count(following-sibling::list)=1">
243    <xsl:processing-instruction name="rfc">needLines="4"</xsl:processing-instruction>
244  </xsl:if>
[6]245  <xsl:apply-templates mode="cleanup"/>
246</xsl:template>
247
[246]248<xsl:template match="x:sup" mode="cleanup">
249  <xsl:text>^</xsl:text>
250  <xsl:apply-templates mode="cleanup" />
251</xsl:template>
252
[741]253<xsl:template match="x:span" mode="cleanup">
254  <xsl:apply-templates mode="cleanup" />
255</xsl:template>
256<xsl:template match="x:span/@anchor" mode="cleanup"/>
257
[329]258<xsl:template match="author/@anchor" mode="cleanup"/>
259<xsl:template match="x:include-author" mode="cleanup">
260  <t>
261    <xsl:value-of select="/*/front/author[@anchor=current()/@target]"/>
262  </t>
263  <t>
264    (see Authors Section)
265  </t>
266</xsl:template>
267
[6]268<!-- extended reference formatting -->
269
[814]270<xsl:template match="xref[(@x:fmt or @x:sec or @x:rel) and not(node())]" mode="cleanup">
[588]271  <xsl:call-template name="insert-iref-for-xref"/>
[6]272  <xsl:variable name="node" select="$src//*[@anchor=current()/@target]" />
[32]273
[6]274  <xsl:variable name="sec">
275    <xsl:choose>
276      <xsl:when test="starts-with(@x:rel,'#') and not(@x:sec) and $node/x:source/@href">
277        <xsl:variable name="extdoc" select="document($node/x:source/@href)"/>
278        <xsl:for-each select="$extdoc//*[@anchor=substring-after(current()/@x:rel,'#')]">
279          <xsl:call-template name="get-section-number"/>
280        </xsl:for-each>
281      </xsl:when>
282      <xsl:otherwise>
283        <xsl:value-of select="@x:sec"/>
284      </xsl:otherwise>
285    </xsl:choose>
286  </xsl:variable>
287
[32]288  <xsl:variable name="secterm">
289    <xsl:choose>
290      <!-- starts with letter? -->
291      <xsl:when test="translate(substring($sec,1,1),$ucase,'')=''">Appendix</xsl:when>
292      <xsl:otherwise>Section</xsl:otherwise>
293    </xsl:choose>
294  </xsl:variable>
295
[6]296  <xsl:variable name="fmt">
297    <xsl:choose>
298      <xsl:when test="@x:fmt!=''"><xsl:value-of select="@x:fmt"/></xsl:when>
299      <xsl:when test="ancestor::artwork">,</xsl:when>
300      <xsl:otherwise>of</xsl:otherwise>
301    </xsl:choose>
302  </xsl:variable>
303
304  <xsl:choose>
305    <xsl:when test="$fmt=','">
306      <xref>
307        <xsl:apply-templates select="@target|@format|@pageno|text()|*" mode="cleanup"/>
308      </xref>
[32]309      <xsl:text>, </xsl:text>
310      <xsl:value-of select="$secterm"/>
311      <xsl:text> </xsl:text>
[6]312      <xsl:value-of select="$sec"/>
313    </xsl:when>
314    <xsl:when test="$fmt='sec'">
[32]315      <xsl:value-of select="$secterm"/>
316      <xsl:text> </xsl:text>
[6]317      <xsl:value-of select="$sec"/>
318    </xsl:when>
319    <xsl:when test="$fmt='number'">
320      <xsl:value-of select="$sec"/>
321    </xsl:when>
322    <xsl:when test="$fmt='()'">
323      <xref>
324        <xsl:apply-templates select="@target|@format|@pageno|text()|*" mode="cleanup"/>
325      </xref>
[32]326      <xsl:text> (</xsl:text>
327      <xsl:value-of select="$secterm"/>
328      <xsl:text> </xsl:text>
[6]329      <xsl:value-of select="$sec"/>
330      <xsl:text>)</xsl:text>
331    </xsl:when>
332    <xsl:when test="$fmt='of'">
[32]333      <xsl:value-of select="$secterm"/>
334      <xsl:text> </xsl:text>
[6]335      <xsl:value-of select="$sec"/>
336      <xsl:text> of </xsl:text>
337      <xref>
338        <xsl:apply-templates select="@target|@format|@pageno|text()|*" mode="cleanup"/>
339      </xref>
340    </xsl:when>
341    <xsl:when test="$fmt='anchor'">
342      <xsl:variable name="val">
343        <xsl:call-template name="referencename">
344          <xsl:with-param name="node" select="$node" />
345        </xsl:call-template>
346      </xsl:variable>
347      <!-- remove brackets -->
348      <xsl:value-of select="substring($val,2,string-length($val)-2)"/>
349    </xsl:when>
350    <xsl:otherwise>
351      <xsl:copy>
352        <xsl:apply-templates select="node()" mode="cleanup"/>
353      </xsl:copy>
354    </xsl:otherwise>
355  </xsl:choose>
356</xsl:template>
357
[814]358<xsl:template match="xref[(@x:fmt or @x:sec or @x:rel) and node()]" mode="cleanup">
[588]359  <xsl:call-template name="insert-iref-for-xref"/>
[6]360  <xsl:choose>
361    <xsl:when test="@x:fmt='none'">
362      <xsl:apply-templates mode="cleanup"/>
363    </xsl:when>
364    <xsl:when test="not(@x:fmt)">
365      <xref>
366        <xsl:copy-of select="@target|@format"/>
367        <xsl:apply-templates mode="cleanup"/>
368      </xref>
369    </xsl:when>
370    <xsl:otherwise>
371      <xsl:message>Unsupported x:fmt attribute.</xsl:message>
372    </xsl:otherwise>
373  </xsl:choose>
374</xsl:template>
375
[588]376<xsl:template match="xref[node() and (@target=//preamble/@anchor or @target=//spanx/@anchor)]" mode="cleanup">
[6]377  <!-- remove the link -->
378  <xsl:apply-templates select="node()" mode="cleanup"/>
379</xsl:template>
380
[588]381<xsl:template match="xref[not(node()) and (@target=//preamble/@anchor or @target=//spanx/@anchor)]" mode="cleanup">
[6]382  <!-- fatal -->
[588]383  <xsl:message terminate="yes">Broken xref <xsl:value-of select="@target"/> due to target being filtered out.</xsl:message>
[6]384</xsl:template>
385
[588]386<xsl:template match="xref" mode="cleanup" priority="0">
387  <xsl:call-template name="insert-iref-for-xref"/>
388  <xref>
389    <xsl:copy-of select="@target|@format"/>
390    <xsl:apply-templates mode="cleanup"/>
391  </xref>
392</xsl:template>
393
394<xsl:template name="insert-iref-for-xref">
[1303]395  <xsl:if test="$xml2rfc-ext-include-references-in-index='yesxxx' and $xml2rfc-ext-include-index='yes'">
[588]396    <xsl:if test="@target=/rfc/back//reference/@anchor">
397      <iref item="{@target}"/>
398      <xsl:if test="@x:sec">
399        <xsl:choose>
400          <xsl:when test="translate(substring(@x:sec,1,1),$ucase,'')=''">
401            <iref item="{@target}" subitem="Appendix {@x:sec}"/>
402          </xsl:when>
403          <xsl:otherwise>
404            <iref item="{@target}" subitem="Section {@x:sec}"/>
405          </xsl:otherwise>
406        </xsl:choose>
407      </xsl:if>
408    </xsl:if>
409  </xsl:if>
410</xsl:template>
411
[1303]412<!-- drop index gen extension -->
413<xsl:template match="iref" mode="cleanup">
414  <xsl:if test="$xml2rfc-ext-include-index='yes'">
415    <iref>
416      <xsl:apply-templates select="@*|node()" mode="cleanup"/>
417    </iref>
418  </xsl:if>
419</xsl:template>
420
421
[6]422<!-- issue tracking extensions -->
423
424<xsl:template match="@xml:lang" mode="cleanup"/>
425<xsl:template match="@xml:lang" />
426
427<xsl:template match="ed:*" mode="cleanup"/>
428<xsl:template match="ed:*" />
429
430<xsl:template match="@ed:*" mode="cleanup"/>
431<xsl:template match="@ed:*" />
432
433<xsl:template match="ed:annotation" mode="cleanup" />
434
435<xsl:template match="ed:replace" mode="cleanup">
436  <xsl:apply-templates mode="cleanup" />
437</xsl:template>
438
439<xsl:template match="ed:replace">
440  <xsl:apply-templates/>
441</xsl:template>
442
443<xsl:template match="ed:ins" mode="cleanup">
444  <xsl:apply-templates mode="cleanup"/>
445</xsl:template>
446
447<xsl:template match="ed:ins">
448  <xsl:apply-templates/>
449</xsl:template>
450
451<xsl:template match="ed:issue" mode="issues">
452  <section title="{@name}">
453    <xsl:variable name="sec">
454      <xsl:call-template name="get-section-number"/>
455    </xsl:variable>
456
457    <xsl:if test="$sec!=''">
458      <t>
459        In Section <xsl:value-of select="$sec"/>:
460      </t>
461    </xsl:if>
462   
463    <t>
464      Type: <xsl:value-of select="@type" />
465    </t>
466    <xsl:if test="@href">
467      <t>
468        <!-- temp. removed because of xml2rfc's handling of erefs when producing TXT-->
469        <!--<eref target="{@href}" /> -->
470        <xsl:text>&lt;</xsl:text>
471        <xsl:value-of select="@href"/>
472        <xsl:text>></xsl:text>
473        <xsl:if test="@alternate-href">
474          <xsl:text>, &lt;</xsl:text>
475          <xsl:value-of select="@alternate-href"/>
476          <xsl:text>></xsl:text>
477        </xsl:if>
478      </t>
479    </xsl:if>
480    <xsl:for-each select="ed:item">
481      <t>
482        <xsl:if test="@entered-by or @date">
483          <xsl:choose>
484            <xsl:when test="not(@entered-by)">
485              <xsl:value-of select="concat('(',@date,') ')" />
486            </xsl:when>
487            <xsl:when test="not(@date)">
488              <xsl:value-of select="concat(@entered-by,': ')" />
489            </xsl:when>
490            <xsl:otherwise>
491              <xsl:value-of select="concat(@entered-by,' (',@date,'): ')" />
492            </xsl:otherwise>
493          </xsl:choose>     
494        </xsl:if>
495        <xsl:if test="not(xhtml:p)">
496          <xsl:apply-templates select="node()" mode="issues"/>
497        </xsl:if>
498      </t>
499      <xsl:if test="xhtml:p|xhtml:pre">
500        <xsl:for-each select="node()">
501          <xsl:choose>
502            <xsl:when test="self::xhtml:p">
503              <t>
504                <xsl:apply-templates select="node()" mode="issues"/>
505              </t>
506            </xsl:when>
507            <xsl:when test="self::xhtml:pre">
508              <figure>
509                <artwork><xsl:apply-templates select="node()" mode="issues"/></artwork>
510              </figure>
511            </xsl:when>
512            <xsl:otherwise>
513              <t>
514                <xsl:apply-templates select="." mode="issues"/>
515              </t>
516            </xsl:otherwise>
517          </xsl:choose>
518        </xsl:for-each>
519      </xsl:if>
520    </xsl:for-each> 
521    <xsl:if test="ed:resolution">
522      <t>
523        <xsl:text>Resolution</xsl:text>
524        <xsl:if test="ed:resolution/@datetime"> (<xsl:value-of select="ed:resolution/@datetime"/>)</xsl:if>
525        <xsl:text>: </xsl:text>
526        <xsl:value-of select="ed:resolution" />
527      </t>
528    </xsl:if>
529  </section>
530</xsl:template>
531
532<xsl:template match="ed:issueref" mode="cleanup">
533  <xsl:apply-templates mode="cleanup"/>
534</xsl:template>
535
536<xsl:template match="*" mode="issues">
537  <xsl:apply-templates mode="issues"/>
538</xsl:template>
539
540<xsl:template match="xhtml:q" mode="issues">
541  <list><t>
542    <xsl:text>"</xsl:text>
543    <xsl:apply-templates mode="issues"/>
544    <xsl:text>"</xsl:text>
545    <xsl:if test="@cite">
546      <xsl:text> -- </xsl:text>
547      <eref target="{@cite}"><xsl:value-of select="@cite"/></eref>
548    </xsl:if>
549  </t></list>
550</xsl:template>
551
552<xsl:template match="xhtml:br" mode="issues">
553  <vspace/>
554</xsl:template>
555
556<xsl:template match="xhtml:del" mode="issues">
557  <xsl:text>&lt;del></xsl:text>
558    <xsl:apply-templates mode="issues"/>
559  <xsl:text>&lt;/del></xsl:text>
560</xsl:template>
561
562<xsl:template match="xhtml:em" mode="issues">
563  <spanx style="emph">
564    <xsl:apply-templates mode="issues"/>
565  </spanx>
566</xsl:template>
567
568<xsl:template match="xhtml:ins" mode="issues">
569  <xsl:text>&lt;ins></xsl:text>
570    <xsl:apply-templates mode="issues"/>
571  <xsl:text>&lt;/ins></xsl:text>
572</xsl:template>
573
574<xsl:template match="xhtml:tt" mode="issues">
575  <xsl:apply-templates mode="issues"/>
576</xsl:template>
577
578<xsl:template match="ed:eref" mode="issues">
579  <xsl:text>&lt;</xsl:text>
580  <xsl:value-of select="."/>
581  <xsl:text>&gt;</xsl:text>
582</xsl:template>
583
584<xsl:template match="ed:issueref" mode="issues">
585  <xsl:apply-templates mode="issues"/>
586</xsl:template>
587
588<xsl:template match="text()" mode="issues">
589  <xsl:value-of select="." />
590</xsl:template>
591
592
593
594<!-- markup inside artwork element -->
595
[588]596<xsl:template match="figure[.//artwork//iref | .//artwork//xref]" mode="cleanup">
[6]597  <!-- move up iref elements -->
[588]598  <xsl:for-each select=".//artwork//xref">
599    <xsl:if test="not(ancestor::ed:del)">
600      <xsl:call-template name="insert-iref-for-xref"/>
601    </xsl:if>
602  </xsl:for-each>
[6]603  <figure>
604    <xsl:apply-templates select="@*" mode="cleanup" />
605    <xsl:apply-templates select=".//artwork//iref" mode="cleanup"/>
[588]606    <xsl:apply-templates select="iref|preamble|artwork|postamble|ed:replace|ed:ins|ed:del" mode="cleanup" />
[6]607  </figure>
608</xsl:template>
609
[704]610<xsl:template name="insert-begin-code"/>
611<xsl:template name="insert-end-code"/>
612<xsl:template match="@x:isCodeComponent" mode="cleanup"/>
613
[6]614<xsl:template match="artwork" mode="cleanup">
[329]615  <xsl:variable name="content2"><xsl:apply-templates select="."/></xsl:variable>
616  <xsl:variable name="content" select="translate($content2,'&#160;&#x2500;&#x2502;&#x2508;&#x250c;&#x2510;&#x2514;&#x2518;&#x251c;&#x2524;',' -|+++++++')"/>
[6]617  <artwork>
618    <xsl:apply-templates select="@*" mode="cleanup" />
[704]619    <xsl:if test="@x:isCodeComponent='yes'">
620      <xsl:if test="starts-with(.,'&#10;')">
621        <xsl:text>&#10;</xsl:text>
622      </xsl:if>
623      <xsl:value-of select="@x:indent-with"/>
624      <xsl:text>&lt;CODE BEGINS&gt;&#10;</xsl:text>
625    </xsl:if>
[6]626    <xsl:if test="starts-with(.,'&#10;')">
627      <xsl:text>&#10;</xsl:text>
[329]628      <xsl:value-of select="@x:indent-with"/>
[6]629    </xsl:if>
[329]630    <xsl:choose>
631      <xsl:when test="@x:indent-with!=''">
632        <xsl:call-template name="indent">
633          <xsl:with-param name="content" select="$content"/>
634          <xsl:with-param name="with" select="@x:indent-with"/>
635        </xsl:call-template>
636      </xsl:when>
637      <xsl:otherwise>
638        <xsl:value-of select="$content"/>
639      </xsl:otherwise>
640    </xsl:choose>
[704]641    <xsl:if test="@x:isCodeComponent='yes'">&#10;&lt;CODE ENDS&gt;&#10;</xsl:if>
[6]642  </artwork> 
643</xsl:template>
644
[329]645<xsl:template match="@x:indent-with" mode="cleanup"/>
646
647<xsl:template name="indent">
648  <xsl:param name="content"/>
649  <xsl:param name="with"/>
650
651  <xsl:value-of select="substring($content,1,1)"/>
652  <xsl:if test="substring($content,1,1)='&#10;'">
653    <xsl:value-of select="$with"/>
654  </xsl:if>
655 
656  <xsl:choose>
657    <xsl:when test="$content=''" />
658    <xsl:otherwise>
659      <xsl:call-template name="indent">
660        <xsl:with-param name="content" select="substring($content,2)"/>
661        <xsl:with-param name="with" select="$with"/>
662      </xsl:call-template>
663    </xsl:otherwise>
664  </xsl:choose>
665 
666</xsl:template>
667
[704]668<!-- email repetitions -->
[272]669<xsl:template match="email" mode="cleanup">
670  <!-- combine in a single element -->
671  <xsl:if test="not(preceding-sibling::email)">
672    <email>
673      <xsl:for-each select="../email">
674        <xsl:value-of select="."/>
675        <xsl:if test="position()!=last()">
676          <xsl:text>, </xsl:text>
677        </xsl:if>
678      </xsl:for-each>
679    </email>
680  </xsl:if>
681</xsl:template>
682
[204]683<!-- markup inside cref -->
684<xsl:template match="cref//eref" mode="cleanup">
685  <xsl:text>&lt;</xsl:text>
686  <xsl:value-of select="@target"/>
687  <xsl:text>&gt;</xsl:text>
688</xsl:template>
[6]689
[704]690<xsl:template match="cref//xref" mode="cleanup" priority="9">
691  <xsl:variable name="text">
692    <xsl:apply-templates select="."/>
693  </xsl:variable>
694  <xsl:value-of select="$text"/>
695</xsl:template>
696
[799]697<!-- annotations -->
698<xsl:template match="@x:annotation" mode="cleanup">
699  <xsl:comment>
700    <xsl:value-of select="."/>
701  </xsl:comment>
702  <xsl:call-template name="warning">
703    <xsl:with-param name="inline" select="'no'"/>
704    <xsl:with-param name="msg">Dropping annotation on <xsl:value-of select="local-name(..)"/> element.</xsl:with-param>
705  </xsl:call-template>
706</xsl:template>
707
[6]708<!-- artwork extensions -->
709<xsl:template match="artwork/@x:extraction-note" mode="cleanup"/>
710
711<!-- list formatting -->
712<xsl:template match="list/@x:indent" mode="cleanup"/>
713
714<!-- referencing extensions -->
715<xsl:template match="iref/@x:for-anchor" mode="cleanup"/>
716
717<!-- table styles -->
718<xsl:template match="texttable/@style" mode="cleanup"/>
719
720<!-- section numbering -->
721<xsl:template match="section/@x:fixed-section-number" mode="cleanup"/>
722
723<!-- GRRDL info stripped -->
724<xsl:template match="@grddl:transformation" mode="cleanup"/>
725
[308]726<!-- maturity level stripped -->
727<xsl:template match="@x:maturity-level" mode="cleanup"/>
728
[764]729<!-- normativity stripped -->
730<xsl:template match="@x:nrm" mode="cleanup"/>
731
[981]732<!-- title extensions -->
733<xsl:template match="title/@x:quotes" mode="cleanup"/>
734
[272]735<!-- RDF info stripped -->
736<xsl:template match="rdf:*" mode="cleanup"/>
737
[588]738<!-- cases where xml2rfc does not allow anchors -->
[1426]739<xsl:template match="c/@anchor" mode="cleanup"/>
[588]740<xsl:template match="preamble/@anchor" mode="cleanup"/>
741<xsl:template match="spanx/@anchor" mode="cleanup"/>
742
[6]743</xsl:transform>
Note: See TracBrowser for help on using the repository browser.