<?xml version='1.0' encoding="UTF-8"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" >
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>
<?rfc compact="yes" ?>
<?rfc subcompact="no" ?>
<?rfc toc="yes" ?>
<?rfc tocindent="yes" ?>
<?rfc symrefs="yes" ?>
<?rfc sortrefs="yes" ?>
<?rfc iprnotified="no" ?>
<?rfc strict="yes" ?>
<rfc category="info" docName="draft-otis-newtrk-rfc-set-02"
  ipr="full3978">
  <front>
    <title abbrev="SRD">XML structure for Set of RFC Descriptors</title>
    <author fullname="Douglas Otis" initials="D." surname="Otis">
      <organization>Trend Micro</organization>
      <address>
                <postal>
                    <street>1737 North First Street, Suite 680</street>
                    <city>San Jose</city>
                    <region>CA</region>
                    <code>95112</code>
                    <country>USA</country>
                </postal>
                <phone>+1.408.453.6277</phone>
                <email>doug_otis@trendmicro.com</email>
            </address>
    </author>
    <author fullname="John Leslie" initials="J." surname="Leslie">
      <organization>JLC.net</organization>
      <address>
                <postal>
                    <street>10 Souhegan Street</street>
                    <city>Milford</city>
                    <region>NH</region>
                    <code>03055</code>
                    <country>USA</country>
                </postal>
                <phone>+1.603.673.6132</phone>
                <email>john@jlc.net</email>
            </address>
    </author>
    <date month="October" year="2005"/>
    <area>General</area>
    <workgroup>newtrk</workgroup>
    <keyword>rfc, standards, status, errata, track, bcp,
      informational, internet-draft, std</keyword>
    <abstract>
      <t>This document introduces a new document series called Set
        of RFC Documents (SRDs). SRDs will be distinguished by names
        and serial numbers. SRDs contain Extensible Markup Language
        (XML) which can automatically produce HTML and plaintext
        versions for human consumption</t>
      <t>With many RFC being updated, this creates difficulty when
        determining which RFCs are necessary as references when
        implementing or using protocols. Grouping RFC into sets that
        embody a specific endeavour would permit stable references
        for those interested in discovering related details. The SRD
        name may also serve as a reference for topical information
        stored in a database that is made available.</t>
    </abstract>
  </front>
  <middle>
    <section title="Introduction">
      <t>It is becoming increasingly difficult to determine which
        RFCs are necessary as references when implementing or using
        protocols. The STD series defined in <xref target="RFC1311"
        /> is a guide, but often fails to list all the necessary
        RFCs. The Maturity Levels defined in <xref target="RFC2026"
        /> are increasingly confusing the picture by the need to
        update higher maturity documents with lower maturity
        revisions. It is hoped that by providing a coherent
        organization using sets of documents, along with relevant
        inter-operational information contained within a separate
        database, an easier-to-use alternative can be introduced. If
        this SRD strategy proves untenable or unuseful, it can be
        dropped, as it makes no other changes to current procedures.</t>
      <t>This document proposes developing an Extensible Markup
        Language (XML) structure to define a set of RFCs related to
        a specific endeavour. The set SHOULD NOT encompass diverse
        applications which utilize a broad range of separable
        functions. The intent of this document is to provide an
        optimal means for locating relevant information made
        increasingly difficult by a growing number or RFCs, updates,
        and corrections. The eventual expectation might be that any
        RFC not found within some SRD is not relevant to any current
        endeavour.</t>
    </section>
    <section title="SRD Identification and References">
      <t>This document proposes a new document series called Set of
        RFC Documents ("SRD"). These documents contain Extensible
        Markup Language <xref target="W3C.REC-xml-20040204"> </xref>
        structures used for generating outputs such as HTML, RSS,
        and plain-text outputs that link together the related RFCs.
        The SRD documents would be managed under the direction of
        the IESG, which may also establish procedures for updating
        the relevant topical information stored in a database that
        might also include overview of the RFC Editor's Errata
        database.</t>
      <t>The SRD is identified by a combination of name and number
        in the form of {srd-name.serial-number}. The name for each
        SRD is unique. Any references to an SRD within an SRD MUST
        include the serial-number. The initial SRD document
        serial-number starts at 0. As a general rule, when an HTML
        or database link excludes the serial, version, or iteration
        number, through the use of scripts, it will automatically
        reference the current document. This auto-generated link is
        to simplify link maintenance and to stabilize the SRD
        structures.</t>
    </section>
    <section title="SRD Development">
      <t>This document also proposes a version of the SRDs be used
        in the initial development process, to allow an overview of
        Work-In-Progess, WIP, which may involve an extended work and
        approval time period. The WIP SRD is identified by a prefix
        added which does not interfere with automatic linking. The
        prefix used for an SRD, while it is being modified, would
        be:</t>
      <figure title="">
        <artwork name="" type="" height="" width="" xml:space="preserve">
    {'X'&lt;iteration-number&gt;'-'&lt;group-identifier&gt;'-'}
                        </artwork>
      </figure>
      <t>The group-identifier is an alpha-numeric string that
        represents a group identifier or possibly the name of an
        individual. If this document was modifying {foobar.1} by the
        working group 'newtrk', the first iteration would be:</t>
      <figure title="">
        <artwork name="" type="" height="" width="" xml:space="preserve">
    X0-newtrk-foobar.1
                </artwork>
      </figure>
      <t>When the document becomes accepted at some point, it would
        become {foobar.2}. The group identifier permits simultaneous
        WIP SRD documents to be pending for approval.</t>
      <t> Normally, an SRD is not allowed to reference an
        Internet-Draft, but there would be an exception made for a
        WIP SRD. The WIP SRD can not receive approval until all
        referenced Internet-Drafts have also been accepted and
        replaced as RFCs.</t>
      <t>During the introduction of SRDs, inclusion of a WIP SRD
        with an I-D submission is optional. The IESG should provide
        for a person to review necessary changes to SRDs. By
        default, this might be the appropriate Area Director. At
        some point, inclusion of the WIP SRD could be mandated by
        the IESG. The Area Director would then ensure the WIP
        version of all affected SRD documents accompany an
        Internet-Draft submitted to the Area Director for IESG
        action. The WIP SRD and the Internet-Draft would be
        considered together through all review stages. Of course,
        all referenced Internet-Draft acceptance MUST precede WIP
        SRD acceptance.</t>
    </section>
    <section title="XML Conversion Considerations">
      <t>XML and XSLT structures are used to create HTML, RSS, and
        Plain-Text outputs for establishing stable hyper-link
        references. When there are empty or missing elements within
        the SRD document, those elements would be excluded from the
        HTML page as well. The intent is to ensure a minimum amount
        of information is presented. To selectively include the
        Errata Database links, the related pages would then need to
        be regenerated when Errata is subsequently established for
        an RFC.</t>
      <t>Writing an SRD document from scratch would follow a process
        similar to that described in <xref target="RFC2629"/> for
        use of the XML-to-RFC tool. The SRD XML declaration begins
        with a reference to the DTD, <xref
          target="W3C.REC-xslt-19991116">XSLT </xref>, processing
        options, and the "srd" element:</t>
      <figure title="">
        <artwork name="" type="" height="" width="" xml:space="preserve">
    &lt;?xml version='1.0' encoding="UTF-8"?&gt;
    &lt;!DOCTYPE srd  SYSTEM "rfcxxxx.dtd" &gt;
    &lt;?xml-stylesheet type='text/xsl'href='rfcxxxx.xslt' ?&gt;
    &lt;?srd sortrefs="yes" ?&gt;
    &lt;?srd strict="yes" ?&gt;
    &lt;srd ... &gt;
      ...
    &lt;/srd&gt;
            </artwork>
      </figure>
      <t>The lines preceding the &lt;srd ...&gt; should be
        the same for all SRDs and nothing should follow the ending
        "&lt;/srd&gt;" tag. Make sure that all elements are
        properly matched and nested.</t>
    </section>
    <section title="The srd element">
      <t>The "set" attribute included within the "&lt;srd
        ...&gt;" tag at the beginning of the document determines
        the name and serial number of the SRD output. If a "wip"
        attribute is included, this produces a WIP SRD that may
        include references to Internet-Drafts. When this "wip"
        attribute is removed and the serial number is advanced, a
        final SRD document is then produced. Although SRD serial
        numbers start at the value of 0, approved SRDs serial
        numbers will be 1 or greater.</t>
      <figure title="">
        <preamble>Example of srd attributes declaring both base
          document and the group making changes:</preamble>
        <artwork name="" type="" height="" width="" xml:space="preserve">
    &lt;srd set="foobar.2" wip="0-newtrk"&gt;
                </artwork>
      </figure>
      <t>The "set" attribute MUST be present and indicates both the
        set name and version. The "wip" attribute is optional, and
        specifies both the WIP iteration and the name of the group
        or person making a change.</t>
      <t>The srd information includes a sequence of elements being
        the title, description, srdDate, core, extensions, guidance,
        replaces, experimental, and companion. The topical
        information database may provide a reference to an
        accountable entity for the SRD, where this is not included
        within the srd itself.</t>
      <figure title="">
        <preamble>Example of srd content:</preamble>
        <artwork name="" type="" height="" width="" xml:space="preserve">
    &lt;title&gt;Example SRD Title&lt;/title&gt;
    &lt;description&gt;XML structure for example SRDs.&lt;/description&gt;
    &lt;srdDate&gt;2005-07-16&lt;/srdDate&gt;
    &lt;core&gt;
        &lt;srdref dt="RFC" dd="9876"/&gt;
        &lt;srdref dt="RFC" dd="9875"/&gt;
    &lt;/core&gt;
    &lt;extensions&gt;
        &lt;srdref dt="RFC" dd="9912"/&gt;                 
    &lt;/extensions&gt;
    &lt;guidance&gt;
        &lt;srdref dt="RFC" dd="9915"/&gt;           
    &lt;/guidance&gt;
    &lt;replaces&gt;
        &lt;srdref dt="RFC" dd="9811"/&gt;
    &lt;/replaces&gt;
    &lt;experimental&gt;
        &lt;srdref dt="RFC" dd="9837"/&gt;
    &lt;/experimental&gt;
    &lt;companion&gt;
        &lt;srdref dt="SRD" dd="example.1"/&gt;
    &lt;/companion&gt;
                </artwork>
      </figure>
    </section>
    <section title="The srdref element">
      <t>The srdref element is empty, but includes reference
        attributes that take the form:</t>
      <figure title="">
        <artwork name="" type="" height="" width="" xml:space="preserve">
    &lt;srdref dt="Document Type" dd="Document Designator"/&gt;
                        </artwork>
      </figure>
      <t>The Document Types are RFC, I-D, and SRD for RFCs,
        Internet-drafts and SRDs respectively.</t>
    </section>
    <section title="The title element">
      <figure title="">
        <artwork name="" type="" height="" width="" xml:space="preserve">
    &lt;title&gt; 
        Title describes the entire RFC set.
    &lt;/title&gt;
                </artwork>
      </figure>
      <t>The title element represents the title for the entire SRD
        set. This supplements the simple label defined by the "set="
        attribute which is used as the set reference. This element
        MUST be present.</t>
    </section>
    <section title="The description element">
      <figure title="">
        <artwork name="" type="" height="" width="" xml:space="preserve">
     &lt;description&gt;
         Description more fully describes the entire RFC set.
     &lt;/description&gt;
                </artwork>
      </figure>
      <t>The description should be no more than a few sentences
        describing the SRD. This element MUST be present.</t>
    </section>
    <section title="The srdDate element">
      <figure title="">
        <artwork name="" type="" height="" width="" xml:space="preserve">
    &lt;srdDate&gt;
        YYYY-MM-DD
    &lt;/srdDate&gt;
                </artwork>
      </figure>
      <t>The srdDate element provides the date when the SRD was
        published. The format for the date is specified as a
        complete date as specified in <xref
          target="W3C.NOTE-datetime-19980827">Date and Time Formats
        </xref>. The 'YYYY' represents the year. The 'MM' represents
        the numeric month. The 'DD' represents the numeric day. This
        element MUST be present.</t>
    </section>
    <section title="The core element">
      <figure title="">
        <artwork name="" type="" height="" width="" xml:space="preserve">
    &lt;core&gt;
        &lt;srdref dt="RFC" dd="9876"/&gt;
        &lt;srdref dt="RFC" dd="9875"/&gt;
    &lt;/core&gt;
                </artwork>
      </figure>
      <t>The core element contains srdref elements that reference
        RFCs or I-Ds that encompass the definitions related to a
        specific endeavour. This element MUST be present and MUST
        include srdref elements. For WIP SRDs, a reference to an
        Internet-Draft would take the form:</t>
      <figure title="">
        <artwork name="" type="" height="" width="" xml:space="preserve">
    &lt;srdref dt="I-D" dd="housley-binarytime"/&gt;
                    </artwork>
      </figure>
    </section>
    <section title="The extensions element">
      <figure title="">
        <artwork name="" type="" height="" width="" xml:space="preserve">
    &lt;extensions&gt;
        &lt;srdref dt="RFC" dd="9912"/&gt;
    &lt;/extensions&gt;
                </artwork>
      </figure>
      <t>The extensions element contains srdref elements that
        reference RFCs or I-Ds that encompass the definitions of
        optional enhancements to the basic definitions. Extension
        RFCs do not describe a separate endeavour, but are not an
        essential component of the endeavour encompassed by the SRD.
        This element should not be present unless srdref elements
        are included.</t>
    </section>
    <section title="The guidance element">
      <figure title="">
        <artwork name="" type="" height="" width="" xml:space="preserve">
    &lt;guidance&gt;
        &lt;srdref dt="RFC" dd="9815"/&gt;
    &lt;/guidance&gt;
                </artwork>
      </figure>
      <t>The guidance element contains srdref elements that
        reference RFCs or I-Ds that encompass the definitions of
        advice related to the deployment of the RFCs within the set.
        This element should not be present unless srdref elements
        are included.</t>
    </section>
    <section title="The replaces element">
      <figure title="">
        <artwork name="" type="" height="" width="" xml:space="preserve">
   &lt;replaces&gt;
       &lt;srdref dt="RFC" dd="9811"/&gt;
   &lt;/replaces&gt;
                </artwork>
      </figure>
      <t>The replaces element contains srdref elements that
        reference RFCs, I-Ds, or SRDs that encompass the definitions
        that have been updated or obsoleted and are no longer
        directly relevant except as a reference to the prior
        definitions. This element should not be present unless
        srdref elements are included.</t>
    </section>
    <section title="The experimental element">
      <figure title="">
        <artwork name="" type="" height="" width="" xml:space="preserve">
    &lt;experimental&gt;
        &lt;srdref dt="RFC" dd="9811"/&gt;
    &lt;/experimental&gt;
                </artwork>
      </figure>
      <t>The experimental element contains srdref elements that
        reference RFCs or I-Ds that encompass the definitions which
        are deemed experimental and relate to either core or
        extension RFCs. This element should not be present unless
        srdref elements are included.</t>
    </section>
    <section title="The companion element">
      <figure title="">
        <artwork name="" type="" height="" width="" xml:space="preserve">
    &lt;companion&gt;
        &lt;srdref dt="SRD" dd="srd-example.1"/&gt;
    &lt;/companion&gt;
                </artwork>
      </figure>
      <t>The companion element contains srdref elements that
        reference SRDs that encompass closely related endeavours,
        but which are not needed by other elements of the SRD. The
        intent of the companion element is to assist those
        attempting to locate definitions for a comprehensive
        application which typically includes these closely related
        endeavours. This element should not be present unless srdref
        elements are included.</t>
    </section>
    <section title="IANA Considerations">
      <t>There are no IANA considerations in this draft.</t>
    </section>
    <section title="Security Considerations">
      <t>This document specifies an administrative procedure for the
        IETF and hence does not raise any new issues about the
        security of the Internet. However, the availability of the
        type of document described here may provide a convenient
        mechanism and repository of vulnerabilities and other issues
        that are discovered after RFCs are issued, but that do not
        justify updating (or for which resources are not available
        to update) the relevant RFC. Having an obvious place to look
        for those notifications and discussions for relevant
        documents might enhance overall security somewhat.</t>
    </section>
  </middle>
  <back>
    <references title="Normative References">
      <?rfc include="reference.RFC.2629" ?>
      <?rfc include="reference.W3C.REC-xml-20040204" ?>
      <?rfc include="reference.W3C.REC-xslt-19991116" ?>
      <?rfc include="reference.W3C.NOTE-datetime-19980827" ?>
    </references>
    <references title="Informative References">
      <?rfc include="reference.RFC.1311" ?>
      <?rfc include="reference.RFC.2026" ?>
    </references>
    <section anchor="srd.dtd" title="The SRD DTD" toc="default">
      <figure title="">
        <artwork name="" type="" height="" width="" xml:space="preserve">
&lt;!-- DTD for SRD document series, draft-otis-newtrk-rfc-set-02  --&gt;
                    
&lt;!-- Copyright © The Internet Society (2005). This document is
     subject to the rights, licenses and restrictions contained
     in BCP 78. 
  --&gt;
                    
&lt;!--
    DTD data types:
                        
    entity        description
    ======        ===============================================
    DATE          numeric hyphen-separated YYYY-MM-DD
    ATEXT         attribute line of text (no line-terminators)
    TEXT          displayed character data
  --&gt;
                    
&lt;!ENTITY % DATE       "#PCDATA"&gt;
&lt;!ENTITY % ATEXT      "CDATA"&gt;
&lt;!ENTITY % TEXT       "#PCDATA"&gt;
                    
&lt;!--
  The "set" attribute for the "srd" element is 
  "srd-document.serial-number" where the serial-number is advanced
  when accepted, where the "wip" attribute is then removed. The "set"
  attribute should only reference an approved SRD document or have a
  zero serial-number.  The "wip" attribute is provided by the author
  in the form "&lt;iteration-number&gt;-&lt;group-identifier&gt;" where the 'X'
  wip prefix and the '-' wip suffix is added by the scripts.
  --&gt;
                    
&lt;!ELEMENT srd        (title,description,srdDate,core,extensions?,
                      guidance?,replaces?,experimental?,companion?)&gt; 
&lt;!ATTLIST srd
          set          %ATEXT;            #REQUIRED
          wip          %ATEXT;            ""
&gt;
                    
&lt;!ELEMENT title        (%TEXT;)&gt;
&lt;!ELEMENT description  (%TEXT;)&gt;
&lt;!ELEMENT srdDate      (%DATE;)&gt;
&lt;!ELEMENT srdref       EMPTY&gt;
&lt;!ATTLIST srdref
          dt            %ATEXT;            #REQUIRED
          dd            %ATEXT;            #REQUIRED
&gt;
                    
&lt;!ELEMENT core         (srdref)+&gt;
&lt;!ELEMENT extensions   (srdref)+&gt;
&lt;!ELEMENT guidance     (srdref)+&gt;
&lt;!ELEMENT replaces     (srdref)+&gt;
&lt;!ELEMENT experimental (srdref)+&gt;
&lt;!ELEMENT companion    (srdref)+&gt;
        </artwork>
      </figure>
      <t>
        <vspace blankLines="100"/>
      </t>
    </section>
    <section anchor="srd.xslt" title="Example SRD XSLT"
      toc="default">
      <figure title="">
        <artwork name="" type="" height="" width="" xml:space="preserve">
&lt;!-- draft-otis-newtrk-rfc-set-02 
   srd XSLT transformation to HTML
  --&gt;
&lt;!-- Copyright © The Internet Society (2005). 
   This document is subject to the rights, licenses and
   restrictions contained in BCP 78.
  --&gt;
&lt;xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  version="1.0"&gt;
  &lt;xsl:output method="html"/&gt;
  &lt;!--style similar to rfc2629.xslt by Julian F. Reschke  --&gt;
  &lt;xsl:template name="srd-style"&gt;
    body {color: #000000; font-family: helvetica, arial, 
          sans-serif; font-size: 12pt;}
    h1 {color: #333333; font-size: 14pt; line-height: 21pt;
        font-family: helvetica, arial, sans-serif;
        page-break-after: avoid;}
    h2 {color: #000000; font-size: 12pt; line-height: 15pt;
        font-family: helvetica, arial, sans-serif; 
        page-break-after: avoid;}
    p {margin-left: 2em; margin-right: 2em;} 
    .error {font-size: 14pt; background-color: red;} 
    .title {color: #990000; font-size: 18pt; line-height: 18pt;
            font-weight: bold; text-align: left;}
    .filename {color: #333333; font-weight: bold; font-size: 12pt;
               line-height: 21pt; text-align: left;}
  &lt;/xsl:template&gt;
  &lt;!-- url prefix for references --&gt;
  &lt;xsl:param name="url-prefix-rfc"
    select="'http://www.ietf.org/rfc/rfc'"/&gt;
  &lt;xsl:param name="url-prefix-i-d"
    select="'http://www.ietf.org/internet-drafts/draft-'"/&gt;
  &lt;xsl:param name="url-prefix-srd"
    select="'http://www.ietf.org/srd/srd-'"/&gt;
  &lt;xsl:param name="url-prefix-errata"
    select="'http://www.rfc-editor.org/cgi-bin/errata.pl#rfc'"/&gt;
  &lt;!-- path for xml references --&gt;
  &lt;xsl:param name="xml-refs-rfc"
    select="'references/rfc/reference.RFC.'"/&gt;
  &lt;xsl:param name="xml-refs-i-d"
    select="'references/i-d/reference.I-D.'"/&gt;
  &lt;xsl:param name="xml-refs-srd"
    select="'references/srd/reference.SRD.'"/&gt;
  &lt;!-- page title --&gt;
  &lt;xsl:param name="srd-title" select="normalize-space(/srd/title)"/&gt;
  &lt;!-- set name elements --&gt;
  &lt;xsl:param name="srd-set" select="normalize-space(/srd/@set)"/&gt;
  &lt;xsl:param name="srd-wip" select="normalize-space(/srd/@wip)"/&gt;
  &lt;!-- set wip name --&gt;
  &lt;xsl:param name="srd-wip-name" select="concat('X', $srd-wip,
    '-', $srd-set)"/&gt;
  &lt;xsl:param name="srd-date" select="normalize-space(/srd/srdDate)"/&gt;
  &lt;!-- PI delimiters --&gt;
  &lt;xsl:variable name="pi-delim"&gt;"'&lt;/xsl:variable&gt;
  &lt;!-- p i for sorting &lt;?srd sortrefs ="yes" ?&gt; --&gt;
  &lt;xsl:param name="sort-refs" select="substring-after(
    translate(/processing-instruction('srd')
    [contains(.,'sortrefs=')],
    concat($pi-delim,' '), ''), 'sortrefs=')"/&gt;
  &lt;!-- p i for strict &lt;?srd strict ="yes" ?&gt; --&gt;
  &lt;xsl:param name="srd-strict" select="substring-after(
    translate(/processing-instruction('srd')[contains(.,'strict=')],
    concat($pi-delim,' '), ''), 'strict=')"/&gt;
  &lt;!-- Template for root element --&gt;
  &lt;xsl:template match="srd"&gt;
    &lt;html lang="en"&gt;
      &lt;head&gt;
        &lt;title&gt;
          &lt;xsl:value-of select="$srd-title"/&gt;
        &lt;/title&gt;
        &lt;style type="text/css" title="srd style"&gt;
          &lt;xsl:call-template name="srd-style"/&gt;
        &lt;/style&gt;
      &lt;/head&gt;
      &lt;body&gt;
        &lt;h1 class="title"&gt;
          &lt;xsl:if test="$srd-wip=''"&gt;
            &lt;xsl:value-of select="$srd-title"
              /&gt;&lt;br/&gt;SRD:[&lt;xsl:value-of
              select="concat($srd-set,']&#160;',$srd-date)"/&gt;
          &lt;/xsl:if&gt;
          &lt;xsl:if test="$srd-wip!=''"&gt;
            &lt;xsl:value-of select="$srd-title"
              /&gt;&lt;br/&gt;SRD:[&lt;xsl:value-of
              select="concat($srd-wip-name,']&#160;',$srd-date)"
            /&gt;
          &lt;/xsl:if&gt;
        &lt;/h1&gt;
        &lt;h2&gt;
          &lt;xsl:value-of select="normalize-space(/srd/description)"/&gt;
        &lt;/h2&gt;
        &lt;xsl:if test="$sort-refs='yes'"&gt;
          &lt;!-- sorted references --&gt;
          &lt;xsl:call-template name="core"/&gt;
          &lt;xsl:for-each select="/srd/core/srdref"&gt;
            &lt;xsl:sort select="@dt" data-type="text"
              order="descending"/&gt;
            &lt;xsl:sort select="@dd" data-type="text"
              order="ascending"/&gt;
            &lt;xsl:call-template name="srdref"/&gt;
          &lt;/xsl:for-each&gt;
          &lt;xsl:if test="/srd/extensions"&gt;
            &lt;xsl:call-template name="extensions"/&gt;
            &lt;xsl:for-each select="/srd/extensions/srdref"&gt;
              &lt;xsl:sort select="@dt" data-type="text"
                order="descending"/&gt;
              &lt;xsl:sort select="@dd" data-type="text"
                order="ascending"/&gt;
              &lt;xsl:call-template name="srdref"/&gt;
            &lt;/xsl:for-each&gt;
          &lt;/xsl:if&gt;
          &lt;xsl:if test="/srd/guidance"&gt;
            &lt;xsl:call-template name="guidance"/&gt;
            &lt;xsl:for-each select="/srd/guidance/srdref"&gt;
              &lt;xsl:sort select="@dt" data-type="text"
                order="descending"/&gt;
              &lt;xsl:sort select="@dd" data-type="text"
                order="ascending"/&gt;
              &lt;xsl:call-template name="srdref"/&gt;
            &lt;/xsl:for-each&gt;
          &lt;/xsl:if&gt;
          &lt;xsl:if test="/srd/replaces"&gt;
            &lt;xsl:call-template name="replaces"/&gt;
            &lt;xsl:for-each select="/srd/replaces/srdref"&gt;
              &lt;xsl:sort select="@dt" data-type="text"
                order="descending"/&gt;
              &lt;xsl:sort select="@dd" data-type="text"
                order="ascending"/&gt;
              &lt;xsl:call-template name="srdref"/&gt;
            &lt;/xsl:for-each&gt;
          &lt;/xsl:if&gt;
          &lt;xsl:if test="/srd/experimental"&gt;
            &lt;xsl:call-template name="experimental"/&gt;
            &lt;xsl:for-each select="/srd/experimental/srdref"&gt;
              &lt;xsl:sort select="@dt" data-type="text"
                order="descending"/&gt;
              &lt;xsl:sort select="@dd" data-type="text"
                order="ascending"/&gt;
              &lt;xsl:call-template name="srdref"/&gt;
            &lt;/xsl:for-each&gt;
          &lt;/xsl:if&gt;
          &lt;xsl:if test="/srd/companion"&gt;
            &lt;xsl:call-template name="companion"/&gt;
            &lt;xsl:for-each select="/srd/companion/srdref"&gt;
              &lt;xsl:sort select="@dt" data-type="text"
                order="descending"/&gt;
              &lt;xsl:sort select="@dd" data-type="text"
                order="ascending"/&gt;
              &lt;xsl:call-template name="srdref"/&gt;
            &lt;/xsl:for-each&gt;
          &lt;/xsl:if&gt;
        &lt;/xsl:if&gt;
        &lt;xsl:if test="$sort-refs!='yes'"&gt;
          &lt;!-- unsorted references --&gt;
          &lt;xsl:call-template name="core"/&gt;
          &lt;xsl:for-each select="/srd/core/srdref"&gt;
            &lt;xsl:call-template name="srdref"/&gt;
          &lt;/xsl:for-each&gt;
          &lt;xsl:if test="/srd/extensions"&gt;
            &lt;xsl:call-template name="extensions"/&gt;
            &lt;xsl:for-each select="/srd/extensions/srdref"&gt;
              &lt;xsl:call-template name="srdref"/&gt;
            &lt;/xsl:for-each&gt;
          &lt;/xsl:if&gt;
          &lt;xsl:if test="/srd/guidance"&gt;
            &lt;xsl:call-template name="guidance"/&gt;
            &lt;xsl:for-each select="/srd/guidance/srdref"&gt;
              &lt;xsl:call-template name="srdref"/&gt;
            &lt;/xsl:for-each&gt;
          &lt;/xsl:if&gt;
          &lt;xsl:if test="/srd/replaces"&gt;
            &lt;xsl:call-template name="replaces"/&gt;
            &lt;xsl:for-each select="/srd/replaces/srdref"&gt;
              &lt;xsl:call-template name="srdref"/&gt;
            &lt;/xsl:for-each&gt;
          &lt;/xsl:if&gt;
          &lt;xsl:if test="/srd/experimental"&gt;
            &lt;xsl:call-template name="experimental"/&gt;
            &lt;xsl:for-each select="/srd/experimental/srdref"&gt;
              &lt;xsl:call-template name="srdref"/&gt;
            &lt;/xsl:for-each&gt;
          &lt;/xsl:if&gt;
          &lt;xsl:if test="/srd/companion"&gt;
            &lt;xsl:call-template name="companion"/&gt;
            &lt;xsl:for-each select="/srd/companion/srdref"&gt;
              &lt;xsl:call-template name="srdref"/&gt;
            &lt;/xsl:for-each&gt;
          &lt;/xsl:if&gt;
        &lt;/xsl:if&gt;
      &lt;/body&gt;
    &lt;/html&gt;
  &lt;/xsl:template&gt;
  &lt;xsl:template name="core"&gt;
    &lt;h2&gt;Core&lt;/h2&gt;
  &lt;/xsl:template&gt;
  &lt;xsl:template name="extensions"&gt;
    &lt;h2&gt;Extensions&lt;/h2&gt;
  &lt;/xsl:template&gt;
  &lt;xsl:template name="guidance"&gt;
    &lt;h2&gt;Guidance&lt;/h2&gt;
  &lt;/xsl:template&gt;
  &lt;xsl:template name="replaces"&gt;
    &lt;h2&gt;Replaces&lt;/h2&gt;
  &lt;/xsl:template&gt;
  &lt;xsl:template name="experimental"&gt;
    &lt;h2&gt;Experimental&lt;/h2&gt;
  &lt;/xsl:template&gt;
  &lt;xsl:template name="companion"&gt;
    &lt;h2&gt;Companion&lt;/h2&gt;
  &lt;/xsl:template&gt;
  &lt;xsl:template name="srdref"&gt;
    &lt;xsl:variable name="d-type" select="normalize-space(@dt)"/&gt;
    &lt;xsl:variable name="d-des" select="normalize-space(@dd)"/&gt;
    &lt;xsl:variable name="rfc-ref" select="concat($xml-refs-rfc,
      @dd, '.xml')"/&gt;
    &lt;xsl:variable name="i-d-ref" select="concat($xml-refs-i-d,
      @dd, '.xml')"/&gt;
    &lt;xsl:variable name="srd-ref" select="concat($xml-refs-srd,
      @dd, '.xml')"/&gt;
    &lt;xsl:choose&gt;
      &lt;xsl:when test="$d-type='RFC'"&gt;
        &lt;a class="filename" href="{concat($url-prefix-rfc,
          $d-des,'.txt')}"&gt;[&lt;xsl:value-of select="$d-type"
            /&gt;&lt;xsl:value-of select="$d-des"/&gt;]&lt;/a&gt;
        &lt;xsl:text&gt;&#160;&lt;/xsl:text&gt;
        &lt;a class="filename" href="{concat($url-prefix-errata,
          $d-des)}"&gt;errata&lt;/a&gt;
        &lt;xsl:text&gt;&#160;&lt;/xsl:text&gt;
        &lt;xsl:if test="document($rfc-ref)//front/title and
          document($rfc-ref)//format/@target"&gt;
          &lt;a class="filename"
            href="{document($rfc-ref)//format/@target}"&gt;
            &lt;xsl:value-of select="document($rfc-ref)//front/title"/&gt;
          &lt;/a&gt;
        &lt;/xsl:if&gt;
      &lt;/xsl:when&gt;
      &lt;xsl:when test="$d-type='SRD'"&gt;
        &lt;a class="filename" href="{concat($url-prefix-srd,
          $d-des,'.html')}"&gt;[&lt;xsl:value-of select="$d-type"
            /&gt;&lt;xsl:value-of select="$d-des"/&gt;]&lt;/a&gt;
        &lt;xsl:text&gt;&#160;&lt;/xsl:text&gt;
        &lt;xsl:if test="document($srd-ref)//front/title and
          document($srd-ref)//format/@target"&gt;
          &lt;a class="filename"
            href="{document($srd-ref)//format/@target}"&gt;
            &lt;xsl:value-of select="document($srd-ref)//front/title"/&gt;
          &lt;/a&gt;
        &lt;/xsl:if&gt;
      &lt;/xsl:when&gt;
      &lt;xsl:when test="$d-type='I-D' and $srd-wip!=''"&gt;
        &lt;xsl:value-of select="concat('[draft-',$d-des, ']')"/&gt;
        &lt;xsl:text&gt;&#160;&lt;/xsl:text&gt;
        &lt;xsl:if test="document($i-d-ref)//front/title and
          document($i-d-ref)//format/@target"&gt;
          &lt;a class="filename"
            href="{document($i-d-ref)//format/@target}"&gt;
            &lt;xsl:value-of select="document($i-d-ref)//front/title"/&gt;
          &lt;/a&gt;
        &lt;/xsl:if&gt;
      &lt;/xsl:when&gt;
      &lt;xsl:when test="$d-type='I-D' and $srd-wip='' and
        $srd-strict!='yes'"&gt;
        &lt;xsl:value-of select="concat('[draft-',$d-des, ']')"/&gt;
        &lt;xsl:text&gt;&#160;&lt;/xsl:text&gt;
        &lt;xsl:if test="document($i-d-ref)//front/title and
          document($i-d-ref)//format/@target"&gt;
          &lt;a class="filename"
            href="{document($i-d-ref)//format/@target}"&gt;
            &lt;xsl:value-of select="document($i-d-ref)//front/title"/&gt;
          &lt;/a&gt;
        &lt;/xsl:if&gt;
      &lt;/xsl:when&gt;
      &lt;xsl:otherwise&gt;
        &lt;p class="error"&gt;Invalid Document Type [&lt;xsl:value-of
            select="@dt"/&gt;]&lt;xsl:value-of select="@dd"/&gt;&lt;/p&gt;
      &lt;/xsl:otherwise&gt;
    &lt;/xsl:choose&gt;
    &lt;br/&gt;
  &lt;/xsl:template&gt;
&lt;/xsl:stylesheet&gt;
                    </artwork>
      </figure>
      <t>
        <vspace blankLines="100"/>
      </t>
    </section>
    <section anchor="srd.html" title="Example HTML output"
      toc="default">
      <figure title="">
        <artwork name="" type="" height="" width="" xml:space="preserve">
Example SRD Title SRD:[example.1] 2005-07-16
XML structure for example SRDs.
          
Core
[RFC9875] errata Overview Core Example for SRD testing
[RFC9876] errata Primary Core Example for SRD testing 

Extensions
[RFC9912] errata Extension Example for SRD testing 

Guidance
[RFC9915] errata The Guidance Example for SRD testing 

Replaces
[RFC9811] errata The replace Example for SRD testing 

Experimental
[RFC9837] errata The Experimental Example for SRD testing 

Companion
[SRDexample.1] The SRD Example for SRD testing       
          
                  </artwork>
      </figure>
    </section>
  </back>
</rfc>
