source: draft-ietf-httpbis/latest/extract-cache-directives.xslt @ 815

Last change on this file since 815 was 815, checked in by julian.reschke@…, 10 years ago

add tool for extracting cache directive table

  • Property svn:executable set to *
File size: 3.0 KB
Line 
1<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
2               xmlns:x="http://purl.org/net/xml2rfc/ext"
3               xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'
4               version="1.0"
5               exclude-result-prefixes="rdf x"
6>
7
8<xsl:output indent="yes" omit-xml-declaration="yes"/>
9
10<xsl:template match="/">
11  <xsl:variable name="table">
12    <texttable align="left" suppress-title="true" anchor="iana.cache.directive.registration.table">
13      <ttcol>Cache Directive</ttcol>
14      <ttcol>Reference</ttcol>
15      <xsl:text>&#10;</xsl:text>
16      <xsl:apply-templates select="//iref[@item='Cache Directives']">
17        <xsl:sort select="@subitem"/>
18      </xsl:apply-templates>
19    </texttable>
20    <xsl:text>&#10;</xsl:text>
21  </xsl:variable>
22
23  <xsl:comment>AUTOGENERATED FROM extract-cache-directives-defs.xslt, do not edit manually</xsl:comment>
24  <xsl:text>&#10;</xsl:text>
25  <xsl:copy-of select="$table"/>
26  <xsl:comment>(END)</xsl:comment>
27  <xsl:text>&#10;</xsl:text>
28 
29  <!-- check against current version -->
30  <xsl:variable name="oldtable" select="//texttable[@anchor='iana.cache.directive.registration.table']" />
31
32  <xsl:variable name="s">
33    <xsl:apply-templates select="$table//texttable" mode="tostring"/>
34  </xsl:variable>
35 
36  <xsl:variable name="s1">
37    <xsl:apply-templates select="$oldtable" mode="tostring"/>
38  </xsl:variable>
39
40  <xsl:if test="$s != $s1">
41    <xsl:message>WARNING: table contained inside source document needs to be updated</xsl:message>
42    <xsl:message><xsl:value-of select="$s"/></xsl:message>
43    <xsl:message><xsl:value-of select="$s1"/></xsl:message>
44  </xsl:if>
45
46</xsl:template>
47
48<xsl:template match="*" mode="tostring">
49  <xsl:text>&lt;</xsl:text>
50  <xsl:value-of select="name()"/>
51  <xsl:for-each select="@*">
52    <xsl:sort select="name()"/>
53    <xsl:text> </xsl:text>
54    <xsl:value-of select="name()"/>
55    <xsl:text>=</xsl:text>
56    <xsl:value-of select="."/>
57  </xsl:for-each>
58  <xsl:text>&gt;</xsl:text>
59 
60  <xsl:apply-templates select="node()" mode="tostring"/>
61 
62  <xsl:text>&lt;/</xsl:text>
63  <xsl:value-of select="name()"/>
64  <xsl:text>&gt;</xsl:text>
65
66</xsl:template>
67
68<xsl:template match="text()" mode="tostring">
69  <xsl:value-of select="."/>
70</xsl:template>
71
72<xsl:template match="texttable/text()" mode="tostring"/>
73<xsl:template match="texttable/c[xref]/text()" mode="tostring"/>
74
75<xsl:template match="iref">
76  <xsl:variable name="dir" select="@subitem"/>
77  <xsl:if test="not(preceding::iref[@item='Cache Directives' and @subitem=$dir])">
78
79    <xsl:text>&#10;</xsl:text>
80    <c><xsl:value-of select="$dir"/></c>
81    <c>
82      <xsl:for-each select="//*[iref[@item='Cache Directives' and @subitem=$dir]]">
83        <xsl:if test="position()!=1">
84          <xsl:text>, </xsl:text>
85        </xsl:if>
86        <xref target="{ancestor-or-self::*[@anchor][1]/@anchor}"/>
87      </xsl:for-each>
88    </c>
89
90  </xsl:if>
91</xsl:template>
92
93</xsl:transform>
Note: See TracBrowser for help on using the repository browser.