TOC 
newtrkD. Otis
Internet-DraftTrend Micro
Expires: April 14, 2006J. Leslie
 JLC.net
 October 11, 2005

XML structure for Set of RFC Descriptors

draft-otis-newtrk-rfc-set-02

Status of this Memo

By submitting this Internet-Draft, each author represents that any applicable patent or other IPR claims of which he or she is aware have been or will be disclosed, and any of which he or she becomes aware will be disclosed, in accordance with Section 6 of BCP 79.

Internet-Drafts are working documents of the Internet Engineering Task Force (IETF), its areas, and its working groups. Note that other groups may also distribute working documents as Internet-Drafts.

Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as “work in progress.”

The list of current Internet-Drafts can be accessed at http://www.ietf.org/ietf/1id-abstracts.txt.

The list of Internet-Draft Shadow Directories can be accessed at http://www.ietf.org/shadow.html.

This Internet-Draft will expire on April 14, 2006.

Copyright Notice

Copyright © The Internet Society (2005).

Abstract

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

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.



Table of Contents

1.  Introduction
2.  SRD Identification and References
3.  SRD Development
4.  XML Conversion Considerations
5.  The srd element
6.  The srdref element
7.  The title element
8.  The description element
9.  The srdDate element
10.  The core element
11.  The extensions element
12.  The guidance element
13.  The replaces element
14.  The experimental element
15.  The companion element
16.  IANA Considerations
17.  Security Considerations
18.  References
    18.1  Normative References
    18.2  Informative References
§  Authors' Addresses
A.  The SRD DTD
B.  Example SRD XSLT
C.  Example HTML output
§  Intellectual Property and Copyright Statements




 TOC 

1. Introduction

It is becoming increasingly difficult to determine which RFCs are necessary as references when implementing or using protocols. The STD series defined in [RFC1311] (Postel, J., “Introduction to the STD Notes,” March 1992.) is a guide, but often fails to list all the necessary RFCs. The Maturity Levels defined in [RFC2026] (Bradner, S., “The Internet Standards Process -- Revision 3,” October 1996.) 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.

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.



 TOC 

2. SRD Identification and References

This document proposes a new document series called Set of RFC Documents ("SRD"). These documents contain Extensible Markup Language [W3C.REC-xml-20040204] (Yergeau, F., Paoli, J., Sperberg-McQueen, C., Bray, T., and E. Maler, “Extensible Markup Language (XML) 1.0 (Third Edition),” February 2004.) 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.

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.



 TOC 

3. SRD Development

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:

    {'X'<iteration-number>'-'<group-identifier>'-'}

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:

    X0-newtrk-foobar.1

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.

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.

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.



 TOC 

4. XML Conversion Considerations

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.

Writing an SRD document from scratch would follow a process similar to that described in [RFC2629] (Rose, M., “Writing I-Ds and RFCs using XML,” June 1999.) for use of the XML-to-RFC tool. The SRD XML declaration begins with a reference to the DTD, XSLT (Clark, J., “XSL Transformations (XSLT) Version 1.0,” November 1999.)[W3C.REC-xslt-19991116], processing options, and the "srd" element:

    <?xml version='1.0' encoding="UTF-8"?>
    <!DOCTYPE srd  SYSTEM "rfcxxxx.dtd" >
    <?xml-stylesheet type='text/xsl'href='rfcxxxx.xslt' ?>
    <?srd sortrefs="yes" ?>
    <?srd strict="yes" ?>
    <srd ... >
      ...
    </srd>

The lines preceding the <srd ...> should be the same for all SRDs and nothing should follow the ending "</srd>" tag. Make sure that all elements are properly matched and nested.



 TOC 

5. The srd element

The "set" attribute included within the "<srd ...>" 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.

Example of srd attributes declaring both base document and the group making changes:

    <srd set="foobar.2" wip="0-newtrk">

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.

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.

Example of srd content:

    <title>Example SRD Title</title>
    <description>XML structure for example SRDs.</description>
    <srdDate>2005-07-16</srdDate>
    <core>
        <srdref dt="RFC" dd="9876"/>
        <srdref dt="RFC" dd="9875"/>
    </core>
    <extensions>
        <srdref dt="RFC" dd="9912"/>
    </extensions>
    <guidance>
        <srdref dt="RFC" dd="9915"/>
    </guidance>
    <replaces>
        <srdref dt="RFC" dd="9811"/>
    </replaces>
    <experimental>
        <srdref dt="RFC" dd="9837"/>
    </experimental>
    <companion>
        <srdref dt="SRD" dd="example.1"/>
    </companion>


 TOC 

6. The srdref element

The srdref element is empty, but includes reference attributes that take the form:

    <srdref dt="Document Type" dd="Document Designator"/>

The Document Types are RFC, I-D, and SRD for RFCs, Internet-drafts and SRDs respectively.



 TOC 

7. The title element

    <title>
        Title describes the entire RFC set.
    </title>

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.



 TOC 

8. The description element

     <description>
         Description more fully describes the entire RFC set.
     </description>

The description should be no more than a few sentences describing the SRD. This element MUST be present.



 TOC 

9. The srdDate element

    <srdDate>
        YYYY-MM-DD
    </srdDate>

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 Date and Time Formats (Wolf, M. and C. Wicksteed, “Date and Time Formats,” August 1998.)[W3C.NOTE-datetime-19980827]. The 'YYYY' represents the year. The 'MM' represents the numeric month. The 'DD' represents the numeric day. This element MUST be present.



 TOC 

10. The core element

    <core>
        <srdref dt="RFC" dd="9876"/>
        <srdref dt="RFC" dd="9875"/>
    </core>

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:

    <srdref dt="I-D" dd="housley-binarytime"/>


 TOC 

11. The extensions element

    <extensions>
        <srdref dt="RFC" dd="9912"/>
    </extensions>

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.



 TOC 

12. The guidance element

    <guidance>
        <srdref dt="RFC" dd="9815"/>
    </guidance>

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.



 TOC 

13. The replaces element

   <replaces>
       <srdref dt="RFC" dd="9811"/>
   </replaces>

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.



 TOC 

14. The experimental element

    <experimental>
        <srdref dt="RFC" dd="9811"/>
    </experimental>

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.



 TOC 

15. The companion element

    <companion>
        <srdref dt="SRD" dd="srd-example.1"/>
    </companion>

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.



 TOC 

16. IANA Considerations

There are no IANA considerations in this draft.



 TOC 

17. Security Considerations

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.



 TOC 

18. References



 TOC 

18.1 Normative References

[RFC2629] Rose, M., “Writing I-Ds and RFCs using XML,” RFC 2629, June 1999 (TXT, HTML, XML).
[W3C.NOTE-datetime-19980827] Wolf, M. and C. Wicksteed, “Date and Time Formats,” W3C NOTE NOTE-datetime-19980827, August 1998.
[W3C.REC-xml-20040204] Yergeau, F., Paoli, J., Sperberg-McQueen, C., Bray, T., and E. Maler, “Extensible Markup Language (XML) 1.0 (Third Edition),” W3C REC REC-xml-20040204, February 2004.
[W3C.REC-xslt-19991116] Clark, J., “XSL Transformations (XSLT) Version 1.0,” W3C REC REC-xslt-19991116, November 1999.


 TOC 

18.2 Informative References

[RFC1311] Postel, J., “Introduction to the STD Notes,” RFC 1311, March 1992.
[RFC2026] Bradner, S., “The Internet Standards Process -- Revision 3,” BCP 9, RFC 2026, October 1996.


 TOC 

Authors' Addresses

  Douglas Otis
  Trend Micro
  1737 North First Street, Suite 680
  San Jose, CA 95112
  USA
Phone:  +1.408.453.6277
Email:  doug_otis@trendmicro.com
  
  John Leslie
  JLC.net
  10 Souhegan Street
  Milford, NH 03055
  USA
Phone:  +1.603.673.6132
Email:  john@jlc.net


 TOC 

Appendix A. The SRD DTD

<!-- DTD for SRD document series, draft-otis-newtrk-rfc-set-02  -->

<!-- Copyright © The Internet Society (2005). This document is
     subject to the rights, licenses and restrictions contained
     in BCP 78.
  -->

<!--
    DTD data types:

    entity        description
    ======        ===============================================
    DATE          numeric hyphen-separated YYYY-MM-DD
    ATEXT         attribute line of text (no line-terminators)
    TEXT          displayed character data
  -->

<!ENTITY % DATE       "#PCDATA">
<!ENTITY % ATEXT      "CDATA">
<!ENTITY % TEXT       "#PCDATA">

<!--
  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 "<iteration-number>-<group-identifier>" where the 'X'
  wip prefix and the '-' wip suffix is added by the scripts.
  -->

<!ELEMENT srd        (title,description,srdDate,core,extensions?,
                      guidance?,replaces?,experimental?,companion?)>
<!ATTLIST srd
          set          %ATEXT;            #REQUIRED
          wip          %ATEXT;            ""
>

<!ELEMENT title        (%TEXT;)>
<!ELEMENT description  (%TEXT;)>
<!ELEMENT srdDate      (%DATE;)>
<!ELEMENT srdref       EMPTY>
<!ATTLIST srdref
          dt            %ATEXT;            #REQUIRED
          dd            %ATEXT;            #REQUIRED
>

<!ELEMENT core         (srdref)+>
<!ELEMENT extensions   (srdref)+>
<!ELEMENT guidance     (srdref)+>
<!ELEMENT replaces     (srdref)+>
<!ELEMENT experimental (srdref)+>
<!ELEMENT companion    (srdref)+>



 TOC 

Appendix B. Example SRD XSLT

<!-- draft-otis-newtrk-rfc-set-02
   srd XSLT transformation to HTML
  -->
<!-- Copyright © The Internet Society (2005).
   This document is subject to the rights, licenses and
   restrictions contained in BCP 78.
  -->
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  version="1.0">
  <xsl:output method="html"/>
  <!--style similar to rfc2629.xslt by Julian F. Reschke  -->
  <xsl:template name="srd-style">
    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;}
  </xsl:template>
  <!-- url prefix for references -->
  <xsl:param name="url-prefix-rfc"
    select="'http://www.ietf.org/rfc/rfc'"/>
  <xsl:param name="url-prefix-i-d"
    select="'http://www.ietf.org/internet-drafts/draft-'"/>
  <xsl:param name="url-prefix-srd"
    select="'http://www.ietf.org/srd/srd-'"/>
  <xsl:param name="url-prefix-errata"
    select="'http://www.rfc-editor.org/cgi-bin/errata.pl#rfc'"/>
  <!-- path for xml references -->
  <xsl:param name="xml-refs-rfc"
    select="'references/rfc/reference.RFC.'"/>
  <xsl:param name="xml-refs-i-d"
    select="'references/i-d/reference.I-D.'"/>
  <xsl:param name="xml-refs-srd"
    select="'references/srd/reference.SRD.'"/>
  <!-- page title -->
  <xsl:param name="srd-title" select="normalize-space(/srd/title)"/>
  <!-- set name elements -->
  <xsl:param name="srd-set" select="normalize-space(/srd/@set)"/>
  <xsl:param name="srd-wip" select="normalize-space(/srd/@wip)"/>
  <!-- set wip name -->
  <xsl:param name="srd-wip-name" select="concat('X', $srd-wip,
    '-', $srd-set)"/>
  <xsl:param name="srd-date" select="normalize-space(/srd/srdDate)"/>
  <!-- PI delimiters -->
  <xsl:variable name="pi-delim">"'</xsl:variable>
  <!-- p i for sorting <?srd sortrefs ="yes" ?> -->
  <xsl:param name="sort-refs" select="substring-after(
    translate(/processing-instruction('srd')
    [contains(.,'sortrefs=')],
    concat($pi-delim,' '), ''), 'sortrefs=')"/>
  <!-- p i for strict <?srd strict ="yes" ?> -->
  <xsl:param name="srd-strict" select="substring-after(
    translate(/processing-instruction('srd')[contains(.,'strict=')],
    concat($pi-delim,' '), ''), 'strict=')"/>
  <!-- Template for root element -->
  <xsl:template match="srd">
    <html lang="en">
      <head>
        <title>
          <xsl:value-of select="$srd-title"/>
        </title>
        <style type="text/css" title="srd style">
          <xsl:call-template name="srd-style"/>
        </style>
      </head>
      <body>
        <h1 class="title">
          <xsl:if test="$srd-wip=''">
            <xsl:value-of select="$srd-title"
              /><br/>SRD:[<xsl:value-of
              select="concat($srd-set,'] ',$srd-date)"/>
          </xsl:if>
          <xsl:if test="$srd-wip!=''">
            <xsl:value-of select="$srd-title"
              /><br/>SRD:[<xsl:value-of
              select="concat($srd-wip-name,'] ',$srd-date)"
            />
          </xsl:if>
        </h1>
        <h2>
          <xsl:value-of select="normalize-space(/srd/description)"/>
        </h2>
        <xsl:if test="$sort-refs='yes'">
          <!-- sorted references -->
          <xsl:call-template name="core"/>
          <xsl:for-each select="/srd/core/srdref">
            <xsl:sort select="@dt" data-type="text"
              order="descending"/>
            <xsl:sort select="@dd" data-type="text"
              order="ascending"/>
            <xsl:call-template name="srdref"/>
          </xsl:for-each>
          <xsl:if test="/srd/extensions">
            <xsl:call-template name="extensions"/>
            <xsl:for-each select="/srd/extensions/srdref">
              <xsl:sort select="@dt" data-type="text"
                order="descending"/>
              <xsl:sort select="@dd" data-type="text"
                order="ascending"/>
              <xsl:call-template name="srdref"/>
            </xsl:for-each>
          </xsl:if>
          <xsl:if test="/srd/guidance">
            <xsl:call-template name="guidance"/>
            <xsl:for-each select="/srd/guidance/srdref">
              <xsl:sort select="@dt" data-type="text"
                order="descending"/>
              <xsl:sort select="@dd" data-type="text"
                order="ascending"/>
              <xsl:call-template name="srdref"/>
            </xsl:for-each>
          </xsl:if>
          <xsl:if test="/srd/replaces">
            <xsl:call-template name="replaces"/>
            <xsl:for-each select="/srd/replaces/srdref">
              <xsl:sort select="@dt" data-type="text"
                order="descending"/>
              <xsl:sort select="@dd" data-type="text"
                order="ascending"/>
              <xsl:call-template name="srdref"/>
            </xsl:for-each>
          </xsl:if>
          <xsl:if test="/srd/experimental">
            <xsl:call-template name="experimental"/>
            <xsl:for-each select="/srd/experimental/srdref">
              <xsl:sort select="@dt" data-type="text"
                order="descending"/>
              <xsl:sort select="@dd" data-type="text"
                order="ascending"/>
              <xsl:call-template name="srdref"/>
            </xsl:for-each>
          </xsl:if>
          <xsl:if test="/srd/companion">
            <xsl:call-template name="companion"/>
            <xsl:for-each select="/srd/companion/srdref">
              <xsl:sort select="@dt" data-type="text"
                order="descending"/>
              <xsl:sort select="@dd" data-type="text"
                order="ascending"/>
              <xsl:call-template name="srdref"/>
            </xsl:for-each>
          </xsl:if>
        </xsl:if>
        <xsl:if test="$sort-refs!='yes'">
          <!-- unsorted references -->
          <xsl:call-template name="core"/>
          <xsl:for-each select="/srd/core/srdref">
            <xsl:call-template name="srdref"/>
          </xsl:for-each>
          <xsl:if test="/srd/extensions">
            <xsl:call-template name="extensions"/>
            <xsl:for-each select="/srd/extensions/srdref">
              <xsl:call-template name="srdref"/>
            </xsl:for-each>
          </xsl:if>
          <xsl:if test="/srd/guidance">
            <xsl:call-template name="guidance"/>
            <xsl:for-each select="/srd/guidance/srdref">
              <xsl:call-template name="srdref"/>
            </xsl:for-each>
          </xsl:if>
          <xsl:if test="/srd/replaces">
            <xsl:call-template name="replaces"/>
            <xsl:for-each select="/srd/replaces/srdref">
              <xsl:call-template name="srdref"/>
            </xsl:for-each>
          </xsl:if>
          <xsl:if test="/srd/experimental">
            <xsl:call-template name="experimental"/>
            <xsl:for-each select="/srd/experimental/srdref">
              <xsl:call-template name="srdref"/>
            </xsl:for-each>
          </xsl:if>
          <xsl:if test="/srd/companion">
            <xsl:call-template name="companion"/>
            <xsl:for-each select="/srd/companion/srdref">
              <xsl:call-template name="srdref"/>
            </xsl:for-each>
          </xsl:if>
        </xsl:if>
      </body>
    </html>
  </xsl:template>
  <xsl:template name="core">
    <h2>Core</h2>
  </xsl:template>
  <xsl:template name="extensions">
    <h2>Extensions</h2>
  </xsl:template>
  <xsl:template name="guidance">
    <h2>Guidance</h2>
  </xsl:template>
  <xsl:template name="replaces">
    <h2>Replaces</h2>
  </xsl:template>
  <xsl:template name="experimental">
    <h2>Experimental</h2>
  </xsl:template>
  <xsl:template name="companion">
    <h2>Companion</h2>
  </xsl:template>
  <xsl:template name="srdref">
    <xsl:variable name="d-type" select="normalize-space(@dt)"/>
    <xsl:variable name="d-des" select="normalize-space(@dd)"/>
    <xsl:variable name="rfc-ref" select="concat($xml-refs-rfc,
      @dd, '.xml')"/>
    <xsl:variable name="i-d-ref" select="concat($xml-refs-i-d,
      @dd, '.xml')"/>
    <xsl:variable name="srd-ref" select="concat($xml-refs-srd,
      @dd, '.xml')"/>
    <xsl:choose>
      <xsl:when test="$d-type='RFC'">
        <a class="filename" href="{concat($url-prefix-rfc,
          $d-des,'.txt')}">[<xsl:value-of select="$d-type"
            /><xsl:value-of select="$d-des"/>]</a>
        <xsl:text> </xsl:text>
        <a class="filename" href="{concat($url-prefix-errata,
          $d-des)}">errata</a>
        <xsl:text> </xsl:text>
        <xsl:if test="document($rfc-ref)//front/title and
          document($rfc-ref)//format/@target">
          <a class="filename"
            href="{document($rfc-ref)//format/@target}">
            <xsl:value-of select="document($rfc-ref)//front/title"/>
          </a>
        </xsl:if>
      </xsl:when>
      <xsl:when test="$d-type='SRD'">
        <a class="filename" href="{concat($url-prefix-srd,
          $d-des,'.html')}">[<xsl:value-of select="$d-type"
            /><xsl:value-of select="$d-des"/>]</a>
        <xsl:text> </xsl:text>
        <xsl:if test="document($srd-ref)//front/title and
          document($srd-ref)//format/@target">
          <a class="filename"
            href="{document($srd-ref)//format/@target}">
            <xsl:value-of select="document($srd-ref)//front/title"/>
          </a>
        </xsl:if>
      </xsl:when>
      <xsl:when test="$d-type='I-D' and $srd-wip!=''">
        <xsl:value-of select="concat('[draft-',$d-des, ']')"/>
        <xsl:text> </xsl:text>
        <xsl:if test="document($i-d-ref)//front/title and
          document($i-d-ref)//format/@target">
          <a class="filename"
            href="{document($i-d-ref)//format/@target}">
            <xsl:value-of select="document($i-d-ref)//front/title"/>
          </a>
        </xsl:if>
      </xsl:when>
      <xsl:when test="$d-type='I-D' and $srd-wip='' and
        $srd-strict!='yes'">
        <xsl:value-of select="concat('[draft-',$d-des, ']')"/>
        <xsl:text> </xsl:text>
        <xsl:if test="document($i-d-ref)//front/title and
          document($i-d-ref)//format/@target">
          <a class="filename"
            href="{document($i-d-ref)//format/@target}">
            <xsl:value-of select="document($i-d-ref)//front/title"/>
          </a>
        </xsl:if>
      </xsl:when>
      <xsl:otherwise>
        <p class="error">Invalid Document Type [<xsl:value-of
            select="@dt"/>]<xsl:value-of select="@dd"/></p>
      </xsl:otherwise>
    </xsl:choose>
    <br/>
  </xsl:template>
</xsl:stylesheet>



 TOC 

Appendix C. Example HTML output

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



 TOC 

Intellectual Property Statement

Disclaimer of Validity

Copyright Statement

Acknowledgment