You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@labs.apache.org by fi...@apache.org on 2007/10/09 00:57:53 UTC

svn commit: r582990 [2/3] - /labs/webarch/trunk/http/draft-fielding-http/rfc2629.xslt

Added: labs/webarch/trunk/http/draft-fielding-http/rfc2629.xslt
URL: http://svn.apache.org/viewvc/labs/webarch/trunk/http/draft-fielding-http/rfc2629.xslt?rev=582990&view=auto
==============================================================================
--- labs/webarch/trunk/http/draft-fielding-http/rfc2629.xslt (added)
+++ labs/webarch/trunk/http/draft-fielding-http/rfc2629.xslt Mon Oct  8 15:57:47 2007
@@ -0,0 +1,4654 @@
+<!--
+    XSLT transformation from RFC2629 XML format to HTML
+
+    Copyright (c) 2006-2007, Julian Reschke (julian.reschke@greenbytes.de)
+    All rights reserved.
+
+    Redistribution and use in source and binary forms, with or without
+    modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+      this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above copyright notice,
+      this list of conditions and the following disclaimer in the documentation
+      and/or other materials provided with the distribution.
+    * Neither the name of Julian Reschke nor the names of its contributors
+      may be used to endorse or promote products derived from this software
+      without specific prior written permission.
+
+    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+    AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+    IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+    ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+    LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+    CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+    SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+    INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+    CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+    ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+    POSSIBILITY OF SUCH DAMAGE.
+-->
+
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+                version="1.0"
+                
+                xmlns:ed="http://greenbytes.de/2002/rfcedit"
+                xmlns:exslt="http://exslt.org/common"
+                xmlns:msxsl="urn:schemas-microsoft-com:xslt"
+                xmlns:myns="mailto:julian.reschke@greenbytes.de?subject=rcf2629.xslt"
+                xmlns:saxon="http://icl.com/saxon"
+                xmlns:x="http://purl.org/net/xml2rfc/ext"
+                xmlns:xhtml="http://www.w3.org/1999/xhtml"
+
+                exclude-result-prefixes="ed exslt msxsl myns saxon x xhtml"
+                >
+
+<xsl:strip-space elements="back front list middle rfc section"/>                
+                
+<xsl:output method="html" encoding="iso-8859-1" version="4.0" doctype-public="-//W3C//DTD HTML 4.01//EN" indent="no"/>
+
+<!-- process some of the processing instructions supported by Marshall T. Rose's
+     xml2rfc sofware, see <http://xml.resource.org/> -->
+
+<!-- delimiters in PIs -->
+<xsl:variable name="quote-chars">"'</xsl:variable>     
+     
+<!-- rfc comments PI -->
+
+<xsl:param name="xml2rfc-comments"
+  select="substring-after(
+      translate(/processing-instruction('rfc')[contains(.,'comments=')], concat($quote-chars,' '), ''),
+        'comments=')"
+/>
+
+<!-- rfc compact PI -->
+
+<xsl:param name="xml2rfc-compact"
+  select="substring-after(
+      translate(/processing-instruction('rfc')[contains(.,'compact=')], concat($quote-chars,' '), ''),
+        'compact=')"
+/>
+
+<!-- rfc footer PI -->
+
+<xsl:param name="xml2rfc-footer"
+  select="substring-after(
+      translate(/processing-instruction('rfc')[contains(.,'footer=')], concat($quote-chars,' '), ''),
+        'footer=')"
+/>
+
+<!-- rfc header PI -->
+
+<xsl:param name="xml2rfc-header"
+  select="substring-after(
+      translate(/processing-instruction('rfc')[contains(.,'header=')], concat($quote-chars,' '), ''),
+        'header=')"
+/>
+
+<!-- rfc inline PI -->
+
+<xsl:param name="xml2rfc-inline"
+  select="substring-after(
+      translate(/processing-instruction('rfc')[contains(.,'inline=')], concat($quote-chars,' '), ''),
+        'inline=')"
+/>
+
+<!-- rfc strict PI -->
+
+<xsl:param name="xml2rfc-strict"
+  select="substring-after(
+      translate(/processing-instruction('rfc')[contains(.,'strict=')], concat($quote-chars,' '), ''),
+        'strict=')"
+/>
+
+<!-- include a table of contents if a processing instruction <?rfc?>
+     exists with contents toc="yes". Can be overriden by an XSLT parameter -->
+
+<xsl:param name="xml2rfc-toc"
+  select="substring-after(
+      translate(/processing-instruction('rfc')[contains(.,'toc=')], concat($quote-chars,' '), ''),
+        'toc=')"
+/>
+
+<!-- optional tocdepth-->
+
+<xsl:param name="xml2rfc-tocdepth"
+  select="substring-after(
+      translate(/processing-instruction('rfc')[contains(.,'tocdepth=')], concat($quote-chars,' '), ''),
+        'tocdepth=')"
+/>
+
+<xsl:variable name="parsedTocDepth">
+  <xsl:choose>
+    <xsl:when test="$xml2rfc-tocdepth='1'">1</xsl:when>
+    <xsl:when test="$xml2rfc-tocdepth='2'">2</xsl:when>
+    <xsl:when test="$xml2rfc-tocdepth='3'">3</xsl:when>
+    <xsl:when test="$xml2rfc-tocdepth='4'">4</xsl:when>
+    <xsl:when test="$xml2rfc-tocdepth='5'">5</xsl:when>
+    <xsl:otherwise>99</xsl:otherwise>
+  </xsl:choose>
+</xsl:variable>
+
+<!-- suppress top block if a processing instruction <?rfc?>
+     exists with contents tocblock="no". Can be overriden by an XSLT parameter -->
+
+<xsl:param name="xml2rfc-topblock"
+  select="substring-after(
+      translate(/processing-instruction('rfc')[contains(.,'topblock=')], concat($quote-chars,' '), ''),
+        'topblock=')"
+/>
+
+<!-- use symbolic reference names instead of numeric ones unless a processing instruction <?rfc?>
+     exists with contents symrefs="no". Can be overriden by an XSLT parameter -->
+
+<xsl:param name="xml2rfc-symrefs"
+  select="substring-after(
+      translate(/processing-instruction('rfc')[contains(.,'symrefs=')], concat($quote-chars,' '), ''),
+        'symrefs=')"
+/>
+
+<!-- sort references if a processing instruction <?rfc?>
+     exists with contents sortrefs="yes". Can be overriden by an XSLT parameter -->
+
+<xsl:param name="xml2rfc-sortrefs"
+  select="substring-after(
+      translate(/processing-instruction('rfc')[contains(.,'sortrefs=')], concat($quote-chars,' '), ''),
+        'sortrefs=')"
+/>
+
+<!-- insert editing marks if a processing instruction <?rfc?>
+     exists with contents editing="yes". Can be overriden by an XSLT parameter -->
+
+<xsl:param name="xml2rfc-editing"
+  select="substring-after(
+      translate(/processing-instruction('rfc')[contains(.,'editing=')], concat($quote-chars,' '), ''),
+        'editing=')"
+/>
+
+<!-- make it a private paper -->
+
+<xsl:param name="xml2rfc-private"
+  select="substring-after(
+      translate(/processing-instruction('rfc')[contains(.,'private=')], $quote-chars, ''),
+        'private=')"
+/>
+
+<!-- background image? -->
+
+<xsl:param name="xml2rfc-background"
+  select="substring-after(
+      translate(/processing-instruction('rfc')[contains(.,'background=')], $quote-chars, ''),
+        'background=')"
+/>
+
+<!-- extension for XML parsing in artwork -->
+
+<xsl:param name="xml2rfc-ext-parse-xml-in-artwork"
+  select="substring-after(
+      translate(/processing-instruction('rfc-ext')[contains(.,'parse-xml-in-artwork=')], concat($quote-chars,' '), ''),
+        'parse-xml-in-artwork=')"
+/>
+
+<!-- extension for excluding DCMI properties in meta tag (RFC2731) -->
+
+<xsl:param name="xml2rfc-ext-support-rfc2731"
+  select="substring-after(
+      translate(/processing-instruction('rfc-ext')[contains(.,'support-rfc2731=')], concat($quote-chars,' '), ''),
+        'support-rfc2731=')"
+/>
+
+<!-- extension for allowing markup inside artwork -->
+
+<xsl:param name="xml2rfc-ext-allow-markup-in-artwork"
+  select="substring-after(
+      translate(/processing-instruction('rfc-ext')[contains(.,'allow-markup-in-artwork=')], concat($quote-chars,' '), ''),
+        'allow-markup-in-artwork=')"
+/>
+
+<!-- extension for including references into index -->
+
+<xsl:param name="xml2rfc-ext-include-references-in-index"
+  select="substring-after(
+      translate(/processing-instruction('rfc-ext')[contains(.,'include-references-in-index=')], concat($quote-chars,' '), ''),
+        'include-references-in-index=')"
+/>
+
+<!-- position of author's section -->
+
+<xsl:param name="xml2rfc-ext-authors-section"
+  select="substring-after(
+      translate(/processing-instruction('rfc-ext')[contains(.,'authors-section=')], concat($quote-chars,' '), ''),
+        'authors-section=')"
+/>
+
+<!-- justification? -->
+
+<xsl:param name="xml2rfc-ext-justification"
+  select="substring-after(
+      translate(/processing-instruction('rfc-ext')[contains(.,'justification=')], concat($quote-chars,' '), ''),
+        'justification=')"
+/>
+
+<!-- trailing dots in section numbers -->
+
+<xsl:param name="xml2rfc-ext-sec-no-trailing-dots"
+  select="substring-after(
+      translate(/processing-instruction('rfc-ext')[contains(.,'sec-no-trailing-dots=')], concat($quote-chars,' '), ''),
+        'sec-no-trailing-dots=')"
+/>
+
+<!-- choose whether or not to do mailto links --> 
+  
+ <xsl:param name="xml2rfc-linkmailto" 
+   select="substring-after( 
+       translate(/processing-instruction('rfc')[contains(.,'linkmailto=')], concat($quote-chars,' '), ''), 
+         'linkmailto=')" 
+ /> 
+
+
+<!-- iprnotified switch --> 
+  
+ <xsl:param name="xml2rfc-iprnotified" 
+   select="substring-after( 
+       translate(/processing-instruction('rfc')[contains(.,'iprnotified=')], concat($quote-chars,' '), ''), 
+         'iprnotified=')" 
+ /> 
+
+
+<!-- URL templates for RFCs and Internet Drafts. -->
+
+<!-- Reference the authorative ASCII versions
+<xsl:param name="rfcUrlPrefix" select="'http://www.ietf.org/rfc/rfc'" />
+<xsl:param name="rfcUrlPostfix" select="'.txt'" />
+-->
+<!-- Reference the marked up versions over on http://tools.ietf.org/html. -->
+<xsl:param name="rfcUrlPrefix" select="'http://tools.ietf.org/html/rfc'" />
+<xsl:param name="rfcUrlPostfix" select="''" />
+<xsl:param name="rfcUrlFrag" select="'section-'" />
+<xsl:param name="internetDraftUrlPrefix" select="'http://tools.ietf.org/html/'" />
+<xsl:param name="internetDraftUrlPostfix" select="''" />
+<xsl:param name="internetDraftUrlFrag" select="'section-'" />
+
+<!-- warning re: absent node-set ext. function -->
+<xsl:variable name="node-set-warning">
+  This stylesheet requires either an XSLT-1.0 processor with node-set()
+  extension function, or an XSLT-2.0 processor. Therefore, parts of the
+  document couldn't be displayed.
+</xsl:variable>
+
+<!-- character translation tables -->
+<xsl:variable name="lcase" select="'abcdefghijklmnopqrstuvwxyz'" />
+<xsl:variable name="ucase" select="'ABCDEFGHIJKLMNOPQRSTUVWXYZ'" />       
+
+<xsl:variable name="plain" select="' #/ABCDEFGHIJKLMNOPQRSTUVWXYZ'" />
+<xsl:variable name="touri" select="'___abcdefghijklmnopqrstuvwxyz'" />
+
+<!-- build help keys for indices -->
+<xsl:key name="index-first-letter"
+  match="iref|reference"
+    use="translate(substring(concat(@anchor,@item),1,1),'abcdefghijklmnopqrstuvwxyz','ABCDEFGHIJKLMNOPQRSTUVWXYZ')" />
+
+<xsl:key name="index-item"
+  match="iref"
+    use="@item" />
+
+<xsl:key name="index-item-subitem"
+  match="iref"
+    use="concat(@item,'..',@subitem)" />
+
+<xsl:key name="index-xref"
+  match="xref[@x:sec]"
+    use="concat(@target,'..',@x:sec)" />
+
+<!-- prefix for automatically generated anchors -->
+<xsl:variable name="anchor-prefix" select="'rfc'" />
+
+<!-- IPR version switch -->
+<xsl:variable name="ipr-rfc3667" select="(
+  /rfc/@number &gt; 3708) or
+  not(
+    (/rfc/@ipr = 'full2026') or
+    (/rfc/@ipr = 'noDerivativeWorks2026') or
+    (/rfc/@ipr = 'noDerivativeWorksNow') or
+    (/rfc/@ipr = 'none') or
+    (/rfc/@ipr = '') or
+    not(/rfc/@ipr)
+  )" />
+
+<xsl:variable name="ipr-rfc4748" select="(
+  $ipr-rfc3667 and
+    (
+      (/rfc/@number &gt; 4671) or
+      (/rfc/front/date/@year &gt; 2006) or
+      (/rfc/front/date/@year &gt; 2005 and (/rfc/front/date/@month='November' or /rfc/front/date/@month='December'))
+    )
+  )" />
+
+<!-- will document have an index -->
+<xsl:variable name="has-index" select="//iref or (//xref and $xml2rfc-ext-include-references-in-index='yes')" />
+          
+<!-- Templates for the various elements of rfc2629.dtd -->
+              
+<xsl:template match="text()[not(ancestor::artwork)]">
+  <xsl:variable name="starts-with-ws" select="translate(substring(.,1,1),'&#9;&#10;&#13;&#32;','')"/>
+  <xsl:variable name="ends-with-ws" select="translate(substring(.,string-length(.),1),'&#9;&#10;&#13;&#32;','')"/>
+  <!--<xsl:message> Orig: "<xsl:value-of select="."/>"</xsl:message>
+  <xsl:message>Start: "<xsl:value-of select="$starts-with-ws"/>"</xsl:message>
+  <xsl:message>  End: "<xsl:value-of select="$ends-with-ws"/>"</xsl:message> -->
+  <xsl:if test="$starts-with-ws='' and preceding-sibling::node()">
+    <xsl:text> </xsl:text>
+  </xsl:if>
+  <xsl:value-of select="normalize-space(.)"/>
+  <xsl:if test="$ends-with-ws='' and following-sibling::node()">
+    <xsl:text> </xsl:text>
+  </xsl:if>
+</xsl:template>
+              
+              
+<xsl:template match="abstract">
+  <h1 id="{$anchor-prefix}.abstract"><a href="#{$anchor-prefix}.abstract">Abstract</a></h1>
+  <xsl:apply-templates />
+</xsl:template>
+
+<msxsl:script language="JScript" implements-prefix="myns">
+  function parseXml(str) {
+    try {
+      var doc = new ActiveXObject("MSXML2.DOMDocument");
+      doc.async = false;
+      if (doc.loadXML(str)) {
+        return "";
+      }
+      else {
+        return doc.parseError.reason + "\n" + doc.parseError.srcText + " (" + doc.parseError.line + "/" + doc.parseError.linepos + ")";
+      }
+    }
+    catch(e) {
+      return "";
+    }
+  }
+</msxsl:script>
+
+<xsl:template name="add-artwork-class">
+  <xsl:choose>
+    <xsl:when test="@type='abnf' or @type='abnf2616' or @type='application/xml-dtd' or @type='inline' or @type='application/relax-ng-compact-syntax'">
+      <xsl:attribute name="class">inline</xsl:attribute>
+    </xsl:when>
+    <xsl:when test="starts-with(@type,'message/http') and contains(@type,'msgtype=&quot;request&quot;')">
+      <xsl:attribute name="class">text2</xsl:attribute>
+    </xsl:when>
+    <xsl:when test="starts-with(@type,'message/http')">
+      <xsl:attribute name="class">text</xsl:attribute>
+    </xsl:when>
+    <xsl:when test="starts-with(@type,'drawing')">
+      <xsl:attribute name="class">drawing</xsl:attribute>
+    </xsl:when>
+    <xsl:when test="starts-with(@type,'text/plain') or @type='example' or @type='code'">
+      <xsl:attribute name="class">text</xsl:attribute>
+    </xsl:when>
+    <xsl:otherwise/>
+  </xsl:choose>
+</xsl:template>
+
+<xsl:template match="artwork">
+  <xsl:if test="not(ancestor::ed:del) and $xml2rfc-ext-parse-xml-in-artwork='yes' and function-available('myns:parseXml')">
+    <xsl:if test="contains(.,'&lt;?xml')">
+      <xsl:variable name="body" select="substring-after(substring-after(.,'&lt;?xml'),'?>')" /> 
+      <xsl:if test="$body!='' and myns:parseXml($body)!=''">
+        <table style="background-color: red; border-width: thin; border-style: solid; border-color: black;">
+        <tr><td>
+        XML PARSE ERROR; parsed the body below:
+        <pre>
+        <xsl:value-of select="$body"/>
+        </pre>
+        resulting in:
+        <pre>
+        <xsl:value-of select="myns:parseXml($body)" />
+        </pre>
+        </td></tr></table>
+      </xsl:if>
+    </xsl:if>
+    <xsl:if test="@ed:parse-xml-after">
+      <xsl:if test="myns:parseXml(string(.))!=''">
+        <table style="background-color: red; border-width: thin; border-style: solid; border-color: black;">
+        <tr><td>
+        XML PARSE ERROR:
+        <pre><xsl:value-of select="myns:parseXml(string(.))" /></pre>
+        </td></tr></table>
+      </xsl:if>
+    </xsl:if>
+  </xsl:if>
+  <xsl:variable name="display">
+    <xsl:choose>
+      <xsl:when test="$xml2rfc-ext-allow-markup-in-artwork='yes'">
+        <xsl:apply-templates/>
+      </xsl:when>
+      <xsl:otherwise>
+        <xsl:value-of select="."/>
+      </xsl:otherwise>
+    </xsl:choose>
+  </xsl:variable>  
+  <xsl:choose>
+    <xsl:when test="@align='right'">
+      <div style="display:table; margin-left: auto; margin-right: 0pt;">
+        <pre style="margin-left: 0em;">
+          <xsl:call-template name="add-artwork-class"/>
+          <xsl:call-template name="insertInsDelClass"/>
+          <xsl:copy-of select="$display"/>
+        </pre>          
+      </div>
+    </xsl:when>
+    <xsl:when test="@align='center'">
+      <div style="display:table; margin-left: auto; margin-right: auto;">
+        <pre style="margin-left: 0em;">
+          <xsl:call-template name="add-artwork-class"/>
+          <xsl:call-template name="insertInsDelClass"/>
+          <xsl:copy-of select="$display"/>
+        </pre>          
+      </div>
+    </xsl:when>
+    <xsl:otherwise>
+      <pre>
+        <xsl:call-template name="add-artwork-class"/>
+        <xsl:call-template name="insertInsDelClass"/>
+        <xsl:copy-of select="$display"/>
+      </pre>
+    </xsl:otherwise>
+  </xsl:choose>
+  <xsl:call-template name="check-artwork-width">
+    <xsl:with-param name="content"><xsl:apply-templates/></xsl:with-param>
+  </xsl:call-template>
+</xsl:template>
+
+<!-- special case for first text node in artwork -->
+<xsl:template match="artwork/text()[1]">
+  <xsl:choose>
+    <xsl:when test="starts-with(.,'&#10;')">
+      <!-- reduce leading whitespace -->
+      <xsl:value-of select="substring(.,2)"/>
+    </xsl:when>
+    <xsl:otherwise>
+      <xsl:value-of select="."/>
+    </xsl:otherwise>
+  </xsl:choose>
+</xsl:template>
+
+
+<xsl:template name="check-artwork-width">
+  <xsl:param name="content"/>
+  <xsl:choose>
+    <xsl:when test="not(contains($content,'&#10;'))">
+      <xsl:if test="string-length($content) > 69">
+        <xsl:message>artwork line too long: <xsl:value-of select="$content"/></xsl:message>
+      </xsl:if>
+    </xsl:when>
+    <xsl:otherwise>
+      <xsl:variable name="start" select="substring-before($content,'&#10;')"/> 
+      <xsl:variable name="end" select="substring-after($content,'&#10;')"/> 
+      <xsl:if test="string-length($start) > 69">
+        <xsl:message>WARNING: artwork line too long: <xsl:value-of select="$start"/><xsl:call-template name="lineno"/></xsl:message>
+      </xsl:if>
+      <xsl:call-template name="check-artwork-width">
+        <xsl:with-param name="content" select="$end"/>
+      </xsl:call-template>
+    </xsl:otherwise>
+  </xsl:choose>
+</xsl:template>
+
+<xsl:template match="artwork[@src and starts-with(@type,'image/')]">
+  <img src="{@src}" alt="{.}">
+    <xsl:copy-of select="@width|@height"/>
+  </img>
+</xsl:template>
+
+<xsl:template match="author">
+
+    <address class="vcard">
+      <span class="vcardline">
+        <span class="fn">
+          <xsl:value-of select="@fullname" />
+        </span>
+        <xsl:if test="@role">
+          (<xsl:value-of select="@role" />)
+        </xsl:if>
+        <!-- components of name (hidden from display -->
+        <span class="n hidden">
+          <span class="family-name"><xsl:value-of select="@surname"/></span>
+          <!-- given-name family-name -->
+          <xsl:if test="@surname=substring(@fullname,1 + string-length(@fullname) - string-length(@surname))">
+            <span class="given-name"><xsl:value-of select="normalize-space(substring(@fullname,1,string-length(@fullname) - string-length(@surname)))"/></span>
+          </xsl:if>
+          <!-- family-name given-name -->
+          <xsl:if test="starts-with(@fullname,@surname)">
+            <span class="given-name"><xsl:value-of select="normalize-space(substring-after(@fullname,@surname))"/></span>
+          </xsl:if>
+        </span>
+      </span>
+      <xsl:if test="normalize-space(organization) != ''">
+        <span class="org vcardline">
+          <xsl:value-of select="organization" />
+        </span>
+      </xsl:if>
+      <xsl:if test="address/postal">
+        <span class="adr">
+          <xsl:if test="address/postal/street!=''">
+            <xsl:for-each select="address/postal/street">
+              <span class="street-address vcardline">
+                <xsl:value-of select="." />
+              </span>
+            </xsl:for-each>
+          </xsl:if>
+          <xsl:if test="address/postal/city|address/postal/region|address/postal/code">
+            <span class="vcardline">
+              <xsl:if test="address/postal/city"><span class="locality"><xsl:value-of select="address/postal/city" /></span>, </xsl:if>
+              <xsl:if test="address/postal/region"><span class="region"><xsl:value-of select="address/postal/region" /></span>&#160;</xsl:if>
+              <xsl:if test="address/postal/code"><span class="postal-code"><xsl:value-of select="address/postal/code" /></span></xsl:if>
+            </span>
+          </xsl:if>
+          <xsl:if test="address/postal/country">
+            <span class="country-name vcardline"><xsl:value-of select="address/postal/country" /></span>
+          </xsl:if>
+        </span>
+      </xsl:if>
+      <xsl:if test="address/phone">
+        <span class="vcardline tel">
+          <xsl:text>Phone: </xsl:text>
+          <a href="tel:{translate(address/phone,' ','')}"><span class="value"><xsl:value-of select="address/phone" /></span></a>
+        </span>
+      </xsl:if>
+      <xsl:if test="address/facsimile">
+        <span class="vcardline tel">
+          <span class="type">Fax</span><xsl:text>: </xsl:text>
+          <a href="fax:{translate(address/facsimile,' ','')}"><span class="value"><xsl:value-of select="address/facsimile" /></span></a>
+        </span>
+      </xsl:if>
+      <xsl:if test="address/email">
+        <span class="vcardline">
+        <xsl:text>EMail: </xsl:text>
+        <a>
+          <xsl:if test="$xml2rfc-linkmailto!='no'">
+            <xsl:attribute name="href">mailto:<xsl:value-of select="address/email" /></xsl:attribute>
+          </xsl:if>
+          <span class="email"><xsl:value-of select="address/email" /></span>
+        </a>
+        </span>
+      </xsl:if>
+      <xsl:if test="address/uri">
+        <span class="vcardline">
+          <xsl:text>URI: </xsl:text>
+          <a href="{address/uri}" class="url"><xsl:value-of select="address/uri" /></a>
+        </span>
+      </xsl:if>
+    </address>
+
+</xsl:template>
+
+<xsl:template match="back">
+
+  <!-- add references section first, no matter where it appears in the
+    source document -->
+  <!-- as of April 2004, process from middle section 
+  <xsl:apply-templates select="references" />
+  -->
+  
+  <!-- add editorial comments -->
+  <xsl:if test="//cref and $xml2rfc-comments='yes' and $xml2rfc-inline!='yes'">
+    <xsl:call-template name="insertComments" />
+  </xsl:if>
+  
+  <!-- next, add information about the document's authors -->
+  <xsl:if test="$xml2rfc-ext-authors-section!='end'">
+    <xsl:call-template name="insertAuthors" />
+  </xsl:if>
+     
+  <!-- add all other top-level sections under <back> -->
+  <xsl:apply-templates select="*[not(self::references) and not(self::ed:replace and .//references)]" />
+
+  <xsl:if test="$xml2rfc-ext-authors-section='end'">
+    <xsl:call-template name="insertAuthors" />
+  </xsl:if>
+
+  <xsl:if test="not($xml2rfc-private)">
+    <!-- copyright statements -->
+    <xsl:variable name="copyright"><xsl:call-template name="insertCopyright" /></xsl:variable>
+  
+    <!-- emit it -->
+    <xsl:choose>
+      <xsl:when test="function-available('msxsl:node-set')">
+        <xsl:apply-templates select="msxsl:node-set($copyright)" />
+      </xsl:when>
+      <xsl:when test="function-available('exslt:node-set')">
+        <xsl:apply-templates select="exslt:node-set($copyright)" />
+      </xsl:when>
+      <xsl:otherwise>
+        <xsl:message><xsl:value-of select="$node-set-warning"/></xsl:message>
+        <p class="error"><xsl:value-of select="$node-set-warning"/></p>
+      </xsl:otherwise>
+    </xsl:choose>
+  </xsl:if>
+  
+  <!-- insert the index if index entries exist -->
+  <xsl:if test="$has-index">
+    <xsl:call-template name="insertIndex" />
+  </xsl:if>
+
+</xsl:template>
+
+<xsl:template match="eref[node()]">
+  <a href="{@target}"><xsl:apply-templates /></a>
+</xsl:template>
+               
+<xsl:template match="eref[not(node())]">
+  <xsl:text>&lt;</xsl:text>
+  <a href="{@target}"><xsl:value-of select="@target" /></a>
+  <xsl:text>&gt;</xsl:text>
+</xsl:template>
+
+<xsl:template match="figure">
+  <xsl:if test="@anchor!=''">
+    <div id="{@anchor}"/>
+  </xsl:if>
+  <xsl:variable name="anch">
+    <xsl:call-template name="get-figure-anchor"/>
+  </xsl:variable>
+  <div id="{$anch}" />
+  <xsl:apply-templates />
+  <xsl:if test="@title!='' or @anchor!=''">
+    <xsl:variable name="n"><xsl:number level="any" count="figure[@title!='' or @anchor!='']" /></xsl:variable>
+    <p class="figure">Figure <xsl:value-of select="$n"/><xsl:if test="@title!=''">: <xsl:value-of select="@title" /></xsl:if></p>
+  </xsl:if>
+</xsl:template>
+
+<xsl:template match="front">
+  
+  <xsl:if test="$xml2rfc-topblock!='no'">
+    <!-- collect information for left column -->
+      
+    <xsl:variable name="leftColumn">
+      <xsl:call-template name="collectLeftHeaderColumn" />    
+    </xsl:variable>
+  
+    <!-- collect information for right column -->
+      
+    <xsl:variable name="rightColumn">
+      <xsl:call-template name="collectRightHeaderColumn" />    
+    </xsl:variable>
+      
+    <!-- insert the collected information -->
+    <table summary="header information" class="header" border="0" cellpadding="1" cellspacing="1">
+      <xsl:choose>
+        <xsl:when test="function-available('msxsl:node-set')">
+          <xsl:call-template name="emitheader">
+            <xsl:with-param name="lc" select="msxsl:node-set($leftColumn)" />    
+            <xsl:with-param name="rc" select="msxsl:node-set($rightColumn)" />    
+          </xsl:call-template>
+        </xsl:when>    
+        <xsl:when test="function-available('exslt:node-set')">
+          <xsl:call-template name="emitheader">
+            <xsl:with-param name="lc" select="exslt:node-set($leftColumn)" />    
+            <xsl:with-param name="rc" select="exslt:node-set($rightColumn)" />    
+          </xsl:call-template>
+        </xsl:when>    
+        <xsl:otherwise>
+          <xsl:message><xsl:value-of select="$node-set-warning"/></xsl:message>
+          <p class="error"><xsl:value-of select="$node-set-warning"/></p>
+        </xsl:otherwise>
+      </xsl:choose>
+    </table>
+  </xsl:if>
+    
+  <p class="title">
+    <!-- main title -->
+    <xsl:apply-templates select="title"/>
+    <xsl:if test="/rfc/@docName">
+      <br/>
+      <span class="filename"><xsl:value-of select="/rfc/@docName"/></span>
+      
+      <xsl:if test="contains(/rfc/@docName,'.')">
+        <xsl:call-template name="warning">
+          <xsl:with-param name="msg">The @docName attribute should contain the base name, not the filename (thus no file extension).</xsl:with-param>
+        </xsl:call-template>
+      </xsl:if>
+    </xsl:if>  
+  </p>
+  
+  <!-- insert notice about update -->
+  <xsl:variable name="published-as" select="/*/x:link[@rel='Alternate' and starts-with(@title,'RFC')]"/>
+  <xsl:if test="$published-as">
+    <p style="color: green; text-align: center; font-size: 14pt; background-color: yellow;">
+      <b>Note:</b> a later version of this document has been published as <a href="{$published-as/@href}"><xsl:value-of select="$published-as/@title"/></a>.
+    </p>
+  </xsl:if>
+    
+  <xsl:if test="not($xml2rfc-private)">
+    <!-- Get status info formatted as per RFC2629-->
+    <xsl:variable name="preamble"><xsl:call-template name="insertPreamble" /></xsl:variable>
+    
+    <!-- emit it -->
+    <xsl:choose>
+      <xsl:when test="function-available('msxsl:node-set')">
+        <xsl:apply-templates select="msxsl:node-set($preamble)" />
+      </xsl:when>
+      <xsl:when test="function-available('exslt:node-set')">
+        <xsl:apply-templates select="exslt:node-set($preamble)" />
+      </xsl:when>
+      <xsl:otherwise>
+        <xsl:message><xsl:value-of select="$node-set-warning"/></xsl:message>
+        <p class="error"><xsl:value-of select="$node-set-warning"/></p>
+      </xsl:otherwise>
+    </xsl:choose>
+  </xsl:if>
+            
+  <xsl:apply-templates select="abstract" />
+  <xsl:apply-templates select="note" />
+  <!-- show notes inside change tracking as well -->
+  <xsl:apply-templates select="ed:replace[.//note]" />
+    
+  <xsl:if test="$xml2rfc-toc='yes'">
+    <xsl:apply-templates select="/" mode="toc" />
+    <xsl:call-template name="insertTocAppendix" />
+  </xsl:if>
+
+</xsl:template>
+
+
+<xsl:template match="iref">
+  <xsl:variable name="anchor"><xsl:call-template name="compute-iref-anchor"/></xsl:variable>
+  <xsl:choose>
+    <xsl:when test="ancestor::t|ancestor::figure">
+      <span id="{$anchor}"/>
+    </xsl:when>
+    <xsl:otherwise>
+      <div id="{$anchor}"/>
+    </xsl:otherwise>
+  </xsl:choose>
+</xsl:template>
+
+<xsl:template name="compute-iref-anchor">
+  <xsl:variable name="first" select="translate(substring(@item,1,1),$ucase,$lcase)"/>
+  <xsl:variable name="nkey" select="translate($first,$lcase,'')"/>
+  <xsl:choose>
+    <xsl:when test="$nkey=''">
+      <xsl:value-of select="$anchor-prefix"/>.iref.<xsl:value-of select="$first"/>.<xsl:number level="any" count="iref[starts-with(translate(@item,$ucase,$lcase),$first)]"/>
+    </xsl:when>
+    <xsl:otherwise>
+      <xsl:value-of select="$anchor-prefix"/>.iref.<xsl:number level="any" count="iref[translate(substring(@item,1,1),concat($lcase,$ucase),'')='']"/>
+    </xsl:otherwise>
+  </xsl:choose>
+</xsl:template>
+
+<!-- list templates depend on the list style -->
+
+<xsl:template match="list[@style='empty' or not(@style)]">
+  <dl class="empty">
+    <xsl:call-template name="insertInsDelClass"/>
+    <xsl:apply-templates />
+  </dl>
+</xsl:template>
+
+<xsl:template match="list[starts-with(@style,'format ')]">
+  <dl>
+    <xsl:call-template name="insertInsDelClass"/>
+    <xsl:apply-templates />
+  </dl>
+</xsl:template>
+
+<xsl:template match="list[@style='hanging']">
+  <dl>
+    <xsl:call-template name="insertInsDelClass"/>
+    <xsl:apply-templates />
+  </dl>
+</xsl:template>
+
+<xsl:template match="list[@style='numbers']">
+  <ol>
+    <xsl:call-template name="insertInsDelClass"/>
+    <xsl:apply-templates />
+  </ol>
+</xsl:template>
+
+<!-- numbered list inside numbered list -->
+<xsl:template match="list[@style='numbers']/t/list[@style='numbers']" priority="9">
+  <ol style="list-style-type: lower-alpha">
+    <xsl:call-template name="insertInsDelClass"/>
+    <xsl:apply-templates />
+  </ol>
+</xsl:template>
+
+<xsl:template match="list[@style='letters']">
+  <ol style="list-style-type: lower-alpha">
+    <xsl:call-template name="insertInsDelClass"/>
+    <xsl:apply-templates />
+  </ol>
+</xsl:template>
+
+<!-- nested lettered list uses uppercase -->
+<xsl:template match="list//t//list[@style='letters']" priority="9">
+  <ol style="list-style-type: upper-alpha">
+    <xsl:call-template name="insertInsDelClass"/>
+    <xsl:apply-templates />
+  </ol>
+</xsl:template>
+   
+<xsl:template match="list[@style='symbols']">
+  <ul>
+    <xsl:call-template name="insertInsDelClass"/>
+    <xsl:apply-templates />
+  </ul>
+</xsl:template>
+
+
+<!-- same for t(ext) elements -->
+
+<xsl:template match="list[@style='empty' or not(@style)]/t | list[@style='empty' or not(@style)]/ed:replace/ed:*/t">
+  <!-- Inherited through CSS now <dd style="margin-top: .5em">-->
+  <dd>
+    <xsl:call-template name="insertInsDelClass"/>
+    <xsl:if test="@anchor"><xsl:attribute name="id"><xsl:value-of select="@anchor"/></xsl:attribute></xsl:if>
+    <xsl:apply-templates />
+  </dd>
+</xsl:template>
+
+<xsl:template match="list[@style='numbers' or @style='symbols' or @style='letters']/x:lt">
+  <li>
+    <xsl:if test="@anchor"><xsl:attribute name="id"><xsl:value-of select="@anchor"/></xsl:attribute></xsl:if>
+    <xsl:apply-templates select="t" />
+  </li>
+</xsl:template>
+
+<xsl:template match="list[@style='numbers' or @style='symbols' or @style='letters']/t | list[@style='numbers' or @style='symbols' or @style='letters']/ed:replace/ed:*/t">
+  <li>
+    <xsl:call-template name="insertInsDelClass"/>
+    <xsl:for-each select="../..">
+      <xsl:call-template name="insert-issue-pointer"/>
+    </xsl:for-each>
+    <xsl:if test="@anchor"><xsl:attribute name="id"><xsl:value-of select="@anchor"/></xsl:attribute></xsl:if>
+    <xsl:apply-templates />
+  </li>
+</xsl:template>
+
+<xsl:template match="list[@style='hanging']/x:lt">
+  <xsl:if test="@hangText!=''">
+    <dt>
+      <xsl:call-template name="insertInsDelClass"/>
+      <xsl:variable name="del-node" select="ancestor::ed:del"/>
+      <xsl:variable name="rep-node" select="ancestor::ed:replace"/>
+      <xsl:variable name="deleted" select="$del-node and ($rep-node/ed:ins)"/>
+      <xsl:for-each select="../..">
+        <xsl:call-template name="insert-issue-pointer">
+          <xsl:with-param name="deleted-anchor" select="$deleted"/>
+        </xsl:call-template>
+      </xsl:for-each>
+      <xsl:if test="@anchor"><xsl:attribute name="id"><xsl:value-of select="@anchor"/></xsl:attribute></xsl:if>
+      <xsl:value-of select="@hangText" />
+    </dt>
+  </xsl:if>
+  <dd>
+    <xsl:call-template name="insertInsDelClass"/>
+    <!-- if hangIndent present, use 0.7 of the specified value (1em is the width of the "m" character -->
+    <xsl:if test="../@hangIndent and ../@hangIndent!='0'">
+      <xsl:attribute name="style">margin-left: <xsl:value-of select="../@hangIndent * 0.7"/>em</xsl:attribute>
+    </xsl:if>
+    <xsl:apply-templates select="t" />
+  </dd>
+</xsl:template>
+
+<xsl:template match="list[@style='hanging']/t | list[@style='hanging']/ed:replace/ed:*/t">
+  <xsl:if test="@hangText!=''">
+    <dt>
+      <xsl:call-template name="insertInsDelClass"/>
+      <xsl:if test="count(preceding-sibling::t)=0">
+        <xsl:variable name="del-node" select="ancestor::ed:del"/>
+        <xsl:variable name="rep-node" select="ancestor::ed:replace"/>
+        <xsl:variable name="deleted" select="$del-node and ($rep-node/ed:ins)"/>
+        <xsl:for-each select="../..">
+          <xsl:call-template name="insert-issue-pointer">
+            <xsl:with-param name="deleted-anchor" select="$deleted"/>
+          </xsl:call-template>
+        </xsl:for-each>
+      </xsl:if>
+      <xsl:if test="@anchor"><xsl:attribute name="id"><xsl:value-of select="@anchor"/></xsl:attribute></xsl:if>
+      <xsl:value-of select="@hangText" />
+    </dt>
+  </xsl:if>
+
+  <xsl:variable name="dd-content">
+    <xsl:apply-templates/>
+  </xsl:variable>
+
+  <xsl:if test="$dd-content!=''">
+    <dd>
+      <xsl:call-template name="insertInsDelClass"/>
+      <!-- if hangIndent present, use 0.7 of the specified value (1em is the width of the "m" character -->
+      <xsl:if test="../@hangIndent and ../@hangIndent!='0'">
+        <xsl:attribute name="style">margin-left: <xsl:value-of select="../@hangIndent * 0.7"/>em</xsl:attribute>
+      </xsl:if>
+      <xsl:apply-templates />
+    </dd>
+  </xsl:if>
+</xsl:template>
+
+<xsl:template match="list[starts-with(@style,'format ') and (contains(@style,'%c') or contains(@style,'%d'))]/t">
+  <xsl:variable name="list" select=".." />
+  <xsl:variable name="format" select="substring-after(../@style,'format ')" />
+  <xsl:variable name="pos">
+    <xsl:choose>
+      <xsl:when test="$list/@counter">
+        <xsl:number level="any" count="list[@counter=$list/@counter or (not(@counter) and @style=concat('format ',$list/@counter))]/t" />
+      </xsl:when>
+      <xsl:otherwise>
+        <xsl:number level="any" count="list[concat('format ',@counter)=$list/@style or (not(@counter) and @style=$list/@style)]/t" />
+      </xsl:otherwise>
+    </xsl:choose>
+  </xsl:variable>
+  <dt>
+    <xsl:if test="@anchor"><xsl:attribute name="id"><xsl:value-of select="@anchor"/></xsl:attribute></xsl:if>
+    <xsl:choose>
+      <xsl:when test="contains($format,'%c')">
+        <xsl:value-of select="substring-before($format,'%c')"/><xsl:number value="$pos" format="a" /><xsl:value-of select="substring-after($format,'%c')"/>
+      </xsl:when>
+      <xsl:otherwise>
+        <xsl:value-of select="substring-before($format,'%d')"/><xsl:number value="$pos" format="1" /><xsl:value-of select="substring-after($format,'%d')"/>
+      </xsl:otherwise>
+    </xsl:choose>
+  </dt>
+  <dd>
+    <xsl:apply-templates />
+  </dd>
+</xsl:template>
+
+<xsl:template match="middle">
+  <xsl:apply-templates />
+  <xsl:apply-templates select="../back//references"/>
+</xsl:template>
+
+<xsl:template match="note">
+  <xsl:variable name="num"><xsl:number/></xsl:variable>
+    <h1 id="{$anchor-prefix}.note.{$num}">
+      <xsl:call-template name="insertInsDelClass"/>
+      <a href="#{$anchor-prefix}.note.{$num}">
+        <xsl:value-of select="@title" />
+      </a>
+    </h1>
+  <xsl:apply-templates />
+</xsl:template>
+
+<xsl:template match="postamble">
+  <xsl:if test="normalize-space(.) != ''">
+    <p>
+      <xsl:call-template name="insertInsDelClass"/>
+      <xsl:call-template name="editingMark" />
+      <xsl:apply-templates />
+    </p>
+  </xsl:if>
+</xsl:template>
+
+<xsl:template match="preamble">
+  <xsl:if test="normalize-space(.) != ''">
+    <p>
+      <xsl:if test="@anchor">
+        <xsl:attribute name="id"><xsl:value-of select="@anchor"/></xsl:attribute>
+      </xsl:if>
+      <xsl:call-template name="insertInsDelClass"/>
+      <xsl:call-template name="editingMark" />
+      <xsl:apply-templates />
+    </p>
+  </xsl:if>
+</xsl:template>
+
+<xsl:template name="computed-auto-target">
+  <xsl:param name="bib"/>
+  <xsl:param name="ref"/>
+
+  <xsl:choose>
+    <xsl:when test="$bib/seriesInfo/@name='RFC'">
+      <xsl:value-of select="concat($rfcUrlPrefix,$bib/seriesInfo[@name='RFC']/@value,$rfcUrlPostfix)" />
+      <xsl:if test="$ref and $ref/@x:sec and $rfcUrlFrag">
+        <xsl:value-of select="concat('#',$rfcUrlFrag,$ref/@x:sec)"/>
+      </xsl:if>
+    </xsl:when>
+    <xsl:when test="$bib/seriesInfo/@name='Internet-Draft'">
+      <xsl:value-of select="concat($internetDraftUrlPrefix,$bib/seriesInfo[@name='Internet-Draft']/@value,$internetDraftUrlPostfix)" />
+      <xsl:if test="$ref and $ref/@x:sec and $internetDraftUrlFrag">
+        <xsl:value-of select="concat('#',$internetDraftUrlFrag,$ref/@x:sec)"/>
+      </xsl:if>
+    </xsl:when>
+    <xsl:otherwise />
+  </xsl:choose>  
+  
+</xsl:template>
+
+<xsl:template name="computed-target">
+  <xsl:param name="bib"/>
+  <xsl:param name="ref"/>
+
+  <xsl:choose>
+    <xsl:when test="$bib/@target">
+      <xsl:if test="$ref and $ref/@x:sec and $ref/@x:rel">
+        <xsl:value-of select="concat($bib/@target,$ref/@x:rel)"/>
+      </xsl:if>
+    </xsl:when>
+    <xsl:otherwise>
+      <xsl:call-template name="computed-auto-target">
+        <xsl:with-param name="bib" select="$bib"/>
+        <xsl:with-param name="ref" select="$ref"/>
+      </xsl:call-template>
+    </xsl:otherwise>
+  </xsl:choose>  
+  
+</xsl:template>
+
+<xsl:template match="reference">
+
+  <!-- check for reference to reference -->
+  <xsl:variable name="anchor" select="@anchor"/>
+  <xsl:if test="not(ancestor::ed:del) and not(//xref[@target=$anchor])">
+    <xsl:message>WARNING: unused reference '<xsl:value-of select="@anchor"/>'<xsl:call-template name="lineno"/></xsl:message>
+  </xsl:if>
+
+  <xsl:variable name="target">
+    <xsl:choose>
+      <xsl:when test="@target"><xsl:value-of select="@target" /></xsl:when>
+      <xsl:otherwise>
+        <xsl:call-template name="computed-auto-target">
+          <xsl:with-param name="bib" select="."/>
+        </xsl:call-template>
+      </xsl:otherwise>
+    </xsl:choose>
+  </xsl:variable>
+  
+  <tr>
+    <td class="reference">
+      <xsl:call-template name="insertInsDelClass"/>
+      <xsl:variable name="del-node" select="ancestor::ed:del"/>
+      <xsl:variable name="rep-node" select="ancestor::ed:replace"/>
+      <xsl:variable name="deleted" select="$del-node and ($rep-node/ed:ins)"/>
+      <xsl:for-each select="../..">
+        <xsl:call-template name="insert-issue-pointer">
+          <xsl:with-param name="deleted-anchor" select="$deleted"/>
+        </xsl:call-template>
+      </xsl:for-each>
+      <b id="{@anchor}">
+        <xsl:call-template name="referencename">
+          <xsl:with-param name="node" select="." />
+        </xsl:call-template>
+      </b>
+    </td>
+    
+    <td class="top">
+      <xsl:call-template name="insertInsDelClass"/>
+      <xsl:for-each select="front/author">
+        <xsl:variable name="initials">
+          <xsl:call-template name="format-initials"/>
+        </xsl:variable>
+      
+        <xsl:choose>
+          <xsl:when test="@surname and @surname!=''">
+            <xsl:variable name="displayname">
+              <!-- surname/initials is reversed for last author except when it's the only one -->
+              <xsl:choose>
+                <xsl:when test="position()=last() and position()!=1">
+                  <xsl:value-of select="concat($initials,' ',@surname)" />
+                </xsl:when>
+                <xsl:otherwise>
+                  <xsl:value-of select="concat(@surname,', ',$initials)" />
+                </xsl:otherwise>
+              </xsl:choose>
+              <xsl:if test="@role='editor'">
+                <xsl:text>, Ed.</xsl:text>
+              </xsl:if>
+            </xsl:variable>
+            <xsl:choose>
+              <xsl:when test="address/email">
+                <a>
+                  <xsl:if test="$xml2rfc-linkmailto!='no'">
+                    <xsl:attribute name="href">mailto:<xsl:value-of select="address/email" /></xsl:attribute>
+                  </xsl:if>
+                  <xsl:if test="organization/text()">
+                    <xsl:attribute name="title"><xsl:value-of select="organization/text()"/></xsl:attribute>
+                  </xsl:if>
+                  <xsl:value-of select="$displayname" />
+                </a>
+              </xsl:when>
+              <xsl:otherwise>
+                <xsl:value-of select="$displayname" />
+              </xsl:otherwise>
+            </xsl:choose>
+            
+            <xsl:choose>
+              <xsl:when test="position()=last() - 1">
+                <xsl:if test="last() &gt; 2">,</xsl:if>
+                <xsl:text> and </xsl:text>
+              </xsl:when>
+              <xsl:otherwise>
+                <xsl:text>, </xsl:text>
+              </xsl:otherwise>
+            </xsl:choose>
+          </xsl:when>
+          <xsl:when test="organization/text()">
+            <xsl:choose>
+              <xsl:when test="address/uri">
+                <a href="{address/uri}"><xsl:value-of select="organization" /></a>
+              </xsl:when>
+              <xsl:otherwise>
+                <xsl:value-of select="organization" />
+              </xsl:otherwise>
+            </xsl:choose>
+            
+            <xsl:choose>
+              <xsl:when test="position()=last() - 1">
+                <xsl:if test="last() &gt; 2">,</xsl:if>
+                <xsl:text> and </xsl:text>
+              </xsl:when>
+              <xsl:otherwise>
+                <xsl:text>, </xsl:text>
+              </xsl:otherwise>
+            </xsl:choose>
+          </xsl:when>
+          <xsl:otherwise />
+        </xsl:choose>
+      </xsl:for-each>
+         
+      <xsl:choose>
+        <xsl:when test="string-length($target) &gt; 0">
+          <xsl:text>&#8220;</xsl:text><a href="{$target}"><xsl:value-of select="front/title" /></a><xsl:text>&#8221;</xsl:text>
+        </xsl:when>
+        <xsl:otherwise>
+          <xsl:text>&#8220;</xsl:text><xsl:value-of select="front/title" /><xsl:text>&#8221;</xsl:text>
+        </xsl:otherwise>
+      </xsl:choose>
+            
+      <xsl:for-each select="seriesInfo">
+        <xsl:text>, </xsl:text>
+        <xsl:choose>
+          <xsl:when test="not(@name) and not(@value) and ./text()"><xsl:value-of select="." /></xsl:when>
+          <xsl:otherwise>
+            <xsl:value-of select="@name" />
+            <xsl:if test="@value!=''">&#0160;<xsl:value-of select="@value" /></xsl:if>
+            <xsl:if test="translate(@name,$ucase,$lcase)='internet-draft'"> (work in progress)</xsl:if>
+          </xsl:otherwise>
+        </xsl:choose>
+      </xsl:for-each>
+      
+      <xsl:if test="front/date/@year != '' and front/date/@year != '???'">
+        <xsl:text>, </xsl:text>
+        <xsl:if test="front/date/@month and (front/date/@month!='???' and front/date/@month!='')"><xsl:value-of select="front/date/@month" />&#0160;</xsl:if>
+        <xsl:value-of select="front/date/@year" />
+      </xsl:if>
+      
+      <xsl:if test="@target">
+        <xsl:text>, &lt;</xsl:text>
+        <a href="{@target}"><xsl:value-of select="@target"/></a>
+        <xsl:text>&gt;</xsl:text>
+      </xsl:if>
+      
+      <xsl:text>.</xsl:text>
+
+      <xsl:for-each select="annotation">
+        <br />
+        <xsl:apply-templates />
+      </xsl:for-each>
+
+    </td>
+  </tr>
+  
+  
+</xsl:template>
+
+
+<xsl:template match="references">
+
+  <xsl:variable name="name">
+    <xsl:if test="ancestor::ed:del">
+      <xsl:text>del-</xsl:text>
+    </xsl:if>
+    <xsl:number level="any"/>      
+  </xsl:variable>
+  
+  <xsl:variable name="refseccount" select="count(/rfc/back/references)+count(/rfc/back/ed:replace/ed:ins/references)"/>
+
+  <!-- insert pseudo section when needed -->
+  <xsl:if test="not(preceding::references) and $refseccount!=1">
+    <xsl:call-template name="insert-conditional-hrule"/>
+    <h1 id="{$anchor-prefix}.references">
+      <xsl:call-template name="insert-conditional-pagebreak"/>
+      <xsl:variable name="sectionNumber">
+        <xsl:call-template name="get-references-section-number"/>
+      </xsl:variable>
+      <a id="{$anchor-prefix}.section.{$sectionNumber}" href="#{$anchor-prefix}.section.{$sectionNumber}">
+        <xsl:call-template name="emit-section-number">
+          <xsl:with-param name="no" select="$sectionNumber"/>
+        </xsl:call-template>
+      </a>
+      <xsl:text> References</xsl:text>
+    </h1>
+  </xsl:if>
+  
+  <xsl:variable name="elemtype">
+    <xsl:choose>
+      <xsl:when test="$refseccount!=1">h2</xsl:when>
+      <xsl:otherwise>h1</xsl:otherwise>
+    </xsl:choose>
+  </xsl:variable>
+  
+  <xsl:variable name="title">
+    <xsl:choose>
+      <xsl:when test="not(@title) or @title=''">References</xsl:when>
+      <xsl:otherwise><xsl:value-of select="@title"/></xsl:otherwise>
+    </xsl:choose>
+  </xsl:variable>
+  
+  <xsl:element name="{$elemtype}"> 
+    <xsl:if test="$name='1'">
+      <xsl:call-template name="insert-conditional-pagebreak"/>
+    </xsl:if>
+    <xsl:variable name="sectionNumber">
+      <xsl:call-template name="get-section-number"/>
+    </xsl:variable>
+    <xsl:variable name="anchorpref">
+      <xsl:choose>
+        <xsl:when test="$elemtype='h1'"></xsl:when>
+        <xsl:otherwise>.<xsl:value-of select="$name"/></xsl:otherwise>
+      </xsl:choose>
+    </xsl:variable>
+    <xsl:attribute name="id"><xsl:value-of select="concat($anchor-prefix,'.references',$anchorpref)"/></xsl:attribute>
+    <a href="#{$anchor-prefix}.section.{$sectionNumber}" id="{$anchor-prefix}.section.{$sectionNumber}">
+      <xsl:call-template name="emit-section-number">
+        <xsl:with-param name="no" select="$sectionNumber"/>
+      </xsl:call-template>
+    </a>
+    <xsl:text> </xsl:text>
+    <xsl:value-of select="$title"/>
+  </xsl:element>
+ 
+  <table summary="{$title}">
+    <xsl:choose>
+      <xsl:when test="$xml2rfc-sortrefs='yes' and $xml2rfc-symrefs!='no'">
+        <xsl:apply-templates>
+          <xsl:sort select="@anchor|.//ed:ins//reference/@anchor" />
+        </xsl:apply-templates>
+      </xsl:when>
+      <xsl:otherwise>
+        <xsl:apply-templates />
+      </xsl:otherwise>
+    </xsl:choose>
+  </table>
+
+</xsl:template>
+
+<xsl:template match="rfc">
+  
+  <!-- conformance checks -->
+  <xsl:if test="$xml2rfc-symrefs!='no' and $xml2rfc-symrefs!='yes' and //reference">
+    <xsl:message>WARNING: symrefs PI not specified; default has changed from 'no' to 'yes'.</xsl:message>
+  </xsl:if>
+  
+  <xsl:variable name="lang">
+    <xsl:call-template name="get-lang" />
+  </xsl:variable>
+
+  <html lang="{$lang}">
+    <head profile="http://www.w3.org/2006/03/hcard">
+      <title>
+        <xsl:apply-templates select="front/title" mode="get-text-content" />
+      </title>
+      <style type="text/css" title="Xml2Rfc (sans serif)">
+        <xsl:call-template name="insertCss" />
+      </style>
+      <!-- <link rel="alternate stylesheet" type="text/css" media="screen" title="Plain (typewriter)" href="rfc2629tty.css" /> -->
+            
+      <!-- link elements -->
+      <xsl:if test="$xml2rfc-toc='yes'">
+        <link rel="Contents" href="#{$anchor-prefix}.toc" />
+      </xsl:if>
+      <link rel="Author" href="#{$anchor-prefix}.authors" />
+      <xsl:if test="not($xml2rfc-private)">
+        <link rel="Copyright" href="#{$anchor-prefix}.copyright" />
+      </xsl:if>
+      <xsl:if test="$has-index">
+        <link rel="Index" href="#{$anchor-prefix}.index" />
+      </xsl:if>
+      <xsl:apply-templates select="/" mode="links" />
+      <xsl:for-each select="/rfc/x:link">
+        <link><xsl:copy-of select="@*" /></link>
+      </xsl:for-each>
+      <xsl:if test="/rfc/@number">
+        <link rel="Alternate" title="Authorative ASCII version" href="http://www.ietf.org/rfc/rfc{/rfc/@number}.txt" />
+      </xsl:if>
+
+      <!-- generator -->
+      <xsl:variable name="gen">
+        <xsl:call-template name="get-generator" />
+      </xsl:variable>
+      <meta name="generator" content="{$gen}" />
+      
+      <!-- keywords -->
+      <xsl:if test="front/keyword">
+        <xsl:variable name="keyw">
+          <xsl:call-template name="get-keywords" />
+        </xsl:variable>
+        <meta name="keywords" content="{$keyw}" />
+      </xsl:if>
+
+      <xsl:if test="$xml2rfc-ext-support-rfc2731!='no'">
+        <!-- Dublin Core Metadata -->
+        <link rel="schema.DC" href="http://purl.org/dc/elements/1.1/" />
+              
+        <!-- DC creator, see RFC2731 -->
+        <xsl:for-each select="/rfc/front/author">
+          <xsl:variable name="initials">
+            <xsl:call-template name="format-initials"/>
+          </xsl:variable>
+          <meta name="DC.Creator" content="{concat(@surname,', ',$initials)}" />
+        </xsl:for-each>
+        
+        <xsl:if test="not($xml2rfc-private)">
+          <xsl:choose>
+            <xsl:when test="/rfc/@number">
+              <meta name="DC.Identifier" content="urn:ietf:rfc:{/rfc/@number}" />
+            </xsl:when>
+            <xsl:when test="/rfc/@docName">
+              <meta name="DC.Identifier" content="urn:ietf:id:{/rfc/@docName}" />
+            </xsl:when>
+            <xsl:otherwise/>
+          </xsl:choose>
+          <xsl:variable name="month"><xsl:call-template name="get-month-as-num"/></xsl:variable>
+          <meta name="DC.Date.Issued" scheme="ISO8601" content="{/rfc/front/date/@year}-{$month}" />
+  
+          <xsl:if test="/rfc/@obsoletes!=''">
+            <xsl:call-template name="rfclist-for-dcmeta">
+              <xsl:with-param name="list" select="/rfc/@obsoletes"/>
+            </xsl:call-template>
+          </xsl:if>
+        </xsl:if>
+  
+        <xsl:if test="/rfc/front/abstract">
+          <meta name="DC.Description.Abstract" content="{normalize-space(/rfc/front/abstract)}" />
+        </xsl:if>      
+      </xsl:if>      
+    </head>
+    <body>
+      <!-- insert diagnostics -->
+      <xsl:call-template name="insert-diagnostics"/>
+
+      <xsl:apply-templates select="front" />
+      <xsl:apply-templates select="middle" />
+      <xsl:apply-templates select="back" />
+    </body>
+  </html>
+</xsl:template>               
+
+
+<xsl:template match="t">
+  <xsl:if test="preceding-sibling::section or preceding-sibling::appendix">
+    <xsl:call-template name="warning">
+      <xsl:with-param name="msg">The paragraph below is misplaced; maybe a section is closed in the wrong place: </xsl:with-param>
+      <xsl:with-param name="msg2"><xsl:value-of select="."/></xsl:with-param>
+    </xsl:call-template>
+  </xsl:if>
+  <xsl:choose>
+    <xsl:when test="@anchor">
+      <div id="{@anchor}"><xsl:apply-templates mode="t-content" select="node()[1]" /></div>
+    </xsl:when>
+    <xsl:otherwise>
+      <xsl:apply-templates mode="t-content" select="node()[1]" />
+    </xsl:otherwise>
+  </xsl:choose>
+</xsl:template>
+
+<!-- for t-content, dispatch to default templates if it's block-level content -->
+<xsl:template mode="t-content" match="list|figure|texttable">
+  <!-- <xsl:comment>t-content block-level</xsl:comment>  -->
+  <xsl:apply-templates select="." />
+  <xsl:apply-templates select="following-sibling::node()[1]" mode="t-content" />
+</xsl:template>               
+               
+<!-- ... otherwise group into p elements -->
+<xsl:template mode="t-content" match="*|node()">
+  <xsl:variable name="p">
+    <xsl:call-template name="get-paragraph-number" />
+  </xsl:variable>
+
+  <!-- do not open a new p element if this is a whitespace-only text node and no siblings follow -->  
+  <xsl:if test="not(self::text() and normalize-space(.)='' and not(following-sibling::node()))">
+    <p>
+      <xsl:if test="$p!='' and not(ancestor::ed:del) and not(ancestor::ed:ins) and not(ancestor::x:lt) and count(preceding-sibling::node())=0">
+        <xsl:attribute name="id"><xsl:value-of select="$anchor-prefix"/>.section.<xsl:value-of select="$p"/></xsl:attribute>
+      </xsl:if>
+      <xsl:call-template name="insertInsDelClass"/>
+      <xsl:call-template name="editingMark" />
+      <xsl:apply-templates mode="t-content2" select="." />
+    </p>
+  </xsl:if>
+  <xsl:apply-templates mode="t-content" select="following-sibling::*[self::list or self::figure or self::texttable][1]" />
+</xsl:template>               
+               
+<xsl:template mode="t-content2" match="*">
+  <xsl:apply-templates select="." />
+  <xsl:if test="not(following-sibling::node()[1] [self::list or self::figure or self::texttable])">
+    <xsl:apply-templates select="following-sibling::node()[1]" mode="t-content2" />
+  </xsl:if>
+</xsl:template>       
+
+<xsl:template mode="t-content2" match="text()">
+  <xsl:apply-templates select="." />
+  <xsl:if test="not(following-sibling::node()[1] [self::list or self::figure or self::texttable])">
+    <xsl:apply-templates select="following-sibling::node()[1]" mode="t-content2" />
+  </xsl:if>
+</xsl:template>               
+
+<xsl:template match="title">
+  <xsl:apply-templates />
+</xsl:template>
+
+<xsl:template name="insertTitle">
+  <xsl:choose>
+    <xsl:when test="@ed:old-title">
+      <del>
+        <xsl:if test="ancestor-or-self::*[@ed:entered-by] and @ed:datetime">
+          <xsl:attribute name="title"><xsl:value-of select="concat(@ed:datetime,', ',ancestor-or-self::*[@ed:entered-by][1]/@ed:entered-by)"/></xsl:attribute>
+        </xsl:if>
+        <xsl:value-of select="@ed:old-title"/>
+      </del>
+      <ins>
+        <xsl:if test="ancestor-or-self::*[@ed:entered-by] and @ed:datetime">
+          <xsl:attribute name="title"><xsl:value-of select="concat(@ed:datetime,', ',ancestor-or-self::*[@ed:entered-by][1]/@ed:entered-by)"/></xsl:attribute>
+        </xsl:if>
+        <xsl:value-of select="@title"/>
+      </ins>
+    </xsl:when>
+    <xsl:otherwise>
+      <xsl:value-of select="@title"/>
+    </xsl:otherwise>
+  </xsl:choose>
+</xsl:template>
+
+<xsl:template match="section|appendix">
+
+  <xsl:variable name="sectionNumber">
+    <xsl:choose>
+      <xsl:when test="@myns:unnumbered"></xsl:when>
+      <xsl:otherwise><xsl:call-template name="get-section-number" /></xsl:otherwise>
+    </xsl:choose>
+  </xsl:variable>
+    
+  <xsl:if test="not(ancestor::section) and not(@myns:notoclink)">
+    <xsl:call-template name="insert-conditional-hrule"/>
+  </xsl:if>
+  
+  <xsl:variable name="elemtype">
+    <xsl:choose>
+      <xsl:when test="count(ancestor::section) = 0">h1</xsl:when>
+      <xsl:when test="count(ancestor::section) = 1">h2</xsl:when>
+      <xsl:when test="count(ancestor::section) = 2">h3</xsl:when>
+      <xsl:when test="count(ancestor::section) = 3">h4</xsl:when>
+      <xsl:otherwise>h5</xsl:otherwise>
+    </xsl:choose>
+  </xsl:variable>
+  
+  <!-- process irefs immediadetely following the section so that their anchor
+  actually is the section heading -->
+  <xsl:apply-templates select="iref[count(preceding-sibling::*[not(self::iref)])=0]"/>
+
+  <xsl:element name="{$elemtype}">
+    <xsl:if test="$sectionNumber!=''">
+      <xsl:attribute name="id"><xsl:value-of select="$anchor-prefix"/>.section.<xsl:value-of select="$sectionNumber"/></xsl:attribute>
+    </xsl:if>
+    <xsl:choose>
+      <xsl:when test="$sectionNumber='1'">
+        <!-- pagebreak, this the first section -->
+        <xsl:attribute name="class">np</xsl:attribute>
+      </xsl:when>
+      <xsl:when test="not(ancestor::section) and not(@myns:notoclink)">
+        <xsl:call-template name="insert-conditional-pagebreak"/>
+      </xsl:when>
+      <xsl:otherwise/>
+    </xsl:choose>
+    
+    <xsl:call-template name="insertInsDelClass" />
+        
+    <xsl:if test="$sectionNumber!=''">
+      <a href="#{$anchor-prefix}.section.{$sectionNumber}">
+        <xsl:call-template name="emit-section-number">
+          <xsl:with-param name="no" select="$sectionNumber"/>
+        </xsl:call-template>
+      </a>
+      <xsl:text>&#0160;</xsl:text>
+    </xsl:if>
+    
+    <!-- issue tracking? -->
+    <xsl:if test="@ed:resolves">
+      <xsl:call-template name="insert-issue-pointer"/>
+    </xsl:if>
+    
+    <xsl:choose>
+      <xsl:when test="@anchor">
+        <a id="{@anchor}" href="#{@anchor}"><xsl:call-template name="insertTitle"/></a>
+      </xsl:when>
+      <xsl:otherwise>
+        <xsl:call-template name="insertTitle"/>
+      </xsl:otherwise>
+    </xsl:choose>
+  </xsl:element>
+  <!-- continue with all child elements but the irefs processed above -->
+  <xsl:apply-templates select="*[not(self::iref)]|iref[count(preceding-sibling::*[not(self::iref)])!=0]" />
+</xsl:template>
+
+<xsl:template match="spanx[@style='emph' or not(@style)]">
+  <em>
+    <xsl:if test="@anchor">
+      <xsl:attribute name="id"><xsl:value-of select="@anchor"/></xsl:attribute>
+    </xsl:if>
+    <xsl:apply-templates />
+  </em>
+</xsl:template>
+
+<xsl:template match="spanx[@style='verb']">
+  <samp>
+    <xsl:if test="@anchor">
+      <xsl:attribute name="id"><xsl:value-of select="@anchor"/></xsl:attribute>
+    </xsl:if>
+    <xsl:apply-templates />
+  </samp>
+</xsl:template>
+
+<xsl:template match="spanx[@style='strong']">
+  <strong>
+    <xsl:if test="@anchor">
+      <xsl:attribute name="id"><xsl:value-of select="@anchor"/></xsl:attribute>
+    </xsl:if>
+    <xsl:apply-templates />
+  </strong>
+</xsl:template>
+
+<xsl:template name="insert-blank-lines">
+  <xsl:param name="no"/>
+  <xsl:choose>
+    <xsl:when test="$no &lt;= 0">
+      <br/>
+      <!-- done -->
+    </xsl:when>
+    <xsl:otherwise>
+      <br/>
+      <xsl:call-template name="insert-blank-lines">
+        <xsl:with-param name="no" select="$no - 1"/>
+      </xsl:call-template>
+    </xsl:otherwise>
+  </xsl:choose>
+</xsl:template>
+
+<xsl:template match="vspace[not(@blankLines)]">
+  <br />
+</xsl:template>
+
+<xsl:template match="vspace">
+  <xsl:call-template name="insert-blank-lines">
+    <xsl:with-param name="no" select="@blankLines"/>
+  </xsl:call-template>
+</xsl:template>
+
+<!-- keep the root for the case when we process XSLT-inline markup -->
+<xsl:variable name="src" select="/" />
+
+<xsl:template name="render-section-ref">
+  <xsl:param name="from" />
+  <xsl:param name="to" />
+
+  <xsl:variable name="refname">
+    <xsl:for-each select="$to">
+      <xsl:call-template name="get-section-type">
+        <xsl:with-param name="prec" select="$from/preceding-sibling::node()[1]" />
+      </xsl:call-template>
+    </xsl:for-each>
+  </xsl:variable>
+  <xsl:variable name="refnum">
+    <xsl:for-each select="$to">
+      <xsl:call-template name="get-section-number" />
+    </xsl:for-each>
+  </xsl:variable>
+  <xsl:attribute name="title">
+    <xsl:value-of select="$to/@title" />
+  </xsl:attribute>
+  <xsl:choose>
+    <xsl:when test="@format='counter'">
+      <xsl:value-of select="$refnum"/>
+    </xsl:when>
+    <xsl:when test="@format='title'">
+      <xsl:value-of select="$to/@title"/>
+    </xsl:when>
+    <xsl:otherwise>
+      <xsl:value-of select="normalize-space(concat($refname,'&#160;',$refnum))"/>
+    </xsl:otherwise>
+  </xsl:choose>
+</xsl:template>
+
+<xsl:template match="xref[node()]">
+
+  <xsl:variable name="target" select="@target" />
+  <xsl:variable name="node" select="$src//*[@anchor=$target]" />
+  <xsl:variable name="anchor"><xsl:value-of select="$anchor-prefix"/>.xref.<xsl:value-of select="@target"/>.<xsl:number level="any" count="xref[@target=$target]"/></xsl:variable>
+
+  <xsl:choose>
+
+    <!-- x:fmt='none': do not generate any links -->
+    <xsl:when test="@x:fmt='none'">
+      <xsl:choose>
+        <xsl:when test="name($node)='reference'">
+          <cite title="{normalize-space($node/front/title)}">
+            <xsl:if test="$xml2rfc-ext-include-references-in-index='yes'">
+              <xsl:attribute name="id"><xsl:value-of select="$anchor"/></xsl:attribute>
+            </xsl:if>
+            <!-- insert id when a backlink to this xref is needed in the index -->
+            <xsl:if test="//iref[@x:for-anchor=$target] | //iref[@x:for-anchor='' and ../@anchor=$target]">
+              <xsl:attribute name="id"><xsl:value-of select="$anchor"/></xsl:attribute>
+            </xsl:if>
+            <xsl:apply-templates/>
+          </cite>
+        </xsl:when>
+        <xsl:otherwise>
+          <xsl:apply-templates/>
+        </xsl:otherwise>
+      </xsl:choose>
+    </xsl:when>
+  
+    <!-- Other x:fmt values than "none": unsupported -->
+    <xsl:when test="@x:fmt and @x:fmt!='none'">
+      <xsl:message>unknown xref/@x:fmt extension: <xsl:value-of select="@x:fmt"/></xsl:message>
+      <span class="error">unknown xref/@x:fmt extension: <xsl:value-of select="@x:fmt"/></span>
+    </xsl:when>
+
+    <!-- Section links -->
+    <xsl:when test="name($node)='section' or name($node)='appendix'">
+      <xsl:apply-templates/>
+      <xsl:variable name="context" select="."/>
+      <xsl:text> (</xsl:text>
+      <a href="#{@target}">
+        <!-- insert id when a backlink to this xref is needed in the index -->
+        <xsl:if test="//iref[@x:for-anchor=$target] | //iref[@x:for-anchor='' and ../@anchor=$target]">
+          <xsl:attribute name="id"><xsl:value-of select="$anchor"/></xsl:attribute>
+        </xsl:if>
+        <xsl:call-template name="render-section-ref">
+          <xsl:with-param name="from" select="."/>
+          <xsl:with-param name="to" select="$node"/>
+        </xsl:call-template>
+      </a>
+      <xsl:text>)</xsl:text>
+    </xsl:when>
+
+    <xsl:otherwise>
+      <a href="#{$target}"><xsl:apply-templates /></a>
+      <xsl:for-each select="$src/rfc/back/references//reference[@anchor=$target]">
+        <xsl:text> </xsl:text>
+        <cite title="{normalize-space(front/title)}">
+          <xsl:if test="$xml2rfc-ext-include-references-in-index='yes'">
+            <xsl:attribute name="id"><xsl:value-of select="$anchor"/></xsl:attribute>
+          </xsl:if>
+          <xsl:call-template name="referencename">
+             <xsl:with-param name="node" select="." />
+          </xsl:call-template>
+        </cite>
+      </xsl:for-each>
+    </xsl:otherwise>
+  </xsl:choose>
+
+</xsl:template>
+               
+<xsl:template match="xref[not(node())]">
+
+  <xsl:variable name="context" select="." />
+  <xsl:variable name="target" select="@target" />
+  <xsl:variable name="anchor"><xsl:value-of select="$anchor-prefix"/>.xref.<xsl:value-of select="@target"/>.<xsl:number level="any" count="xref[@target=$target]"/></xsl:variable>
+  <xsl:variable name="node" select="$src//*[@anchor=$target]" />
+  <xsl:if test="count($node)=0 and not(ancestor::ed:del)">
+    <xsl:message>Undefined target: <xsl:value-of select="@target" /></xsl:message>
+    <span class="error">Undefined target: <xsl:value-of select="@target" /></span>
+  </xsl:if>
+
+  <xsl:choose>
+  
+    <!-- Section links -->
+    <xsl:when test="name($node)='section' or name($node)='appendix'">
+      <a href="#{@target}">
+        <!-- insert id when a backlink to this xref is needed in the index -->
+        <xsl:if test="//iref[@x:for-anchor=$target] | //iref[@x:for-anchor='' and ../@anchor=$target]">
+          <xsl:attribute name="id"><xsl:value-of select="$anchor"/></xsl:attribute>
+        </xsl:if>
+        <xsl:call-template name="render-section-ref">
+          <xsl:with-param name="from" select="."/>
+          <xsl:with-param name="to" select="$node"/>
+        </xsl:call-template>
+      </a>
+    </xsl:when>
+
+    <!-- Figure links -->
+    <xsl:when test="name($node)='figure'">
+      <a href="#{$target}">
+        <xsl:variable name="figcnt">
+          <xsl:for-each select="$node">
+            <xsl:number level="any" count="figure[@title!='' or @anchor!='']" />
+          </xsl:for-each>
+        </xsl:variable>
+        <xsl:choose>
+          <xsl:when test="@format='counter'">
+            <xsl:value-of select="$figcnt" />
+          </xsl:when>
+          <xsl:when test="@format='title'">
+            <xsl:value-of select="$node/@title" />
+          </xsl:when>
+          <xsl:otherwise>
+            <xsl:value-of select="normalize-space(concat('Figure&#160;',$figcnt))"/>
+          </xsl:otherwise>
+        </xsl:choose>
+      </a>
+    </xsl:when>
+    
+    <!-- Table links -->
+    <xsl:when test="name($node)='texttable'">
+      <a href="#{$target}">
+        <xsl:variable name="tabcnt">
+          <xsl:for-each select="$node">
+            <xsl:number level="any" count="texttable[@title!='' or @anchor!='']" />
+          </xsl:for-each>
+        </xsl:variable>
+        <xsl:choose>
+          <xsl:when test="@format='counter'">
+            <xsl:value-of select="$tabcnt" />
+          </xsl:when>
+          <xsl:when test="@format='title'">
+            <xsl:value-of select="$node/@title" />
+          </xsl:when>
+          <xsl:otherwise>
+            <xsl:value-of select="normalize-space(concat('Table&#160;',$tabcnt))"/>
+          </xsl:otherwise>
+        </xsl:choose>
+      </a>
+    </xsl:when>
+    
+    <!-- Reference links -->
+    <xsl:when test="name($node)='reference'">
+
+      <xsl:variable name="href">
+        <xsl:call-template name="computed-target">
+          <xsl:with-param name="bib" select="$node"/>
+          <xsl:with-param name="ref" select="."/>
+        </xsl:call-template>
+      </xsl:variable>
+
+      <!--
+      Formats:
+      
+        ()      [XXXX] (Section SS)
+        ,       [XXXX], Section SS
+        of      Section SS of [XXXX]
+        sec     Section SS
+        number  SS
+      -->
+      
+      <xsl:if test="@x:fmt and not(@x:fmt='()' or @x:fmt=',' or @x:fmt='of' or @x:fmt='sec' or @x:fmt='anchor' or @x:fmt='number')">
+        <xsl:message>unknown xref/@x:fmt extension: <xsl:value-of select="@x:fmt"/></xsl:message>
+        <span class="error">unknown xref/@x:fmt extension: <xsl:value-of select="@x:fmt"/></span>
+      </xsl:if>
+
+      <xsl:if test="@x:sec">
+
+        <xsl:choose>
+          <xsl:when test="@x:fmt='of' or @x:fmt='sec'">
+            <xsl:choose>
+              <xsl:when test="$href!=''">
+                <a href="{$href}">
+                  <xsl:if test="@x:fmt='sec' and $xml2rfc-ext-include-references-in-index='yes'">
+                    <xsl:attribute name="id"><xsl:value-of select="$anchor"/></xsl:attribute>
+                  </xsl:if>
+                  <xsl:text>Section </xsl:text>
+                  <xsl:value-of select="@x:sec"/>
+                </a>
+              </xsl:when>
+              <xsl:otherwise>Section <xsl:value-of select="@x:sec"/></xsl:otherwise>
+            </xsl:choose>
+            <xsl:if test="@x:fmt='of'">
+              <xsl:text> of </xsl:text>
+            </xsl:if>
+          </xsl:when>
+          <xsl:when test="@x:fmt='number'">
+            <xsl:choose>
+              <xsl:when test="$href!=''">
+                <a href="{$href}">
+                  <xsl:if test="$xml2rfc-ext-include-references-in-index='yes'">
+                    <xsl:attribute name="id"><xsl:value-of select="$anchor"/></xsl:attribute>
+                  </xsl:if>
+                  <xsl:value-of select="@x:sec"/>
+                </a>
+              </xsl:when>
+              <xsl:otherwise><xsl:value-of select="@x:sec"/></xsl:otherwise>
+            </xsl:choose>
+          </xsl:when>
+          <xsl:otherwise/>
+        </xsl:choose>
+      </xsl:if>
+
+      <xsl:if test="not(@x:sec) or (@x:fmt!='sec' and @x:fmt!='number')">
+        <a href="#{$target}">
+          <xsl:if test="$xml2rfc-ext-include-references-in-index='yes'">
+            <xsl:attribute name="id"><xsl:value-of select="$anchor"/></xsl:attribute>
+          </xsl:if>
+          <cite title="{normalize-space($node/front/title)}">
+            <xsl:variable name="val">
+              <xsl:call-template name="referencename">
+                <xsl:with-param name="node" select="$node" />
+              </xsl:call-template>
+            </xsl:variable>
+            <xsl:choose>
+              <xsl:when test="@x:fmt='anchor'">
+                <!-- remove brackets -->
+                <xsl:value-of select="substring($val,2,string-length($val)-2)"/>
+              </xsl:when>
+              <xsl:otherwise>
+                <xsl:value-of select="$val"/>
+              </xsl:otherwise>
+            </xsl:choose>
+          </cite>
+        </a>
+      </xsl:if>
+      
+      <xsl:if test="@x:sec">
+        <xsl:choose>
+          <xsl:when test="@x:fmt='()'">
+            <xsl:text> (</xsl:text>
+            <xsl:choose>
+              <xsl:when test="$href!=''">
+                <a href="{$href}">Section <xsl:value-of select="@x:sec"/></a>
+              </xsl:when>
+              <xsl:otherwise>Section <xsl:value-of select="@x:sec"/></xsl:otherwise>
+            </xsl:choose>
+            <xsl:text>)</xsl:text>
+          </xsl:when>
+          <xsl:when test="@x:fmt=','">
+            <xsl:text>, </xsl:text>
+            <xsl:choose>
+              <xsl:when test="$href!=''">
+                <a href="{$href}">Section <xsl:value-of select="@x:sec"/></a>
+              </xsl:when>
+              <xsl:otherwise>Section <xsl:value-of select="@x:sec"/></xsl:otherwise>
+            </xsl:choose>
+          </xsl:when>
+          <xsl:otherwise/>
+        </xsl:choose>
+      </xsl:if>
+    </xsl:when>
+    
+    <xsl:otherwise>
+      <xsl:message>xref to unknown element: <xsl:value-of select="name($node)"/></xsl:message>
+      <span class="error">xref to unknown element: <xsl:value-of select="name($node)"/></span>
+    </xsl:otherwise>
+  </xsl:choose>
+</xsl:template>
+
+
+<!-- mark unmatched elements red -->
+
+<xsl:template match="*">
+  <xsl:message>ERROR: no XSLT template for element: &lt;<xsl:value-of select="name()"/>&gt;</xsl:message>    
+  <tt class="error">&lt;<xsl:value-of select="name()" />&gt;</tt>
+  <xsl:copy><xsl:apply-templates select="node()|@*" /></xsl:copy>
+  <tt class="error">&lt;/<xsl:value-of select="name()" />&gt;</tt>
+</xsl:template>
+
+<xsl:template match="/">
+  <xsl:apply-templates select="*" />
+</xsl:template>
+
+<!-- utility templates -->
+
+<xsl:template name="collectLeftHeaderColumn">
+  <xsl:param name="mode" />
+  <!-- default case -->
+  <xsl:if test="not($xml2rfc-private)">
+    <myns:item>Network Working Group</myns:item>
+    <myns:item>
+       <xsl:choose>
+        <xsl:when test="/rfc/@ipr and not(/rfc/@number)">Internet Draft</xsl:when>
+        <xsl:otherwise>Request for Comments: <xsl:value-of select="/rfc/@number"/></xsl:otherwise>
+      </xsl:choose>
+    </myns:item>
+    <xsl:if test="/rfc/@docName and $mode!='nroff'">
+      <myns:item>
+        &lt;<xsl:value-of select="/rfc/@docName" />&gt;
+      </myns:item>
+    </xsl:if>
+    <xsl:if test="/rfc/@obsoletes and /rfc/@obsoletes!=''">
+      <myns:item>
+        <xsl:text>Obsoletes: </xsl:text>
+        <xsl:call-template name="rfclist">
+          <xsl:with-param name="list" select="normalize-space(/rfc/@obsoletes)" />
+        </xsl:call-template>
+        <xsl:if test="not(/rfc/@number)"> (if approved)</xsl:if>
+      </myns:item>
+    </xsl:if>
+    <xsl:if test="/rfc/@seriesNo">
+       <myns:item>
+        <xsl:choose>
+          <xsl:when test="/rfc/@category='bcp'">BCP: <xsl:value-of select="/rfc/@seriesNo" /></xsl:when>
+          <xsl:when test="/rfc/@category='info'">FYI: <xsl:value-of select="/rfc/@seriesNo" /></xsl:when>
+          <xsl:when test="/rfc/@category='std'">STD: <xsl:value-of select="/rfc/@seriesNo" /></xsl:when>
+          <xsl:otherwise><xsl:value-of select="concat(/rfc/@category,': ',/rfc/@seriesNo)" /></xsl:otherwise>
+        </xsl:choose>
+      </myns:item>
+    </xsl:if>
+    <xsl:if test="/rfc/@updates and /rfc/@updates!=''">
+      <myns:item>
+        <xsl:text>Updates: </xsl:text>
+          <xsl:call-template name="rfclist">
+             <xsl:with-param name="list" select="normalize-space(/rfc/@updates)" />
+          </xsl:call-template>
+          <xsl:if test="not(/rfc/@number)"> (if approved)</xsl:if>
+      </myns:item>
+    </xsl:if>
+    <xsl:if test="$mode!='nroff'">
+      <myns:item>
+        <xsl:choose>
+          <xsl:when test="/rfc/@number">
+            <xsl:text>Category: </xsl:text>
+          </xsl:when>
+          <xsl:otherwise>
+            <xsl:text>Intended status: </xsl:text>
+          </xsl:otherwise>
+        </xsl:choose>
+        <xsl:call-template name="get-category-long" />
+      </myns:item>
+    </xsl:if>
+    <xsl:if test="/rfc/@ipr and not(/rfc/@number)">
+       <myns:item>Expires: <xsl:call-template name="expirydate" /></myns:item>
+    </xsl:if>
+  </xsl:if>
+    
+  <!-- private case -->
+  <xsl:if test="$xml2rfc-private">
+    <myns:item><xsl:value-of select="$xml2rfc-private" /></myns:item>
+  </xsl:if>
+</xsl:template>
+
+<xsl:template name="collectRightHeaderColumn">
+  <xsl:for-each select="author">
+    <xsl:variable name="initials">
+      <xsl:call-template name="format-initials"/>
+    </xsl:variable>
+    <xsl:if test="@surname">
+      <myns:item>
+        <xsl:value-of select="concat($initials,' ',@surname)" />
+        <xsl:if test="@role">
+          <xsl:choose>
+            <xsl:when test="@role='editor'">
+              <xsl:text>, Editor</xsl:text>
+            </xsl:when>
+            <xsl:otherwise>
+              <xsl:text>, </xsl:text><xsl:value-of select="@role" />
+            </xsl:otherwise>
+          </xsl:choose>
+        </xsl:if>
+      </myns:item>
+    </xsl:if>
+    <xsl:variable name="org">
+      <xsl:choose>
+        <xsl:when test="organization/@abbrev"><xsl:value-of select="organization/@abbrev" /></xsl:when>
+        <xsl:otherwise><xsl:value-of select="organization" /></xsl:otherwise>
+      </xsl:choose>
+    </xsl:variable>
+    <xsl:variable name="orgOfFollowing">
+      <xsl:choose>
+        <xsl:when test="following-sibling::*[1]/organization/@abbrev"><xsl:value-of select="following-sibling::*[1]/organization/@abbrev" /></xsl:when>
+        <xsl:otherwise><xsl:value-of select="following-sibling::*/organization" /></xsl:otherwise>
+      </xsl:choose>
+    </xsl:variable>
+    <xsl:if test="$org != $orgOfFollowing and $org != ''">
+      <myns:item><xsl:value-of select="$org" /></myns:item>
+    </xsl:if>
+  </xsl:for-each>
+  <myns:item>
+    <xsl:value-of select="concat(date/@month,' ',date/@year)" />
+  </myns:item>
+</xsl:template>
+
+
+<xsl:template name="emitheader">
+  <xsl:param name="lc" />
+  <xsl:param name="rc" />
+
+  <xsl:for-each select="$lc/myns:item | $rc/myns:item">
+    <xsl:variable name="pos" select="position()" />
+    <xsl:if test="$pos &lt; count($lc/myns:item) + 1 or $pos &lt; count($rc/myns:item) + 1"> 
+      <tr>
+        <td class="header left"><xsl:call-template name="copynodes"><xsl:with-param name="nodes" select="$lc/myns:item[$pos]/node()" /></xsl:call-template></td>
+        <td class="header right"><xsl:call-template name="copynodes"><xsl:with-param name="nodes" select="$rc/myns:item[$pos]/node()" /></xsl:call-template></td>
+      </tr>
+    </xsl:if>
+  </xsl:for-each>
+</xsl:template>
+
+<!-- convenience template that avoids copying namespace nodes we don't want -->
+<xsl:template name="copynodes">
+  <xsl:param name="nodes" />
+  <xsl:for-each select="$nodes">
+    <xsl:choose>
+      <xsl:when test="namespace-uri()='http://www.w3.org/1999/xhtml'">
+        <xsl:element name="{name()}" namespace="{namespace-uri()}">
+          <xsl:copy-of select="@*|node()" />
+        </xsl:element>
+      </xsl:when>
+      <xsl:when test="self::*">
+        <xsl:element name="{name()}">
+          <xsl:copy-of select="@*|node()" />
+        </xsl:element>
+      </xsl:when>
+      <!-- workaround for opera, remove when Opera > 9.0.x comes out -->
+      <xsl:when test="self::text()">
+        <xsl:value-of select="."/>
+      </xsl:when>
+      <xsl:otherwise>
+        <xsl:copy-of select="." />
+      </xsl:otherwise>
+    </xsl:choose>
+  </xsl:for-each>
+</xsl:template>
+
+
+<xsl:template name="expirydate">
+  <xsl:variable name="date" select="/rfc/front/date" />
+  <xsl:choose>
+      <xsl:when test="$date/@month='January'">July <xsl:value-of select="$date/@year" /></xsl:when>
+      <xsl:when test="$date/@month='February'">August <xsl:value-of select="$date/@year" /></xsl:when>
+      <xsl:when test="$date/@month='March'">September <xsl:value-of select="$date/@year" /></xsl:when>
+      <xsl:when test="$date/@month='April'">October <xsl:value-of select="$date/@year" /></xsl:when>
+      <xsl:when test="$date/@month='May'">November <xsl:value-of select="$date/@year" /></xsl:when>
+      <xsl:when test="$date/@month='June'">December <xsl:value-of select="$date/@year" /></xsl:when>
+      <xsl:when test="$date/@month='July'">January <xsl:value-of select="$date/@year + 1" /></xsl:when>
+      <xsl:when test="$date/@month='August'">February <xsl:value-of select="$date/@year + 1" /></xsl:when>
+      <xsl:when test="$date/@month='September'">March <xsl:value-of select="$date/@year + 1" /></xsl:when>
+      <xsl:when test="$date/@month='October'">April <xsl:value-of select="$date/@year + 1" /></xsl:when>
+      <xsl:when test="$date/@month='November'">May <xsl:value-of select="$date/@year + 1" /></xsl:when>
+      <xsl:when test="$date/@month='December'">June <xsl:value-of select="$date/@year + 1" /></xsl:when>
+        <xsl:otherwise>WRONG SYNTAX FOR MONTH</xsl:otherwise>
+     </xsl:choose>
+</xsl:template>
+
+<xsl:template name="get-month-as-num">
+  <xsl:variable name="date" select="/rfc/front/date" />
+  <xsl:choose>
+      <xsl:when test="$date/@month='January'">01</xsl:when>
+      <xsl:when test="$date/@month='February'">02</xsl:when>
+      <xsl:when test="$date/@month='March'">03</xsl:when>
+      <xsl:when test="$date/@month='April'">04</xsl:when>
+      <xsl:when test="$date/@month='May'">05</xsl:when>
+      <xsl:when test="$date/@month='June'">06</xsl:when>
+      <xsl:when test="$date/@month='July'">07</xsl:when>
+      <xsl:when test="$date/@month='August'">08</xsl:when>
+      <xsl:when test="$date/@month='September'">09</xsl:when>
+      <xsl:when test="$date/@month='October'">10</xsl:when>
+      <xsl:when test="$date/@month='November'">11</xsl:when>
+      <xsl:when test="$date/@month='December'">12</xsl:when>
+        <xsl:otherwise>WRONG SYNTAX FOR MONTH</xsl:otherwise>
+     </xsl:choose>
+</xsl:template>
+
+<!-- produce back section with author information -->
+<xsl:template name="get-authors-section-title">
+  <xsl:choose>
+    <xsl:when test="count(/rfc/front/author)=1">Author's Address</xsl:when>
+    <xsl:otherwise>Authors' Addresses</xsl:otherwise>
+  </xsl:choose>
+</xsl:template>
+
+<xsl:template name="get-authors-section-number">
+  <xsl:if test="/*/x:assign-section-number[@builtin-target='authors']">
+    <xsl:value-of select="/*/x:assign-section-number[@builtin-target='authors']/@number"/>
+  </xsl:if>
+</xsl:template>
+
+<xsl:template name="insertAuthors">
+
+  <xsl:call-template name="insert-conditional-hrule"/>
+  
+  <xsl:variable name="number">
+    <xsl:call-template name="get-authors-section-number"/>
+  </xsl:variable>
+    
+  <h1 id="{$anchor-prefix}.authors">
+    <xsl:call-template name="insert-conditional-pagebreak"/>
+    <xsl:if test="$number != ''">
+      <a href="#{$anchor-prefix}.section.{$number}" id="{$anchor-prefix}.section.{$number}"><xsl:value-of select="$number"/>.</a>
+      <xsl:text> </xsl:text>
+    </xsl:if>
+    <a href="#{$anchor-prefix}.authors"><xsl:call-template name="get-authors-section-title"/></a>
+  </h1>
+
+  <xsl:apply-templates select="/rfc/front/author" />
+</xsl:template>
+
+
+
+<!-- insert copyright statement -->
+
+<xsl:template name="insertCopyright" myns:namespaceless-elements="xml2rfc">
+
+  <xsl:choose>
+    <xsl:when test="$ipr-rfc3667">
+      <section title="Full Copyright Statement" anchor="{$anchor-prefix}.copyright" myns:unnumbered="unnumbered" myns:notoclink="notoclink">
+        <t>
+          <xsl:choose>
+            <xsl:when test="$ipr-rfc4748">
+              Copyright &#169; The IETF Trust (<xsl:value-of select="/rfc/front/date/@year" />).
+            </xsl:when>
+            <xsl:otherwise>
+              Copyright &#169; The Internet Society (<xsl:value-of select="/rfc/front/date/@year" />).
+            </xsl:otherwise>
+          </xsl:choose>
+        </t>
+        <t>
+          This document is subject to the rights, licenses and restrictions
+          contained in BCP 78<xsl:if test="/rfc/@submissionType='independent'"> and at <eref target="http://www.rfc-editor.org/copyright.html"/></xsl:if>, and except as set forth therein, the authors
+          retain all their rights.
+        </t>
+        <t>
+          <xsl:choose>
+            <xsl:when test="$ipr-rfc4748">
+              This document and the information contained herein are provided
+              on an &#8220;AS IS&#8221; basis and THE CONTRIBUTOR,
+              THE ORGANIZATION HE/SHE REPRESENTS OR IS SPONSORED BY (IF ANY),
+              THE INTERNET SOCIETY, THE IETF TRUST AND THE INTERNET ENGINEERING
+              TASK FORCE DISCLAIM ALL WARRANTIES,
+              EXPRESS OR IMPLIED,
+              INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
+              INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
+              WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+            </xsl:when>
+            <xsl:otherwise>
+              This document and the information contained herein are provided
+              on an &#8220;AS IS&#8221; basis and THE CONTRIBUTOR,
+              THE ORGANIZATION HE/SHE REPRESENTS OR IS SPONSORED BY (IF ANY),
+              THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIM
+              ALL WARRANTIES,
+              EXPRESS OR IMPLIED,
+              INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
+              INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
+              WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+            </xsl:otherwise>
+          </xsl:choose>
+        </t>
+      </section>    
+    </xsl:when>
+    <xsl:otherwise>
+      <!-- <http://tools.ietf.org/html/rfc2026#section-10.4> -->
+      <section title="Full Copyright Statement" anchor="{$anchor-prefix}.copyright" myns:unnumbered="unnumbered" myns:notoclink="notoclink">
+        <t>
+          Copyright &#169; The Internet Society (<xsl:value-of select="/rfc/front/date/@year" />). All Rights Reserved.
+        </t>
+        <t>
+          This document and translations of it may be copied and furnished to
+          others, and derivative works that comment on or otherwise explain it
+          or assist in its implementation may be prepared, copied, published and
+          distributed, in whole or in part, without restriction of any kind,
+          provided that the above copyright notice and this paragraph are
+          included on all such copies and derivative works. However, this
+          document itself may not be modified in any way, such as by removing
+          the copyright notice or references to the Internet Society or other
+          Internet organizations, except as needed for the purpose of
+          developing Internet standards in which case the procedures for
+          copyrights defined in the Internet Standards process must be
+          followed, or as required to translate it into languages other than
+          English.
+        </t>
+        <t>
+          The limited permissions granted above are perpetual and will not be
+          revoked by the Internet Society or its successors or assignees.
+        </t>
+        <t>
+          This document and the information contained herein is provided on an
+          &#8220;;AS IS&#8221; basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
+          TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
+          BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
+          HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
+          MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+        </t>
+      </section>
+    </xsl:otherwise>
+  </xsl:choose>
+
+  <section title="Intellectual Property" anchor="{$anchor-prefix}.ipr" myns:unnumbered="unnumbered">
+    <xsl:choose>
+      <xsl:when test="$ipr-rfc3667">
+        <t>
+          The IETF takes no position regarding the validity or scope of any
+          Intellectual Property Rights or other rights that might be claimed to
+          pertain to the implementation or use of the technology described in
+          this document or the extent to which any license under such rights
+          might or might not be available; nor does it represent that it has
+          made any independent effort to identify any such rights.  Information
+          on the procedures with respect to rights in RFC documents
+          can be found in BCP 78 and BCP 79.
+        </t>       
+        <t>
+          Copies of IPR disclosures made to the IETF Secretariat and any
+          assurances of licenses to be made available, or the result of an
+          attempt made to obtain a general license or permission for the use
+          of such proprietary rights by implementers or users of this
+          specification can be obtained from the IETF on-line IPR repository 
+          at <eref target="http://www.ietf.org/ipr"/>.
+        </t>       
+        <t>
+          The IETF invites any interested party to bring to its attention any
+          copyrights, patents or patent applications, or other proprietary
+          rights that may cover technology that may be required to implement
+          this standard. Please address the information to the IETF at
+          <eref target="mailto:ietf-ipr@ietf.org">ietf-ipr@ietf.org</eref>.
+        </t>       
+      </xsl:when>
+      <xsl:otherwise>
+        <t>
+          The IETF takes no position regarding the validity or scope of
+          any intellectual property or other rights that might be claimed
+          to  pertain to the implementation or use of the technology
+          described in this document or the extent to which any license
+          under such rights might or might not be available; neither does
+          it represent that it has made any effort to identify any such
+          rights. Information on the IETF's procedures with respect to
+          rights in standards-track and standards-related documentation
+          can be found in BCP-11. Copies of claims of rights made
+          available for publication and any assurances of licenses to
+          be made available, or the result of an attempt made
+          to obtain a general license or permission for the use of such
+          proprietary rights by implementors or users of this
+          specification can be obtained from the IETF Secretariat.
+        </t>
+        <t>
+          The IETF invites any interested party to bring to its
+          attention any copyrights, patents or patent applications, or
+          other proprietary rights which may cover technology that may be
+          required to practice this standard. Please address the
+          information to the IETF Executive Director.
+        </t>
+        <xsl:if test="$xml2rfc-iprnotified='yes'">
+          <t>
+            The IETF has been notified of intellectual property rights

[... 2386 lines stripped ...]


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@labs.apache.org
For additional commands, e-mail: commits-help@labs.apache.org